diff --git a/backend/app.pid b/backend/app.pid index 126df4065..77880523f 100644 --- a/backend/app.pid +++ b/backend/app.pid @@ -1 +1 @@ -65868 +17854 diff --git a/backend/app/api/bx/reimburse.py b/backend/app/api/bx/reimburse.py index d22de25e2..097175f68 100644 --- a/backend/app/api/bx/reimburse.py +++ b/backend/app/api/bx/reimburse.py @@ -52,11 +52,14 @@ def _build_details_data(db: Session, tenant_no: str, body_details) -> List[dict] @router.get("/generate-title", response_model=ApiResponse[str]) def get_generated_title( + reimburseDate: Optional[str] = None, + excludeApplyId: Optional[str] = None, db: Session = Depends(get_db), user: BxUserContext = Depends(get_bx_current_user), ): tenant_no = _tenant(db, user) - title = generate_title(db, user.name, tenant_no) + exclude_id = str(excludeApplyId).strip() if excludeApplyId else None + title = generate_title(db, user.name, tenant_no, reimburseDate, exclude_id) return ApiResponse(data=title) @@ -266,6 +269,7 @@ def create_reimburse( "apply_code": generate_apply_code(db, "BX", tenant_no), "status": "draft", "remark": body.remark, + "reimburse_date": body.reimburse_date, } if body.title: data["title"] = body.title @@ -301,6 +305,10 @@ def update_reimburse( main_data = {} if body.remark is not None: main_data["remark"] = body.remark + if body.reimburse_date is not None: + main_data["reimburse_date"] = body.reimburse_date + if body.title is not None: + main_data["title"] = body.title reimburse = ReimburseService.update_with_details( db, reimburse_id, main_data, details_data, user=user ) diff --git a/backend/app/api/pl/__init__.py b/backend/app/api/pl/__init__.py new file mode 100644 index 000000000..bc3158f58 --- /dev/null +++ b/backend/app/api/pl/__init__.py @@ -0,0 +1,22 @@ +"""运输计划管理 - API 路由聚合""" +from fastapi import APIRouter + +from app.api.pl import plan, transport, freight, inventory +from app.api.pl import base_data + +pl_router = APIRouter(prefix="/transport", tags=["运输计划管理"]) + +# 基础数据(承运商、车辆、司机) +pl_router.include_router(base_data.router) + +# 计划管理 +pl_router.include_router(plan.router) + +# 运输管理 +pl_router.include_router(transport.router) + +# 运费结算 +pl_router.include_router(freight.router) + +# 盘存统计 +pl_router.include_router(inventory.router) diff --git a/backend/app/api/pl/base_data.py b/backend/app/api/pl/base_data.py new file mode 100644 index 000000000..25ddd210e --- /dev/null +++ b/backend/app/api/pl/base_data.py @@ -0,0 +1,768 @@ +"""运输计划管理 - 基础数据 API(承运商、车辆、人员)""" +from typing import Optional + +from fastapi import APIRouter, Depends, HTTPException, Query, status +from sqlalchemy import case, func, or_ +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 ( + PlCarrier, + PlPersonnel, + PlVehicle, + PlVehicleDriver, + PlVehiclePersonnel, +) +from app.schemas.pl import ( + CarrierCreate, + CarrierRead, + CarrierUpdate, + DriverCreate, + DriverRead, + DriverUpdate, + PersonnelCreate, + PersonnelDetailRead, + PersonnelRead, + PersonnelUpdate, + VehicleCreate, + VehicleDetailRead, + VehicleDriverCreate, + VehicleRead, + VehicleUpdate, +) +from app.services.pl_cert_service import ( + certs_to_read, + list_owner_certs, + nearest_expire_date, + save_owner_certs, +) +from app.services.pl_personnel_service import ( + load_vehicle_personnel_rows, + load_vehicle_personnel_summaries, + save_vehicle_personnel, +) + +router = APIRouter(prefix="", tags=["运输计划-基础数据"]) + + +# ============================================================================= +# 承运商 API +# ============================================================================= + + +@router.get("/carrier", response_model=list[CarrierRead]) +def list_carriers( + q: Optional[str] = Query(default=None, description="模糊搜索"), + status: Optional[str] = Query(default=None, description="状态"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[CarrierRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlCarrier).filter( + PlCarrier.tenant_no == tenant_no, + PlCarrier.del_flag == 0, + ) + + if status: + query = query.filter(PlCarrier.status == status) + + if q: + query = query.filter( + or_( + func.lower(PlCarrier.carrier_name).contains(q.lower()), + func.lower(PlCarrier.contact_name).contains(q.lower()), + ) + ) + + query = query.order_by( + case((PlCarrier.order_num.is_(None), 1), else_=0).asc(), + PlCarrier.create_time.desc(), + ) + return query.all() + + +@router.post("/carrier", response_model=CarrierRead, status_code=status.HTTP_201_CREATED) +def create_carrier( + payload: CarrierCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> CarrierRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + carrier = PlCarrier( + id=generate_uuid(), + tenant_no=tenant_no, + carrier_name=payload.carrier_name, + contact_name=payload.contact_name, + contact_phone=payload.contact_phone, + status=payload.status, + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(carrier) + db.commit() + db.refresh(carrier) + return carrier + + +@router.get("/carrier/{id}", response_model=CarrierRead) +def get_carrier( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> CarrierRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + carrier = _get_carrier(db, tenant_no, id) + return carrier + + +@router.put("/carrier/{id}", response_model=CarrierRead) +def update_carrier( + id: str, + payload: CarrierUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> CarrierRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + carrier = _get_carrier(db, tenant_no, id) + + for key, value in payload.model_dump(exclude_unset=True).items(): + setattr(carrier, key, value) + + carrier.update_by = user.id + db.commit() + db.refresh(carrier) + return carrier + + +@router.delete("/carrier/{id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_carrier( + 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()) + carrier = _get_carrier(db, tenant_no, id) + carrier.del_flag = 1 + carrier.update_by = user.id + db.commit() + + +def _get_carrier(db: Session, tenant_no: str, carrier_id: str) -> PlCarrier: + carrier = ( + db.query(PlCarrier) + .filter( + PlCarrier.id == carrier_id, + PlCarrier.tenant_no == tenant_no, + PlCarrier.del_flag == 0, + ) + .first() + ) + if not carrier: + raise HTTPException(status_code=404, detail="承运商不存在") + return carrier + + +# ============================================================================= +# 车辆 API +# ============================================================================= + + +def _vehicle_to_read( + vehicle: PlVehicle, + summary: Optional[str] = None, + default_driver_name: Optional[str] = None, +) -> VehicleRead: + data = VehicleRead.model_validate(vehicle) + if summary is not None: + data.personnel_summary = summary + if default_driver_name is not None: + data.default_driver_name = default_driver_name + return data + + +def _vehicle_to_detail( + db: Session, tenant_no: str, vehicle: PlVehicle +) -> VehicleDetailRead: + summaries = load_vehicle_personnel_summaries(db, tenant_no, [vehicle.id]) + summary, default_name = summaries.get(vehicle.id, ("", None)) + personnel_list = load_vehicle_personnel_rows(db, tenant_no, vehicle.id) + cert_list = certs_to_read( + list_owner_certs(db, tenant_no, "vehicle", vehicle.id) + ) + base = _vehicle_to_read(vehicle, summary, default_name) + return VehicleDetailRead( + **base.model_dump(by_alias=False), + personnel_list=personnel_list, + cert_list=cert_list, + ) + + +@router.get("/vehicle", response_model=list[VehicleRead]) +def list_vehicles( + q: Optional[str] = Query(default=None, description="模糊搜索车牌号"), + vehicle_type: Optional[str] = Query(default=None, alias="vehicleType", description="车辆类型"), + carrier_id: Optional[str] = Query(default=None, alias="carrierId", description="承运商ID"), + vehicle_status: Optional[str] = Query(default=None, alias="vehicleStatus", description="车辆状态"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[VehicleRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlVehicle).filter( + PlVehicle.tenant_no == tenant_no, + PlVehicle.del_flag == 0, + ) + + if vehicle_type: + query = query.filter(PlVehicle.vehicle_type == vehicle_type) + + if carrier_id: + query = query.filter(PlVehicle.carrier_id == carrier_id) + + if vehicle_status: + query = query.filter(PlVehicle.vehicle_status == vehicle_status) + + if q: + query = query.filter(PlVehicle.license_plate.contains(q)) + + query = query.order_by( + case((PlVehicle.order_num.is_(None), 1), else_=0).asc(), + PlVehicle.create_time.desc(), + ) + vehicles = query.all() + summaries = load_vehicle_personnel_summaries( + db, tenant_no, [v.id for v in vehicles] + ) + return [ + _vehicle_to_read(v, *summaries.get(v.id, ("", None))) + for v in vehicles + ] + + +@router.post("/vehicle", response_model=VehicleDetailRead, status_code=status.HTTP_201_CREATED) +def create_vehicle( + payload: VehicleCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> VehicleDetailRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + existing = ( + db.query(PlVehicle) + .filter( + PlVehicle.license_plate == payload.license_plate, + PlVehicle.del_flag == 0, + ) + .first() + ) + if existing: + raise HTTPException(status_code=400, detail="车牌号已存在") + + vehicle = PlVehicle( + id=generate_uuid(), + tenant_no=tenant_no, + vehicle_type=payload.vehicle_type, + carrier_id=payload.carrier_id, + carrier_name=payload.carrier_name, + license_plate=payload.license_plate, + load_capacity=payload.load_capacity, + vehicle_status=payload.vehicle_status, + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(vehicle) + db.flush() + + try: + save_vehicle_personnel( + db, + vehicle.id, + payload.personnel_list, + tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + save_owner_certs( + db, + "vehicle", + vehicle.id, + payload.cert_list, + tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + db.commit() + except HTTPException: + db.rollback() + raise + except Exception: + db.rollback() + raise + + db.refresh(vehicle) + return _vehicle_to_detail(db, tenant_no, vehicle) + + +@router.get("/vehicle/{id}", response_model=VehicleDetailRead) +def get_vehicle( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> VehicleDetailRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + vehicle = _get_vehicle(db, tenant_no, id) + return _vehicle_to_detail(db, tenant_no, vehicle) + + +@router.put("/vehicle/{id}", response_model=VehicleDetailRead) +def update_vehicle( + id: str, + payload: VehicleUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> VehicleDetailRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + vehicle = _get_vehicle(db, tenant_no, id) + + personnel_list = payload.personnel_list + cert_list = payload.cert_list + data = payload.model_dump( + exclude_unset=True, exclude={"personnel_list", "cert_list"} + ) + + for key, value in data.items(): + setattr(vehicle, key, value) + + vehicle.update_by = user.id + + try: + if personnel_list is not None: + save_vehicle_personnel( + db, + vehicle.id, + personnel_list, + tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + if cert_list is not None: + save_owner_certs( + db, + "vehicle", + vehicle.id, + cert_list, + tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + db.commit() + except HTTPException: + db.rollback() + raise + except Exception: + db.rollback() + raise + + db.refresh(vehicle) + return _vehicle_to_detail(db, tenant_no, vehicle) + + +@router.delete("/vehicle/{id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_vehicle( + 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()) + vehicle = _get_vehicle(db, tenant_no, id) + vehicle.del_flag = 1 + vehicle.update_by = user.id + db.commit() + + +def _get_vehicle(db: Session, tenant_no: str, vehicle_id: str) -> PlVehicle: + vehicle = ( + db.query(PlVehicle) + .filter( + PlVehicle.id == vehicle_id, + PlVehicle.tenant_no == tenant_no, + PlVehicle.del_flag == 0, + ) + .first() + ) + if not vehicle: + raise HTTPException(status_code=404, detail="车辆不存在") + return vehicle + + +# ============================================================================= +# 人员 API +# ============================================================================= + + +def _personnel_to_read( + db: Session, tenant_no: str, personnel: PlPersonnel +) -> PersonnelRead: + nearest = nearest_expire_date(db, tenant_no, "personnel", personnel.id) + data = PersonnelRead.model_validate(personnel) + data.nearest_expire_date = nearest + return data + + +def _personnel_to_detail( + db: Session, tenant_no: str, personnel: PlPersonnel +) -> PersonnelDetailRead: + base = _personnel_to_read(db, tenant_no, personnel) + cert_list = certs_to_read( + list_owner_certs(db, tenant_no, "personnel", personnel.id) + ) + return PersonnelDetailRead( + **base.model_dump(by_alias=False), + cert_list=cert_list, + ) + + +@router.get("/personnel", response_model=list[PersonnelRead]) +def list_personnel( + q: Optional[str] = Query(default=None, description="模糊搜索姓名/手机号"), + status: Optional[str] = Query(default=None, description="状态"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[PersonnelRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlPersonnel).filter( + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + + if status: + query = query.filter(PlPersonnel.status == status) + + if q: + query = query.filter( + or_( + func.lower(PlPersonnel.personnel_name).contains(q.lower()), + PlPersonnel.phone_no.contains(q), + ) + ) + + query = query.order_by( + case((PlPersonnel.order_num.is_(None), 1), else_=0).asc(), + PlPersonnel.create_time.desc(), + ) + rows = query.all() + return [_personnel_to_read(db, tenant_no, p) for p in rows] + + +@router.post("/personnel", response_model=PersonnelDetailRead, status_code=status.HTTP_201_CREATED) +def create_personnel( + payload: PersonnelCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PersonnelDetailRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + personnel = PlPersonnel( + id=generate_uuid(), + tenant_no=tenant_no, + personnel_name=payload.personnel_name, + phone_no=payload.phone_no, + age=payload.age, + id_card_no=payload.id_card_no, + status=payload.status, + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(personnel) + db.flush() + + try: + save_owner_certs( + db, + "personnel", + personnel.id, + payload.cert_list, + tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + db.commit() + except Exception: + db.rollback() + raise + + db.refresh(personnel) + return _personnel_to_detail(db, tenant_no, personnel) + + +@router.get("/personnel/{id}", response_model=PersonnelDetailRead) +def get_personnel( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PersonnelDetailRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + personnel = _get_personnel(db, tenant_no, id) + return _personnel_to_detail(db, tenant_no, personnel) + + +@router.put("/personnel/{id}", response_model=PersonnelDetailRead) +def update_personnel( + id: str, + payload: PersonnelUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PersonnelDetailRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + personnel = _get_personnel(db, tenant_no, id) + + cert_list = payload.cert_list + data = payload.model_dump(exclude_unset=True, exclude={"cert_list"}) + + for key, value in data.items(): + setattr(personnel, key, value) + + personnel.update_by = user.id + + try: + if cert_list is not None: + save_owner_certs( + db, + "personnel", + personnel.id, + cert_list, + tenant_no, + user_id=user.id, + dept_id=user.dept_id, + ) + db.commit() + except Exception: + db.rollback() + raise + + db.refresh(personnel) + return _personnel_to_detail(db, tenant_no, personnel) + + +@router.delete("/personnel/{id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_personnel( + 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()) + personnel = _get_personnel(db, tenant_no, id) + personnel.del_flag = 1 + personnel.update_by = user.id + db.commit() + + +def _get_personnel(db: Session, tenant_no: str, personnel_id: str) -> PlPersonnel: + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.id == personnel_id, + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + .first() + ) + if not personnel: + raise HTTPException(status_code=404, detail="人员不存在") + return personnel + + +# ============================================================================= +# 司机 API(兼容别名,内部使用 pl_personnel) +# ============================================================================= + + +def _personnel_to_driver_read(personnel: PlPersonnel) -> DriverRead: + return DriverRead( + id=personnel.id, + driver_name=personnel.personnel_name, + phone_no=personnel.phone_no, + id_card_no=personnel.id_card_no, + tenant_no=personnel.tenant_no, + order_num=personnel.order_num, + remark=personnel.remark, + create_by=personnel.create_by, + create_dept_id=personnel.create_dept_id, + create_time=personnel.create_time, + update_by=personnel.update_by, + update_time=personnel.update_time, + del_flag=personnel.del_flag, + ) + + +@router.get("/driver", response_model=list[DriverRead]) +def list_drivers( + q: Optional[str] = Query(default=None, description="模糊搜索姓名/手机号"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[DriverRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlPersonnel).filter( + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + + if q: + query = query.filter( + or_( + func.lower(PlPersonnel.personnel_name).contains(q.lower()), + PlPersonnel.phone_no.contains(q), + ) + ) + + query = query.order_by( + case((PlPersonnel.order_num.is_(None), 1), else_=0).asc(), + PlPersonnel.create_time.desc(), + ) + return [_personnel_to_driver_read(p) for p in query.all()] + + +@router.post("/driver", response_model=DriverRead, status_code=status.HTTP_201_CREATED) +def create_driver( + payload: DriverCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> DriverRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + personnel = PlPersonnel( + id=generate_uuid(), + tenant_no=tenant_no, + personnel_name=payload.driver_name, + phone_no=payload.phone_no, + id_card_no=payload.id_card_no, + status="1", + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(personnel) + db.commit() + db.refresh(personnel) + return _personnel_to_driver_read(personnel) + + +@router.get("/driver/{id}", response_model=DriverRead) +def get_driver( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> DriverRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + personnel = _get_personnel(db, tenant_no, id) + return _personnel_to_driver_read(personnel) + + +@router.put("/driver/{id}", response_model=DriverRead) +def update_driver( + id: str, + payload: DriverUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> DriverRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + personnel = _get_personnel(db, tenant_no, id) + + if payload.driver_name is not None: + personnel.personnel_name = payload.driver_name + if payload.phone_no is not None: + personnel.phone_no = payload.phone_no + if payload.id_card_no is not None: + personnel.id_card_no = payload.id_card_no + if payload.remark is not None: + personnel.remark = payload.remark + + personnel.update_by = user.id + db.commit() + db.refresh(personnel) + return _personnel_to_driver_read(personnel) + + +@router.delete("/driver/{id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_driver( + 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()) + personnel = _get_personnel(db, tenant_no, id) + personnel.del_flag = 1 + personnel.update_by = user.id + db.commit() + + +# ============================================================================= +# 车辆-司机绑定 API(兼容,写入 pl_vehicle_personnel) +# ============================================================================= + + +@router.post("/vehicle-driver", status_code=status.HTTP_201_CREATED) +def bind_vehicle_driver( + payload: VehicleDriverCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> dict: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + if payload.is_default == 1: + db.query(PlVehiclePersonnel).filter( + PlVehiclePersonnel.vehicle_id == payload.vehicle_id, + PlVehiclePersonnel.role == "driver", + PlVehiclePersonnel.del_flag == 0, + ).update({"is_default": 0}) + + vd = PlVehiclePersonnel( + id=generate_uuid(), + tenant_no=tenant_no, + vehicle_id=payload.vehicle_id, + personnel_id=payload.driver_id, + role="driver", + is_default=payload.is_default, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(vd) + db.commit() + return {"id": vd.id} + + +@router.delete("/vehicle-driver/{id}", status_code=status.HTTP_204_NO_CONTENT) +def unbind_vehicle_driver( + 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()) + vd = ( + db.query(PlVehiclePersonnel) + .filter( + PlVehiclePersonnel.id == id, + PlVehiclePersonnel.tenant_no == tenant_no, + PlVehiclePersonnel.del_flag == 0, + ) + .first() + ) + if not vd: + vd = ( + db.query(PlVehicleDriver) + .filter( + PlVehicleDriver.id == id, + PlVehicleDriver.tenant_no == tenant_no, + PlVehicleDriver.del_flag == 0, + ) + .first() + ) + if vd: + vd.del_flag = 1 + db.commit() diff --git a/backend/app/api/pl/freight.py b/backend/app/api/pl/freight.py new file mode 100644 index 000000000..a0906b904 --- /dev/null +++ b/backend/app/api/pl/freight.py @@ -0,0 +1,333 @@ +"""运输计划管理 - 运费结算 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.schemas.pl.freight import ( + FreightSettlementCreate, + FreightSettlementListQuery, + FreightSettlementListResponse, + FreightSettlementRead, + FreightSettlementUpdate, + FreightSettlementWithTransports, + RemittanceVoucherCreate, + RemittanceVoucherRead, +) + +router = APIRouter(prefix="/freight", tags=["运输计划-运费结算"]) + + +def _generate_settlement_no(db: Session) -> str: + """生成结算单编号""" + today = date.today() + prefix = f"SXJS{today.strftime('%Y%m%d')}" + + last = ( + db.query(PlFreightSettlement) + .filter( + PlFreightSettlement.settlement_no.like(f"{prefix}%"), + PlFreightSettlement.del_flag == 0, + ) + .order_by(PlFreightSettlement.settlement_no.desc()) + .first() + ) + + if last: + last_seq = int(last.settlement_no[-4:]) + seq = last_seq + 1 + else: + seq = 1 + + return f"{prefix}{seq:04d}" + + +# ============================================================================= +# 结算单列表 +# ============================================================================= + + +@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="结算状态"), + 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, + ) + + 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) + + +# ============================================================================= +# 生成结算单 +# ============================================================================= + + +@router.post("/", response_model=FreightSettlementRead, status_code=status.HTTP_201_CREATED) +def create_settlement( + payload: FreightSettlementCreate, + db: Session = Depends(get_db), + 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(), + 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, + ) + 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, + db: Session = Depends(get_db), + 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() + ) + + 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 + + +# ============================================================================= +# 更新结算单 +# ============================================================================= + + +@router.put("/{id}", response_model=FreightSettlementRead) +def update_settlement( + id: str, + payload: FreightSettlementUpdate, + 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) + + 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, + ) + 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.get("/voucher/{settlement_id}", response_model=list[RemittanceVoucherRead]) +def list_vouchers( + settlement_id: str, + db: Session = Depends(get_db), + 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() + ) + 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 diff --git a/backend/app/api/pl/inventory.py b/backend/app/api/pl/inventory.py new file mode 100644 index 000000000..596e5061a --- /dev/null +++ b/backend/app/api/pl/inventory.py @@ -0,0 +1,342 @@ +"""运输计划管理 - 盘存统计 API""" +from datetime import date +from decimal import Decimal +from typing import Optional + +from fastapi import APIRouter, Depends, HTTPException, Query +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 ( + PlDocumentReminder, + PlInventory, + PlInventoryTransaction, + PlInventoryWarning, +) +from app.schemas.pl.inventory import ( + DocumentReminderRead, + DocumentReminderUpdate, + InventoryLedgerQuery, + InventoryLedgerResponse, + InventoryRead, + InventorySummaryItem, + InventorySummaryResponse, + InventoryTransactionQuery, + InventoryTransactionRead, + InventoryTransactionResponse, + InventoryWarningRead, + InventoryWarningThreshold, + InventoryWarningUpdate, + TransportStatsItem, + TransportStatsResponse, +) +from app.services.pl_cert_service import scan_cert_expiry + +router = APIRouter(prefix="/inventory", tags=["运输计划-盘存统计"]) + + +# ============================================================================= +# 库存台账 +# ============================================================================= + + +@router.get("/ledger", response_model=InventoryLedgerResponse) +def get_inventory_ledger( + product_name: Optional[str] = Query(default=None, alias="productName", description="产品名称"), + 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), +) -> InventoryLedgerResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlInventory).filter( + PlInventory.tenant_no == tenant_no, + PlInventory.del_flag == 0, + ) + + if product_name: + query = query.filter(PlInventory.product_name.contains(product_name)) + + total = query.count() + offset = (page - 1) * page_size + items = query.order_by(PlInventory.product_name).offset(offset).limit(page_size).all() + + return InventoryLedgerResponse(total=total, list=items) + + +# ============================================================================= +# 库存预警阈值设置 +# ============================================================================= + + +@router.post("/warning-threshold") +def set_warning_threshold( + payload: InventoryWarningThreshold, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> dict: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + inventory = ( + db.query(PlInventory) + .filter( + PlInventory.product_id == payload.product_id, + PlInventory.tenant_no == tenant_no, + PlInventory.del_flag == 0, + ) + .first() + ) + + if inventory: + inventory.low_stock_warning = payload.low_stock_warning + inventory.high_stock_warning = payload.high_stock_warning + else: + # 创建库存记录 + inventory = PlInventory( + id=generate_uuid(), + tenant_no=tenant_no, + product_id=payload.product_id, + product_no="", + product_name="", + unit="吨", + stock_qty=0, + stock_amount=0, + low_stock_warning=payload.low_stock_warning, + high_stock_warning=payload.high_stock_warning, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(inventory) + + db.commit() + return {"success": True} + + +# ============================================================================= +# 库存预警列表 +# ============================================================================= + + +@router.get("/warnings", response_model=list[InventoryWarningRead]) +def list_warnings( + status: Optional[str] = Query(default=None, description="状态"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[InventoryWarningRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlInventoryWarning).filter( + PlInventoryWarning.tenant_no == tenant_no, + PlInventoryWarning.del_flag == 0, + ) + + if status: + query = query.filter(PlInventoryWarning.status == status) + + return query.order_by(PlInventoryWarning.create_time.desc()).all() + + +@router.put("/warnings/{id}", response_model=InventoryWarningRead) +def update_warning( + id: str, + payload: InventoryWarningUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> InventoryWarningRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + warning = ( + db.query(PlInventoryWarning) + .filter( + PlInventoryWarning.id == id, + PlInventoryWarning.tenant_no == tenant_no, + PlInventoryWarning.del_flag == 0, + ) + .first() + ) + + if not warning: + raise HTTPException(status_code=404, detail="预警不存在") + + if payload.status == "resolved": + warning.status = "resolved" + from datetime import datetime + + warning.resolve_time = datetime.now() + warning.resolve_remark = payload.resolve_remark + + db.commit() + db.refresh(warning) + return warning + + +# ============================================================================= +# 出入库明细 +# ============================================================================= + + +@router.get("/transactions", response_model=InventoryTransactionResponse) +def list_transactions( + product_id: Optional[str] = Query(default=None, alias="productId", description="产品ID"), + transaction_type: Optional[str] = Query(default=None, alias="transactionType", description="事务类型"), + date_from: Optional[date] = Query(default=None, alias="dateFrom", description="开始日期"), + date_to: Optional[date] = Query(default=None, alias="dateTo", description="结束日期"), + 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), +) -> InventoryTransactionResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlInventoryTransaction).filter( + PlInventoryTransaction.tenant_no == tenant_no, + PlInventoryTransaction.del_flag == 0, + ) + + if product_id: + query = query.filter(PlInventoryTransaction.product_id == product_id) + + if transaction_type: + query = query.filter(PlInventoryTransaction.transaction_type == transaction_type) + + if date_from: + query = query.filter(PlInventoryTransaction.create_time >= date_from) + + if date_to: + query = query.filter(PlInventoryTransaction.create_time <= date_to) + + total = query.count() + offset = (page - 1) * page_size + items = query.order_by(PlInventoryTransaction.create_time.desc()).offset(offset).limit(page_size).all() + + return InventoryTransactionResponse(total=total, list=items) + + +# ============================================================================= +# 出入库汇总 +# ============================================================================= + + +@router.get("/summary", response_model=InventorySummaryResponse) +def get_summary( + group_by: str = Query(default="month", description="汇总维度 month/week"), + date_from: date = Query(..., alias="dateFrom", description="开始日期"), + date_to: date = Query(..., alias="dateTo", description="结束日期"), + product_id: Optional[str] = Query(default=None, alias="productId", description="产品ID"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> InventorySummaryResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + query = db.query(PlInventoryTransaction).filter( + PlInventoryTransaction.tenant_no == tenant_no, + PlInventoryTransaction.del_flag == 0, + PlInventoryTransaction.create_time >= date_from, + PlInventoryTransaction.create_time <= date_to, + ) + + if product_id: + query = query.filter(PlInventoryTransaction.product_id == product_id) + + transactions = query.all() + + # 按产品分组汇总 + summary_map = {} + for t in transactions: + key = t.product_id + + if key not in summary_map: + summary_map[key] = { + "product_id": t.product_id, + "product_name": t.product_name, + "inbound_qty": Decimal("0"), + "outbound_qty": Decimal("0"), + } + + if t.transaction_type == "inbound": + summary_map[key]["inbound_qty"] += t.qty + else: + summary_map[key]["outbound_qty"] += abs(t.qty) + + items = [] + for key, data in summary_map.items(): + net = data["inbound_qty"] - data["outbound_qty"] + items.append(InventorySummaryItem( + period="汇总", + product_id=data["product_id"], + product_name=data["product_name"], + inbound_qty=data["inbound_qty"], + outbound_qty=data["outbound_qty"], + net_change=net, + )) + + return InventorySummaryResponse(list=items) + + +# ============================================================================= +# 证件到期提醒 +# ============================================================================= + + +@router.get("/document-reminders", response_model=list[DocumentReminderRead]) +def list_document_reminders( + status: Optional[str] = Query(default=None, description="状态"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[DocumentReminderRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlDocumentReminder).filter( + PlDocumentReminder.tenant_no == tenant_no, + PlDocumentReminder.del_flag == 0, + ) + + if status: + query = query.filter(PlDocumentReminder.status == status) + + return query.order_by(PlDocumentReminder.expire_date.asc()).all() + + +@router.put("/document-reminders/{id}", response_model=DocumentReminderRead) +def update_document_reminder( + id: str, + payload: DocumentReminderUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> DocumentReminderRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + reminder = ( + db.query(PlDocumentReminder) + .filter( + PlDocumentReminder.id == id, + PlDocumentReminder.tenant_no == tenant_no, + PlDocumentReminder.del_flag == 0, + ) + .first() + ) + + if not reminder: + raise HTTPException(status_code=404, detail="提醒不存在") + + reminder.status = payload.status + if payload.remark: + reminder.remark = payload.remark + + db.commit() + db.refresh(reminder) + return reminder + + +# ============================================================================= +# 生成证件到期提醒(定时任务调用) +# ============================================================================= + + +@router.post("/check-document-expiry") +def check_document_expiry(db: Session = Depends(get_db)) -> dict: + """检查证件到期,生成提醒(供定时任务调用)""" + created_count = scan_cert_expiry(db) + db.commit() + return {"created_count": created_count} diff --git a/backend/app/api/pl/plan.py b/backend/app/api/pl/plan.py new file mode 100644 index 000000000..f92a2c5f9 --- /dev/null +++ b/backend/app/api/pl/plan.py @@ -0,0 +1,927 @@ +"""运输计划管理 - 计划 API""" +from datetime import date +from typing import Optional + +from fastapi import APIRouter, Depends, HTTPException, Query, status +from sqlalchemy import func, or_ +from sqlalchemy.orm import Session + +from app.core.config import settings +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.crm_models import CrmContract, CrmContractProduct, CrmProduct +from app.models.db_models import DbInboundOutbound +from app.models.pl_models import ( + PlCarrier, + PlDriver, + PlPlan, + PlPlanProduct, + PlPlanTransport, + PlTransport, + PlTransportDbLink, + PlVehicle, +) +from app.schemas.pl import PlanProductCreate +from app.schemas.pl.plan import ( + CreateFromContractRequest, + PlanCreate, + PlanCreateFull, + PlanListQuery, + PlanListResponse, + PlanProductCertsUpdate, + PlanProductRead, + PlanRead, + PlanUpdate, + PlanWithProducts, +) +from app.schemas.pl.transport import PlanArrangeInfoRead, TransportInventoryLinkRead +from app.services.pl_dibang_bridge_service import revoke_regeneratable_dibang_for_transport +from app.services.pl_plan_service import ( + apply_vehicle_prefill_to_plan, + build_plan_product, + calc_plan_total_amount, + clear_draft_transport_for_plan, + determine_plan_type, + resolve_hazard_flags_from_crm, + sync_transport_prefill_for_plan, + update_plan_product_certs, + validate_create_full, +) + +router = APIRouter(prefix="/plan", tags=["运输计划-计划管理"]) + + +def _generate_plan_no(db: Session) -> str: + """生成计划编号 SXDDHYYYYMMDD######""" + today = date.today() + prefix = f"SXDDH{today.strftime('%Y%m%d')}" + + # uk_plan_no 对全表生效(含软删),取号时不能过滤 del_flag + last_plan = ( + db.query(PlPlan) + .filter(PlPlan.plan_no.like(f"{prefix}%")) + .order_by(PlPlan.plan_no.desc()) + .first() + ) + + if last_plan: + last_seq = int(last_plan.plan_no[-6:]) + seq = last_seq + 1 + else: + seq = 1 + + return f"{prefix}{seq:06d}" + + +def _determine_plan_type(supplier_name: Optional[str], destination_name: Optional[str]) -> str: + """根据供应商和目的地自动判断单据类型""" + return determine_plan_type(supplier_name, destination_name) + + +def _get_plan_type_label(plan_type: str) -> str: + labels = { + "direct": "直销单", + "inbound": "入库单", + "outbound": "出库单", + } + return labels.get(plan_type, plan_type) + + +def _generate_notify_message(plan: PlPlan, products: list) -> str: + """生成通知信息""" + product_names = "、".join([p.product_name for p in products[:3]]) + if len(products) > 3: + product_names += "等" + + return f"""计划号:{plan.plan_no} +企业名称:{plan.customer_name or ''} +提货单位:{plan.destination_name or ''} +到货时间:{plan.contract_end_date or ''} +药品名称:{product_names} +到货吨位:{sum(float(p.inbound_estimate_qty or p.outbound_estimate_qty or 0) for p in products)}吨 +备注:""" + + +# ============================================================================= +# 计划列表 +# ============================================================================= + + +@router.get("/", response_model=PlanListResponse) +def list_plans( + q: Optional[str] = Query(default=None, description="模糊搜索"), + plan_no: Optional[str] = Query(default=None, description="计划编号"), + plan_type: Optional[str] = Query(default=None, alias="planType", description="单据类型"), + follow_status: Optional[str] = Query(default=None, alias="followStatus", description="跟进状态"), + transport_status: Optional[str] = Query(default=None, alias="transportStatus", description="运输状态"), + archive_status: Optional[str] = Query(default=None, alias="archiveStatus", description="归档状态"), + customer_name: Optional[str] = Query(default=None, alias="customerName", description="客户名称"), + plan_date_from: Optional[date] = Query(default=None, alias="planDateFrom", description="计划日期开始"), + plan_date_to: Optional[date] = Query(default=None, alias="planDateTo", description="计划日期结束"), + 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), +) -> PlanListResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlPlan).filter( + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + ) + + if q: + query = query.filter( + or_( + PlPlan.plan_no.contains(q), + func.lower(PlPlan.customer_name).contains(q.lower()), + ) + ) + + if plan_no: + query = query.filter(PlPlan.plan_no.contains(plan_no)) + + if plan_type: + query = query.filter(PlPlan.plan_type == plan_type) + + if follow_status: + query = query.filter(PlPlan.follow_status == follow_status) + + if transport_status: + query = query.filter(PlPlan.transport_status == transport_status) + + if archive_status: + query = query.filter(PlPlan.archive_status == archive_status) + + if customer_name: + query = query.filter(func.lower(PlPlan.customer_name).contains(customer_name.lower())) + + if plan_date_from: + query = query.filter(PlPlan.plan_date >= plan_date_from) + + if plan_date_to: + query = query.filter(PlPlan.plan_date <= plan_date_to) + + # 统计总数 + total = query.count() + + # 分页 + offset = (page - 1) * page_size + plans = query.order_by(PlPlan.create_time.desc()).offset(offset).limit(page_size).all() + + plan_ids = [plan.id for plan in plans] + products_by_plan: dict[str, list[PlPlanProduct]] = {} + if plan_ids: + all_products = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.plan_id.in_(plan_ids), + PlPlanProduct.del_flag == 0, + ) + .order_by(PlPlanProduct.order_num) + .all() + ) + for product in all_products: + products_by_plan.setdefault(product.plan_id, []).append(product) + + result_list: list[PlanWithProducts] = [] + for plan in plans: + enriched_products: list[PlanProductRead] = [] + for product in products_by_plan.get(plan.id, []): + is_toxic, is_explosive = resolve_hazard_flags_from_crm( + db, + tenant_no, + product.product_id, + product.is_toxic, + product.is_explosive, + ) + item = PlanProductRead.model_validate(product) + if is_toxic != int(product.is_toxic or 0) or is_explosive != int(product.is_explosive or 0): + item = item.model_copy(update={"is_toxic": is_toxic, "is_explosive": is_explosive}) + enriched_products.append(item) + + plan_item = PlanWithProducts.model_validate(plan) + plan_item.products = enriched_products + result_list.append(plan_item) + + return PlanListResponse(total=total, list=result_list) + + +@router.get("/count-by-contract") +def count_plans_by_contract( + contract_ids: str = Query(..., alias="contractIds", description="合同ID,逗号分隔"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> dict: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + ids = [item.strip() for item in contract_ids.split(",") if item.strip()] + if not ids: + return {"counts": {}} + + rows = ( + db.query(PlPlan.contract_id, func.count(PlPlan.id)) + .filter( + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + PlPlan.contract_id.in_(ids), + ) + .group_by(PlPlan.contract_id) + .all() + ) + return {"counts": {contract_id: count for contract_id, count in rows}} + + +# ============================================================================= +# 创建计划 +# ============================================================================= + + +@router.post("/", response_model=PlanRead, status_code=status.HTTP_201_CREATED) +def create_plan( + payload: PlanCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + # 生成计划编号 + plan_no = _generate_plan_no(db) + + # 自动判断单据类型 + plan_type = payload.plan_type + if not plan_type: + plan_type = _determine_plan_type(payload.supplier_name, payload.destination_name) + + plan = PlPlan( + id=generate_uuid(), + tenant_no=tenant_no, + plan_no=plan_no, + plan_date=payload.plan_date, + belongs_company=payload.belongs_company, + plan_type=plan_type, + follow_status=payload.follow_status or "draft", + transport_status=payload.transport_status or "pending", + archive_status=payload.archive_status or "unarchived", + complete_status=payload.complete_status or "no", + contract_id=payload.contract_id, + contract_no=payload.contract_no, + supplier_id=payload.supplier_id, + supplier_name=payload.supplier_name, + destination_id=payload.destination_id, + destination_name=payload.destination_name, + customer_id=payload.customer_id, + customer_name=payload.customer_name, + contact_name=payload.contact_name, + contact_phone=payload.contact_phone, + party_a=payload.party_a, + party_b=payload.party_b, + contract_start_date=payload.contract_start_date, + contract_end_date=payload.contract_end_date, + delivery_method=payload.delivery_method, + settlement_method=payload.settlement_method, + has_freight=payload.has_freight, + pickup_address=payload.pickup_address, + pickup_time=payload.pickup_time, + pickup_notes=payload.pickup_notes, + destination_address=payload.destination_address, + delivery_time=payload.delivery_time, + destination_notes=payload.destination_notes, + follow_user_id=payload.follow_user_id or user.id, + follow_user_name=payload.follow_user_name or user.nick_name, + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(plan) + + # 添加产品明细 + if payload.products: + for idx, prod in enumerate(payload.products): + pp = build_plan_product( + tenant_no=tenant_no, + plan_id=plan.id, + plan_type=plan_type, + prod=prod, + order_num=idx, + user_id=user.id, + dept_id=user.dept_id, + ) + db.add(pp) + + plan.total_amount = calc_plan_total_amount(payload.products or []) + + db.commit() + db.refresh(plan) + return plan + + +@router.post("/create-full", response_model=PlanWithProducts, status_code=status.HTTP_201_CREATED) +def create_plan_full( + payload: PlanCreateFull, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanWithProducts: + """创建运输计划(完整表单:合同产品 + 可选预选车辆,不自动安排运输)""" + validate_create_full(payload) + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + plan_no = _generate_plan_no(db) + + plan_type = payload.plan_type or _determine_plan_type(payload.supplier_name, payload.destination_name) + has_vehicle = bool(payload.transport and payload.transport.vehicle_id) + + plan = PlPlan( + id=generate_uuid(), + tenant_no=tenant_no, + plan_no=plan_no, + plan_date=payload.plan_date, + belongs_company=payload.belongs_company, + plan_type=plan_type, + follow_status="draft", + transport_status="pending", + archive_status="unarchived", + complete_status="no", + contract_id=payload.contract_id, + contract_no=payload.contract_no, + supplier_id=payload.supplier_id, + supplier_name=payload.supplier_name, + destination_id=payload.destination_id, + destination_name=payload.destination_name, + customer_id=payload.customer_id, + customer_name=payload.customer_name, + contact_name=payload.contact_name, + contact_phone=payload.contact_phone, + party_a=payload.party_a, + party_b=payload.party_b, + contract_start_date=payload.contract_start_date, + contract_end_date=payload.contract_end_date, + delivery_method=payload.delivery_method, + settlement_method=payload.settlement_method, + has_freight=payload.has_freight, + pickup_address=payload.pickup_address, + pickup_time=payload.pickup_time, + pickup_notes=payload.pickup_notes, + destination_address=payload.destination_address, + delivery_time=payload.delivery_time, + destination_notes=payload.destination_notes, + total_amount=calc_plan_total_amount(payload.products or []), + follow_user_id=payload.follow_user_id or user.id, + follow_user_name=payload.follow_user_name or user.nick_name, + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(plan) + db.flush() + + plan_products: list[PlPlanProduct] = [] + for idx, prod in enumerate(payload.products or []): + is_toxic, is_explosive = resolve_hazard_flags_from_crm( + db, + tenant_no, + prod.product_id, + prod.is_toxic, + prod.is_explosive, + ) + prod_payload = prod.model_copy(update={"is_toxic": is_toxic, "is_explosive": is_explosive}) + pp = build_plan_product( + tenant_no=tenant_no, + plan_id=plan.id, + plan_type=plan_type, + prod=prod_payload, + order_num=idx, + user_id=user.id, + dept_id=user.dept_id, + ) + db.add(pp) + plan_products.append(pp) + + if has_vehicle and payload.transport: + apply_vehicle_prefill_to_plan( + db, + tenant_no=tenant_no, + plan=plan, + transport_payload=payload.transport, + products=plan_products, + user_id=user.id, + dept_id=user.dept_id, + ) + + db.commit() + db.refresh(plan) + + result = PlanWithProducts.model_validate(plan) + result.products = plan_products + return result + + +# ============================================================================= +# 从合同创建计划 +# ============================================================================= + + +@router.post("/create-from-contract", response_model=PlanRead, status_code=status.HTTP_201_CREATED) +def create_from_contract( + payload: CreateFromContractRequest, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanRead: + """从 CRM 合同发起计划""" + from app.models.crm_models import CrmContract, CrmContractProduct + + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + # 查询合同信息 + contract = ( + db.query(CrmContract) + .filter(CrmContract.id == payload.contract_id, CrmContract.del_flag == 0) + .first() + ) + if not contract: + raise HTTPException(status_code=404, detail="合同不存在") + + # 生成计划编号 + plan_no = _generate_plan_no(db) + + # 自动判断单据类型 + plan_type = _determine_plan_type(contract.supplier_name, contract.customer_name) + + plan = PlPlan( + id=generate_uuid(), + tenant_no=tenant_no, + plan_no=plan_no, + plan_date=payload.plan_date, + belongs_company=contract.belongs_company or "shanxia", + plan_type=plan_type, + follow_status="draft", + transport_status="pending", + archive_status="unarchived", + complete_status="no", + contract_id=contract.id, + contract_no=contract.contract_no, + supplier_id=contract.supplier_id, + supplier_name=contract.supplier_name, + destination_id=contract.customer_id, + destination_name=contract.customer_name, + customer_id=contract.customer_id, + customer_name=contract.customer_name, + contact_name=contract.contact_name, + contact_phone=contract.contact_phone, + party_a=contract.party_a_name, + party_b=contract.party_b_name, + contract_start_date=contract.start_date, + contract_end_date=contract.end_date, + delivery_method=contract.delivery_method, + settlement_method=contract.settlement_method, + has_freight=1 if contract.settlement_method and "含运" in contract.settlement_method else 0, + follow_user_id=payload.follow_user_id or user.id, + follow_user_name=payload.follow_user_name or user.nick_name, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(plan) + + # 查询合同产品明细 + contract_products = ( + db.query(CrmContractProduct) + .filter( + CrmContractProduct.contract_id == contract.id, + CrmContractProduct.del_flag == 0, + ) + .all() + ) + + # 添加产品明细 + for idx, cp in enumerate(contract_products): + is_toxic, is_explosive = resolve_hazard_flags_from_crm( + db, + tenant_no, + cp.product_id, + 0, + 0, + ) + pp = PlPlanProduct( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=plan.id, + product_id=cp.product_id, + product_no=cp.product_no, + product_name=cp.product_name, + model=cp.specification, + unit=cp.unit or "吨", + is_explosive=is_explosive, + is_toxic=is_toxic, + inbound_estimate_qty=cp.quantity, + outbound_estimate_qty=cp.quantity, + order_num=idx, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(pp) + + db.commit() + db.refresh(plan) + return plan + + +# ============================================================================= +# 获取计划详情 +# ============================================================================= + + +@router.get("/{id}", response_model=PlanWithProducts) +def get_plan( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanWithProducts: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + plan = _get_plan(db, tenant_no, id) + + products = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.plan_id == id, + PlPlanProduct.del_flag == 0, + ) + .order_by(PlPlanProduct.order_num) + .all() + ) + + enriched_products = [] + for product in products: + is_toxic, is_explosive = resolve_hazard_flags_from_crm( + db, + tenant_no, + product.product_id, + product.is_toxic, + product.is_explosive, + ) + item = PlanProductRead.model_validate(product) + if is_toxic != int(product.is_toxic or 0) or is_explosive != int(product.is_explosive or 0): + item = item.model_copy(update={"is_toxic": is_toxic, "is_explosive": is_explosive}) + enriched_products.append(item) + + result = PlanWithProducts.model_validate(plan) + result.products = enriched_products + return result + + +# ============================================================================= +# 更新计划 +# ============================================================================= + + +@router.put("/{id}", response_model=PlanRead) +def update_plan( + id: str, + payload: PlanUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanRead: + 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(): + setattr(plan, key, value) + + plan_type = payload.plan_type or plan.plan_type + + # 更新产品明细 + if payload.products is not None: + existing_products = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.plan_id == id, + PlPlanProduct.del_flag == 0, + ) + .all() + ) + cert_by_product_id = { + row.product_id: (row.purchase_cert_url, row.transport_cert_url) + for row in existing_products + } + + db.query(PlPlanProduct).filter( + PlPlanProduct.plan_id == id, + PlPlanProduct.del_flag == 0, + ).update({"del_flag": 1}) + + plan_products: list[PlPlanProduct] = [] + for idx, prod in enumerate(payload.products): + is_toxic, is_explosive = resolve_hazard_flags_from_crm( + db, + tenant_no, + prod.product_id, + prod.is_toxic, + prod.is_explosive, + ) + purchase_cert = prod.purchase_cert_url + transport_cert = prod.transport_cert_url + if not purchase_cert or not transport_cert: + old_purchase, old_transport = cert_by_product_id.get(prod.product_id, (None, None)) + purchase_cert = purchase_cert or old_purchase + transport_cert = transport_cert or old_transport + prod_payload = prod.model_copy( + update={ + "is_toxic": is_toxic, + "is_explosive": is_explosive, + "purchase_cert_url": purchase_cert, + "transport_cert_url": transport_cert, + } + ) + pp = build_plan_product( + tenant_no=tenant_no, + plan_id=id, + plan_type=plan_type, + prod=prod_payload, + order_num=idx, + user_id=user.id, + dept_id=user.dept_id, + ) + db.add(pp) + plan_products.append(pp) + + plan.total_amount = calc_plan_total_amount(payload.products) + else: + plan_products = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.plan_id == id, + PlPlanProduct.del_flag == 0, + ) + .all() + ) + + # 同步运输预选 / 关联运输单运费 + if payload.transport is not None: + if payload.transport.vehicle_id: + sync_transport_prefill_for_plan( + db, + tenant_no=tenant_no, + plan=plan, + transport_payload=payload.transport, + products=plan_products, + user_id=user.id, + dept_id=user.dept_id, + ) + else: + clear_draft_transport_for_plan( + db, + tenant_no=tenant_no, + plan=plan, + user_id=user.id, + ) + + plan.update_by = user.id + db.commit() + db.refresh(plan) + return plan + + +@router.patch("/{id}/product-certs", response_model=PlanWithProducts) +def patch_plan_product_certs( + id: str, + payload: PlanProductCertsUpdate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanWithProducts: + """更新计划危化品产品购买证/运输证(不触发安排运输)""" + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + update_plan_product_certs( + db, + tenant_no=tenant_no, + plan_id=id, + items=payload.products, + user_id=user.id, + ) + plan = _get_plan(db, tenant_no, id) + products = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.plan_id == id, + PlPlanProduct.del_flag == 0, + ) + .order_by(PlPlanProduct.order_num) + .all() + ) + result = PlanWithProducts.model_validate(plan) + result.products = products + return result + + +def _build_driver_url(token: str) -> str: + origin = (settings.PUBLIC_WEB_ORIGIN or "").rstrip("/") + return f"{origin}/#/public/pl/transport/{token}" + + +@router.get("/{id}/arrange-info", response_model=PlanArrangeInfoRead) +def get_plan_arrange_info( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanArrangeInfoRead: + """获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。""" + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + plan = _get_plan(db, tenant_no, id) + + empty = PlanArrangeInfoRead(driver_url=None, license_plate=None, inventory_records=[]) + if plan.follow_status == "cancelled" or plan.transport_status != "arranged" or not plan.transport_id: + return empty + + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if not transport or transport.transport_status == "cancelled": + return empty + + token = (transport.driver_access_token or "").strip() + driver_url = _build_driver_url(token) if token else None + + links = ( + db.query(PlTransportDbLink) + .filter( + PlTransportDbLink.tenant_no == tenant_no, + PlTransportDbLink.plan_id == id, + PlTransportDbLink.transport_id == transport.id, + PlTransportDbLink.del_flag == 0, + ) + .all() + ) + + inventory_records: list[TransportInventoryLinkRead] = [] + for link in links: + product = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.id == link.plan_product_id, + PlPlanProduct.del_flag == 0, + ) + .first() + ) + inventory = ( + db.query(DbInboundOutbound) + .filter( + DbInboundOutbound.id == link.db_inventory_id, + DbInboundOutbound.tenant_no == tenant_no, + DbInboundOutbound.del_flag == 0, + ) + .first() + ) + inventory_records.append( + TransportInventoryLinkRead( + plan_product_id=link.plan_product_id, + product_name=(product.product_name if product else "") or "", + db_purchase_plan_id=link.db_purchase_plan_id, + db_inventory_id=link.db_inventory_id, + batch_no=(inventory.batch_no if inventory else "") or "", + plan_no=plan.plan_no or "", + ) + ) + + return PlanArrangeInfoRead( + driver_url=driver_url, + license_plate=transport.license_plate or plan.license_plate, + inventory_records=inventory_records, + ) + + +# ============================================================================= +# 取消计划 +# ============================================================================= + + +@router.post("/{id}/cancel", response_model=PlanRead) +def cancel_plan( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanRead: + """作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。""" + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + plan = _get_plan(db, tenant_no, id) + + if plan.follow_status == "cancelled": + raise HTTPException(status_code=400, detail="计划已作废") + + if plan.archive_status == "archived": + raise HTTPException(status_code=400, detail="已归档的计划不能作废") + + if plan.transport_id: + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if transport: + try: + revoke_regeneratable_dibang_for_transport( + db, + tenant_no=tenant_no, + transport_id=transport.id, + user_id=user.id, + ) + except ValueError as exc: + raise HTTPException(status_code=400, detail=str(exc)) from exc + transport.transport_status = "cancelled" + transport.update_by = user.id + + plan.follow_status = "cancelled" + plan.transport_status = "pending" + plan.update_by = user.id + db.commit() + db.refresh(plan) + return plan + + +# ============================================================================= +# 归档计划 +# ============================================================================= + + +@router.post("/{id}/archive", response_model=PlanRead) +def archive_plan( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> PlanRead: + 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="计划已归档") + + plan.archive_status = "archived" + plan.complete_status = "yes" + plan.update_by = user.id + db.commit() + db.refresh(plan) + return plan + + +# ============================================================================= +# 删除计划 +# ============================================================================= + + +@router.delete("/{id}", status_code=status.HTTP_204_NO_CONTENT) +def delete_plan( + 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()) + plan = _get_plan(db, tenant_no, id) + + plan.del_flag = 1 + plan.update_by = user.id + + db.query(PlPlanProduct).filter( + PlPlanProduct.plan_id == id, + PlPlanProduct.tenant_no == tenant_no, + PlPlanProduct.del_flag == 0, + ).update({"del_flag": 1, "update_by": user.id}, synchronize_session=False) + + db.query(PlPlanTransport).filter( + PlPlanTransport.plan_id == id, + PlPlanTransport.tenant_no == tenant_no, + PlPlanTransport.del_flag == 0, + ).update({"del_flag": 1, "update_by": user.id}, synchronize_session=False) + + db.commit() + + +# ============================================================================= +# 辅助函数 +# ============================================================================= + + +def _get_plan(db: Session, tenant_no: str, plan_id: str) -> PlPlan: + plan = ( + db.query(PlPlan) + .filter( + PlPlan.id == plan_id, + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + ) + .first() + ) + if not plan: + raise HTTPException(status_code=404, detail="计划不存在") + return plan diff --git a/backend/app/api/pl/public_transport.py b/backend/app/api/pl/public_transport.py new file mode 100644 index 000000000..2132f896f --- /dev/null +++ b/backend/app/api/pl/public_transport.py @@ -0,0 +1,219 @@ +"""运输计划司机免登录公共 API""" +from __future__ import annotations + +import json +import os +from datetime import date, datetime +from typing import Optional + +from fastapi import APIRouter, Depends, File, Form, HTTPException, UploadFile +from sqlalchemy.orm import Session + +from app.core.storage import storage +from app.core.attachment_biz import resolve_upload_folder +from app.core.config import settings +from app.core.database import get_db +from app.core.response import error_response, success_response +from app.crud import oss as oss_svc +from app.models.pl_models import PlPlan, PlPlanProduct, PlPlanTransport, PlTransport +from app.schemas.pl.transport import PublicTransportFeedback, PublicTransportPageRead, PublicTransportPlanProductRead +from app.utils.excel_export import load_dict_label_maps + +router = APIRouter(prefix="/public/pl/transport", tags=["运输计划-司机公共"]) + +CRM_PRODUCT_UNIT = "crm_product_unit" + + +def _resolve_unit_label(unit_map: dict[str, str], unit_code: Optional[str]) -> str: + code = (unit_code or "").strip() + if not code: + return "吨" + return unit_map.get(code, code) + + +def _get_transport_by_token(db: Session, token: str) -> PlTransport: + transport = ( + db.query(PlTransport) + .filter( + PlTransport.driver_access_token == token, + PlTransport.del_flag == 0, + ) + .first() + ) + if not transport: + raise HTTPException(status_code=404, detail="链接无效或已失效") + return transport + + +def _parse_feedback_images(raw: Optional[str]) -> list[str]: + if not raw: + return [] + try: + parsed = json.loads(raw) + if isinstance(parsed, list): + return [str(item) for item in parsed if item] + except (TypeError, json.JSONDecodeError): + pass + return [part.strip() for part in raw.split(",") if part.strip()] + + +def _format_plan_date(value) -> Optional[str]: + if value is None: + return None + if isinstance(value, datetime): + return value.strftime("%Y-%m-%d") + if isinstance(value, date): + return value.isoformat() + return str(value) + + +def _build_public_page(db: Session, transport: PlTransport) -> PublicTransportPageRead: + link = ( + db.query(PlPlanTransport) + .filter( + PlPlanTransport.transport_id == transport.id, + PlPlanTransport.del_flag == 0, + ) + .order_by(PlPlanTransport.create_time.desc()) + .first() + ) + plan = None + products: list[PlPlanProduct] = [] + if link: + plan = ( + db.query(PlPlan) + .filter(PlPlan.id == link.plan_id, PlPlan.del_flag == 0) + .first() + ) + if plan: + products = ( + db.query(PlPlanProduct) + .filter(PlPlanProduct.plan_id == plan.id, PlPlanProduct.del_flag == 0) + .order_by(PlPlanProduct.order_num.asc(), PlPlanProduct.create_time.asc()) + .all() + ) + + product_reads = [] + unit_map = load_dict_label_maps( + db, [CRM_PRODUCT_UNIT], tenant_no=transport.tenant_no + ).get(CRM_PRODUCT_UNIT, {}) + for prod in products: + product_reads.append( + PublicTransportPlanProductRead( + product_name=prod.product_name or "", + model=prod.model, + package_spec=prod.package_spec, + unit=_resolve_unit_label(unit_map, prod.unit), + quantity=prod.quantity or prod.inbound_estimate_qty or prod.outbound_estimate_qty, + ) + ) + + return PublicTransportPageRead( + plan_no=plan.plan_no if plan else transport.transport_no, + plan_date=_format_plan_date(plan.plan_date if plan else None), + plan_type=plan.plan_type if plan else "", + pickup_address=plan.pickup_address if plan else transport.start_point, + destination_address=( + (plan.destination_address or plan.destination_name) if plan else transport.end_point + ), + license_plate=transport.license_plate, + driver_name=transport.driver_name, + driver_phone=transport.driver_phone, + products=product_reads, + feedback_remark=transport.feedback_remark, + feedback_images=_parse_feedback_images(transport.feedback_images), + feedback_time=transport.feedback_time, + plan_voided=( + (plan is not None and plan.follow_status == "cancelled") + or transport.transport_status == "cancelled" + ), + ) + + +@router.get("/{token}") +def get_public_transport(token: str, db: Session = Depends(get_db)): + transport = _get_transport_by_token(db, token) + page = _build_public_page(db, transport) + return success_response(page.model_dump(by_alias=True)) + + +@router.post("/{token}/feedback") +def save_public_feedback( + token: str, + payload: PublicTransportFeedback, + db: Session = Depends(get_db), +): + transport = _get_transport_by_token(db, token) + page = _build_public_page(db, transport) + if page.plan_voided: + return error_response(400, "运输计划已作废,无法提交回执") + + if payload.feedback_images is not None: + transport.feedback_images = json.dumps(payload.feedback_images) + + if payload.feedback_remark is not None: + transport.feedback_remark = payload.feedback_remark + + transport.feedback_time = datetime.now() + db.commit() + return success_response({"success": True, "message": "保存成功"}) + + +def _format_file_size(size_bytes: int) -> str: + if size_bytes < 1024: + return f"{size_bytes} B" + if size_bytes < 1024 * 1024: + return f"{size_bytes / 1024:.1f} KB" + return f"{size_bytes / (1024 * 1024):.1f} MB" + + +@router.post("/{token}/attachments") +async def upload_public_attachment( + token: str, + file: UploadFile = File(...), + folder: Optional[str] = Form(""), + db: Session = Depends(get_db), +): + transport = _get_transport_by_token(db, token) + page = _build_public_page(db, transport) + if page.plan_voided: + return error_response(400, "运输计划已作废,无法上传附件") + if not file or not file.filename: + return error_response(400, "请选择文件") + + try: + effective_folder = resolve_upload_folder(folder=folder or "", biz_type="pl_transport_feedback") + file_content = await file.read() + full_url = storage.upload_file(file_content, file.filename, effective_folder) + base_url = settings.MINIO_BASE_URL.rstrip("/") if settings.MINIO_BASE_URL else "" + if base_url and full_url.startswith(base_url + "/"): + file_url = full_url[len(base_url) + 1 :] + else: + file_url = full_url + + record = oss_svc.create_oss( + db, + tenant_no=transport.tenant_no, + url=file_url, + original_name=file.filename, + file_suffix=os.path.splitext(file.filename)[1].lstrip(".") if file.filename else "", + file_size=len(file_content), + file_type=file.content_type or "", + biz_type="pl_transport_feedback", + user_id=None, + ext1=effective_folder or None, + ) + db.commit() + return success_response( + { + "id": record.id, + "fileName": record.original_name, + "fileUrl": record.url, + "fileSize": record.file_size, + "fileSizeDisplay": _format_file_size(record.file_size or 0), + "fileType": record.file_type, + } + ) + except Exception as exc: + db.rollback() + return error_response(500, f"上传失败: {str(exc)}") diff --git a/backend/app/api/pl/transport.py b/backend/app/api/pl/transport.py new file mode 100644 index 000000000..3b727ffb4 --- /dev/null +++ b/backend/app/api/pl/transport.py @@ -0,0 +1,734 @@ +"""运输计划管理 - 运输 API""" +from datetime import date, datetime +from typing import Optional +import json +import secrets + +from fastapi import APIRouter, Depends, HTTPException, Query, status +from pydantic import BaseModel, Field +from sqlalchemy import func, or_ +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.core.config import settings +from app.models.pl_models import ( + PlCarrier, + PlDriver, + PlPersonnel, + PlPlan, + PlPlanProduct, + PlPlanTransport, + PlTransport, + PlTransportApproval, + PlVehicle, +) +from app.schemas.pl.transport import ( + ApprovalRecordRead, + ApprovalRequest, + ApprovalSubmit, + TransportArrange, + TransportArrangeResult, + TransportCreate, + TransportFeedback, + TransportInventoryLinkRead, + TransportListQuery, + TransportListResponse, + TransportRead, +) +from app.services.pl_dibang_bridge_service import sync_dibang_for_transport + +router = APIRouter(prefix="/order", tags=["运输计划-运输管理"]) + + +def _generate_transport_no(db: Session) -> str: + """生成运输编号 SXYS######""" + now = date.today() + prefix = f"SXYS{now.strftime('%Y%m')}" + + last = ( + db.query(PlTransport) + .filter( + PlTransport.transport_no.like(f"{prefix}%"), + PlTransport.del_flag == 0, + ) + .order_by(PlTransport.transport_no.desc()) + .first() + ) + + if last: + last_seq = int(last.transport_no[-6:]) + seq = last_seq + 1 + else: + seq = 1 + + return f"{prefix}{seq:06d}" + + +def _resolve_driver_info(db: Session, tenant_no: str, driver_id: str) -> Optional[dict]: + """解析司机信息:优先 pl_personnel,兼容旧 pl_driver。""" + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.id == driver_id, + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + .first() + ) + if personnel: + return { + "id": personnel.id, + "name": personnel.personnel_name, + "phone": personnel.phone_no, + } + + legacy = ( + db.query(PlDriver) + .filter( + PlDriver.id == driver_id, + PlDriver.tenant_no == tenant_no, + PlDriver.del_flag == 0, + ) + .first() + ) + if legacy: + return { + "id": legacy.id, + "name": legacy.driver_name, + "phone": legacy.phone_no, + } + return None + + +def _get_vehicle_info(db: Session, vehicle_id: str, tenant_no: Optional[str] = None) -> dict: + vehicle = db.query(PlVehicle).filter(PlVehicle.id == vehicle_id).first() + if not vehicle: + return {} + + info = { + "license_plate": vehicle.license_plate, + "carrier_id": vehicle.carrier_id, + "carrier_name": vehicle.carrier_name, + } + + if vehicle.default_driver_id: + driver_info = ( + _resolve_driver_info(db, tenant_no, vehicle.default_driver_id) + if tenant_no + else None + ) + if not driver_info: + personnel = db.query(PlPersonnel).filter( + PlPersonnel.id == vehicle.default_driver_id, + PlPersonnel.del_flag == 0, + ).first() + if personnel: + driver_info = { + "id": personnel.id, + "name": personnel.personnel_name, + "phone": personnel.phone_no, + } + else: + legacy = db.query(PlDriver).filter( + PlDriver.id == vehicle.default_driver_id, + PlDriver.del_flag == 0, + ).first() + if legacy: + driver_info = { + "id": legacy.id, + "name": legacy.driver_name, + "phone": legacy.phone_no, + } + if driver_info: + info["driver_id"] = driver_info["id"] + info["driver_name"] = driver_info["name"] + info["driver_phone"] = driver_info["phone"] + elif vehicle.default_driver_name: + info["driver_id"] = vehicle.default_driver_id + info["driver_name"] = vehicle.default_driver_name + + return info + + +def _ensure_driver_access_token(transport: PlTransport) -> str: + token = (transport.driver_access_token or "").strip() + if not token: + token = secrets.token_urlsafe(32)[:64] + transport.driver_access_token = token + return token + + +def _build_driver_url(token: str) -> str: + origin = (settings.PUBLIC_WEB_ORIGIN or "").rstrip("/") + return f"{origin}/#/public/pl/transport/{token}" + + +def _build_arrange_result( + transport: PlTransport, + inventory_records: list[TransportInventoryLinkRead], +) -> TransportArrangeResult: + token = transport.driver_access_token or "" + result = TransportArrangeResult.model_validate(transport) + result.driver_access_token = token + result.driver_url = _build_driver_url(token) if token else None + result.inventory_records = inventory_records + return result + + +# ============================================================================= +# 运输列表 +# ============================================================================= + + +@router.get("/", response_model=TransportListResponse) +def list_transports( + q: Optional[str] = Query(default=None, description="模糊搜索"), + transport_no: Optional[str] = Query(default=None, alias="transportNo", description="运输编号"), + transport_status: Optional[str] = Query(default=None, alias="transportStatus", description="运输状态"), + approval_status: Optional[str] = Query(default=None, alias="approvalStatus", description="审批状态"), + vehicle_id: Optional[str] = Query(default=None, alias="vehicleId", description="车辆ID"), + driver_id: Optional[str] = Query(default=None, alias="driverId", description="司机ID"), + 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), +) -> TransportListResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + query = db.query(PlTransport).filter( + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + + if q: + query = query.filter( + or_( + PlTransport.transport_no.contains(q), + PlTransport.license_plate.contains(q), + PlTransport.driver_name.contains(q), + ) + ) + + if transport_no: + query = query.filter(PlTransport.transport_no.contains(transport_no)) + + if transport_status: + query = query.filter(PlTransport.transport_status == transport_status) + + if approval_status: + query = query.filter(PlTransport.approval_status == approval_status) + + if vehicle_id: + query = query.filter(PlTransport.vehicle_id == vehicle_id) + + if driver_id: + query = query.filter(PlTransport.driver_id == driver_id) + + total = query.count() + offset = (page - 1) * page_size + transports = query.order_by(PlTransport.create_time.desc()).offset(offset).limit(page_size).all() + + return TransportListResponse(total=total, list=transports) + + +# ============================================================================= +# 创建运输 +# ============================================================================= + + +@router.post("/", response_model=TransportRead, status_code=status.HTTP_201_CREATED) +def create_transport( + payload: TransportCreate, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> TransportRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + transport_no = _generate_transport_no(db) + + transport = PlTransport( + id=generate_uuid(), + tenant_no=tenant_no, + transport_no=transport_no, + vehicle_id=payload.vehicle_id, + license_plate=payload.license_plate, + driver_id=payload.driver_id, + driver_name=payload.driver_name, + driver_phone=payload.driver_phone, + carrier_id=payload.carrier_id, + carrier_name=payload.carrier_name, + transport_medium=payload.transport_medium, + start_point=payload.start_point, + end_point=payload.end_point, + distance_km=payload.distance_km, + unit=payload.unit, + freight_price=payload.freight_price, + freight_amount=payload.freight_amount, + freight_type=payload.freight_type, + has_invoice=payload.has_invoice, + qr_expire_date=payload.qr_expire_date, + transport_status=payload.transport_status or "draft", + approval_status=payload.approval_status or "none", + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(transport) + + # 关联计划 + if payload.plan_ids: + for pid in payload.plan_ids: + pt = PlPlanTransport( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=pid, + transport_id=transport.id, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(pt) + + # 更新计划关联的运输信息 + plan = db.query(PlPlan).filter(PlPlan.id == pid, PlPlan.del_flag == 0).first() + if plan: + plan.transport_id = transport.id + plan.transport_no = transport_no + plan.vehicle_id = transport.vehicle_id + plan.license_plate = transport.license_plate + plan.driver_id = transport.driver_id + plan.driver_name = transport.driver_name + + db.commit() + db.refresh(transport) + return transport + + +# ============================================================================= +# 运输安排 +# ============================================================================= + + +@router.post("/arrange/{plan_id}", response_model=TransportArrangeResult, status_code=status.HTTP_201_CREATED) +def arrange_transport( + plan_id: str, + payload: TransportArrange, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> TransportArrangeResult: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + # 获取计划 + plan = db.query(PlPlan).filter( + PlPlan.id == plan_id, + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + ).first() + if not plan: + raise HTTPException(status_code=404, detail="计划不存在") + + # 获取车辆信息 + vehicle_info = _get_vehicle_info(db, payload.vehicle_id, tenant_no) + + # 获取司机信息(driverId 为人员 pl_personnel.id) + driver_info = _resolve_driver_info(db, tenant_no, payload.driver_id) + if not driver_info: + raise HTTPException(status_code=400, detail="司机不存在") + + # 检查产品属性(易制毒/易制爆需要证件) + products = db.query(PlPlanProduct).filter( + PlPlanProduct.plan_id == plan_id, + PlPlanProduct.del_flag == 0, + ).all() + + for prod in products: + if prod.is_explosive or prod.is_toxic: + if not prod.purchase_cert_url or not prod.transport_cert_url: + raise HTTPException( + status_code=400, + detail=f"产品【{prod.product_name}】为{'易制爆' if prod.is_explosive else '易制毒'},必须上传购买证和运输证" + ) + + # 计算运费 + freight_amount = payload.freight_amount + if payload.freight_type == "by_weight" and payload.freight_price: + total_qty = sum( + float(p.quantity or p.inbound_estimate_qty or p.outbound_estimate_qty or 0) + for p in products + ) + freight_amount = total_qty * float(payload.freight_price) + + carrier_name = vehicle_info.get("carrier_name") + if payload.carrier_id: + carrier = db.query(PlCarrier).filter(PlCarrier.id == payload.carrier_id).first() + if carrier: + carrier_name = carrier.carrier_name + + existing_transport = None + if plan.transport_id: + existing_transport = db.query(PlTransport).filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ).first() + + if existing_transport and existing_transport.transport_status == "draft": + transport = existing_transport + transport.vehicle_id = payload.vehicle_id + transport.license_plate = vehicle_info.get("license_plate") + transport.driver_id = driver_info["id"] + transport.driver_name = driver_info["name"] + transport.driver_phone = driver_info["phone"] + transport.carrier_id = payload.carrier_id or vehicle_info.get("carrier_id") + transport.carrier_name = carrier_name + transport.transport_medium = payload.transport_medium + transport.start_point = payload.start_point or plan.pickup_address + transport.end_point = payload.end_point or plan.destination_address or plan.destination_name + transport.distance_km = payload.distance_km + transport.unit = payload.unit or ("吨" if payload.freight_type == "by_weight" else "趟") + transport.freight_price = payload.freight_price + transport.freight_amount = freight_amount or 0 + transport.freight_type = payload.freight_type + transport.has_invoice = payload.has_invoice + if payload.remark is not None: + transport.remark = payload.remark + transport.update_by = user.id + transport_no = transport.transport_no + else: + transport_no = _generate_transport_no(db) + transport = PlTransport( + id=generate_uuid(), + tenant_no=tenant_no, + transport_no=transport_no, + vehicle_id=payload.vehicle_id, + license_plate=vehicle_info.get("license_plate"), + driver_id=driver_info["id"], + driver_name=driver_info["name"], + driver_phone=driver_info["phone"], + carrier_id=payload.carrier_id or vehicle_info.get("carrier_id"), + carrier_name=carrier_name, + transport_medium=payload.transport_medium, + start_point=payload.start_point or plan.pickup_address, + end_point=payload.end_point or plan.destination_address or plan.destination_name, + distance_km=payload.distance_km, + unit=payload.unit or ("吨" if payload.freight_type == "by_weight" else "趟"), + freight_price=payload.freight_price, + freight_amount=freight_amount or 0, + freight_type=payload.freight_type, + has_invoice=payload.has_invoice, + qr_expire_date=payload.qr_expire_date, + transport_status="draft", + approval_status="none", + remark=payload.remark, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(transport) + + pt = PlPlanTransport( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=plan_id, + transport_id=transport.id, + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(pt) + + # 更新计划 + plan.transport_id = transport.id + plan.transport_no = transport_no + plan.vehicle_id = transport.vehicle_id + plan.license_plate = transport.license_plate + plan.driver_id = transport.driver_id + plan.driver_name = transport.driver_name + plan.transport_status = "arranged" + plan.freight_amount = freight_amount or 0 + + _ensure_driver_access_token(transport) + + inventory_records: list[TransportInventoryLinkRead] = [] + if payload.generate_dibang_plan: + if plan.plan_type not in ("inbound", "outbound"): + raise HTTPException(status_code=400, detail="直销单不支持生成地磅计划") + try: + link_results = sync_dibang_for_transport( + db, + tenant_no=tenant_no, + plan=plan, + products=products, + transport=transport, + user_id=user.id, + dept_id=user.dept_id, + ) + inventory_records = [ + TransportInventoryLinkRead( + plan_product_id=item.plan_product_id, + product_name=item.product_name, + db_purchase_plan_id=item.db_purchase_plan_id, + db_inventory_id=item.db_inventory_id, + batch_no=item.batch_no, + plan_no=item.plan_no, + ) + for item in link_results + ] + except ValueError as exc: + db.rollback() + raise HTTPException(status_code=400, detail=str(exc)) from exc + + db.commit() + db.refresh(transport) + return _build_arrange_result(transport, inventory_records) + + +# ============================================================================= +# 获取运输详情 +# ============================================================================= + + +@router.get("/{id}", response_model=TransportRead) +def get_transport( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> TransportRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + transport = _get_transport(db, tenant_no, id) + return transport + + +# ============================================================================= +# 生成二维码 +# ============================================================================= + + +class QrCodeResponse(BaseModel): + transport_id: str = Field(alias="transportId") + transport_no: str = Field(alias="transportNo") + qr_code: str = Field(alias="qrCode") + expire_date: Optional[date] = Field(default=None, alias="expireDate") + + model_config = {"from_attributes": True, "populate_by_name": True} + + +@router.get("/{id}/qrcode", response_model=QrCodeResponse) +def generate_qrcode( + id: str, + expire_days: int = Query(default=30, ge=1, le=365, description="有效期天数"), + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> QrCodeResponse: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + transport = _get_transport(db, tenant_no, id) + + from datetime import timedelta + expire_date = date.today() + timedelta(days=expire_days) + + # 生成二维码内容(URL scheme) + qr_content = f"/transport/scan/{transport.id}?code={transport.transport_no}" + + transport.qr_code = qr_content + transport.qr_expire_date = expire_date + db.commit() + + return QrCodeResponse( + transport_id=transport.id, + transport_no=transport.transport_no, + qr_code=qr_content, + expire_date=expire_date, + ) + + +# ============================================================================= +# 司机扫码回传(无需登录) +# ============================================================================= + + +@router.post("/scan/feedback") +def transport_scan_feedback( + payload: TransportFeedback, + db: Session = Depends(get_db), +) -> dict: + """司机扫码回传,无需登录""" + transport = ( + db.query(PlTransport) + .filter( + PlTransport.transport_no == payload.transport_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if not transport: + raise HTTPException(status_code=404, detail="运输单不存在") + + if payload.verify_code and payload.verify_code != transport.transport_no: + raise HTTPException(status_code=400, detail="验证码错误") + + # 更新回传信息 + if payload.feedback_qty: + transport.feedback_qty = payload.feedback_qty + + if payload.feedback_images: + transport.feedback_images = json.dumps(payload.feedback_images) + + if payload.feedback_remark: + transport.feedback_remark = payload.feedback_remark + + transport.feedback_time = datetime.now() + db.commit() + + return {"success": True, "message": "回传成功"} + + +# ============================================================================= +# 提交审批 +# ============================================================================= + + +@router.post("/{id}/submit-approval", response_model=TransportRead) +def submit_approval( + id: str, + payload: ApprovalSubmit, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> TransportRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + transport = _get_transport(db, tenant_no, id) + + if transport.approval_status not in ("none", "rejected"): + raise HTTPException(status_code=400, detail="当前状态不允许提交审批") + + # 创建审批记录 + for idx, approver_id in enumerate(payload.approver_ids): + from app.models.models import SysUser + + approver = db.query(SysUser).filter(SysUser.id == approver_id).first() + if not approver: + raise HTTPException(status_code=400, detail=f"审批人不存在: {approver_id}") + + approval = PlTransportApproval( + id=generate_uuid(), + tenant_no=tenant_no, + transport_id=id, + approver_id=approver_id, + approver_name=approver.nick_name, + approval_order=idx + 1, + status="pending", + create_by=user.id, + create_dept_id=user.dept_id, + ) + db.add(approval) + + transport.approval_status = "pending" + db.commit() + db.refresh(transport) + return transport + + +# ============================================================================= +# 审批 +# ============================================================================= + + +@router.post("/approval/{id}", response_model=ApprovalRecordRead) +def process_approval( + id: str, + payload: ApprovalRequest, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> ApprovalRecordRead: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + approval = ( + db.query(PlTransportApproval) + .filter( + PlTransportApproval.id == id, + PlTransportApproval.tenant_no == tenant_no, + PlTransportApproval.del_flag == 0, + ) + .first() + ) + if not approval: + raise HTTPException(status_code=404, detail="审批记录不存在") + + if approval.status != "pending": + raise HTTPException(status_code=400, detail="该审批已处理") + + # 更新审批状态 + from datetime import datetime + + approval.status = "approved" if payload.action == "approve" else "rejected" + approval.comment = payload.comment + approval.approval_time = datetime.now() + + # 更新运输审批状态 + transport = db.query(PlTransport).filter(PlTransport.id == approval.transport_id).first() + if transport: + if payload.action == "approve": + # 检查是否所有审批人都通过了 + pending = ( + db.query(PlTransportApproval) + .filter( + PlTransportApproval.transport_id == approval.transport_id, + PlTransportApproval.status == "pending", + PlTransportApproval.del_flag == 0, + ) + .count() + ) + if pending == 0: + transport.approval_status = "approved" + transport.transport_status = "pending" + else: + transport.approval_status = "rejected" + transport.transport_status = "draft" + + db.commit() + db.refresh(approval) + return approval + + +# ============================================================================= +# 获取运输的审批记录 +# ============================================================================= + + +@router.get("/{id}/approvals", response_model=list[ApprovalRecordRead]) +def get_transport_approvals( + id: str, + db: Session = Depends(get_db), + user: DbUserContext = Depends(get_db_current_user), +) -> list[ApprovalRecordRead]: + tenant_no = get_tenant_no(db, user.to_tenant_user_dict()) + + approvals = ( + db.query(PlTransportApproval) + .filter( + PlTransportApproval.transport_id == id, + PlTransportApproval.tenant_no == tenant_no, + PlTransportApproval.del_flag == 0, + ) + .order_by(PlTransportApproval.approval_order) + .all() + ) + return approvals + + +# ============================================================================= +# 辅助函数 +# ============================================================================= + + +def _get_transport(db: Session, tenant_no: str, transport_id: str) -> PlTransport: + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if not transport: + raise HTTPException(status_code=404, detail="运输不存在") + return transport diff --git a/backend/app/core/config.py b/backend/app/core/config.py index 46d802e1b..f1d8282c3 100644 --- a/backend/app/core/config.py +++ b/backend/app/core/config.py @@ -115,6 +115,9 @@ class Settings(BaseSettings): # 临时文件目录 TEMP_FILE_DIR: str = "temp_files" + # 司机免登录 H5 页面 Origin(用于拼接 driverUrl) + PUBLIC_WEB_ORIGIN: str = "http://localhost:3006" + # 全量 API 请求日志(中间件写入 sys_api_request_log) API_REQUEST_LOG_ENABLED: bool = True API_REQUEST_LOG_MAX_BODY: int = 65536 @@ -146,7 +149,8 @@ class Settings(BaseSettings): "/api/advances," "/api/reimburses," "/api/payments," - "/api/attachments" + "/api/attachments," + "/api/public/pl/transport" ) class Config: diff --git a/backend/app/crud/crm/product.py b/backend/app/crud/crm/product.py index 625ae9907..b6bcc803f 100644 --- a/backend/app/crud/crm/product.py +++ b/backend/app/crud/crm/product.py @@ -281,6 +281,8 @@ def _product_row_to_dict(row: CrmProduct) -> Dict[str, Any]: "stock": row.stock if row.stock is not None else 0, "lowStock": row.low_stock if row.low_stock is not None else 10, "taxRate": float(row.tax_rate) if row.tax_rate is not None else 13.0, + "isToxic": int(row.is_toxic or 0), + "isExplosive": int(row.is_explosive or 0), "status": row.status, "description": row.description or "", "images": row.images or "", @@ -456,6 +458,8 @@ def create_product( stock=kwargs.get("stock", 0), low_stock=kwargs.get("low_stock", 10), tax_rate=kwargs.get("tax_rate", Decimal("13.00")), + is_toxic=int(kwargs.get("is_toxic") or 0), + is_explosive=int(kwargs.get("is_explosive") or 0), status=kwargs.get("status", "on"), description=kwargs.get("description"), images=kwargs.get("images"), @@ -496,6 +500,8 @@ def update_product( "stock", "low_stock", "tax_rate", + "is_toxic", + "is_explosive", "status", "description", "images", diff --git a/backend/app/main.py b/backend/app/main.py index 06ac5c477..f70f2d777 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -15,6 +15,7 @@ from app.core.api_crypto_middleware import ApiCryptoMiddleware from app.models import models # noqa: F401 import app.models.bx_models # noqa: F401 import app.models.db_models # noqa: F401 +import app.models.pl_models # noqa: F401 from app.api import ( public_router, menu_router, @@ -26,6 +27,8 @@ from app.api import ( bx_router, db_router, ) +from app.api.pl import pl_router +from app.api.pl.public_transport import router as public_pl_transport_router @asynccontextmanager @@ -111,6 +114,7 @@ async def unhandled_exception_handler(request: Request, exc: Exception): app.include_router(public_router, prefix=settings.API_V1_PREFIX) +app.include_router(public_pl_transport_router, prefix=settings.API_V1_PREFIX) app.include_router(menu_router, prefix=settings.API_V1_PREFIX) app.include_router(admin_router, prefix=settings.API_V1_PREFIX) app.include_router(workflow_router, prefix=settings.API_V1_PREFIX) @@ -118,6 +122,7 @@ app.include_router(leave_router, prefix=settings.API_V1_PREFIX) app.include_router(crm_router, prefix=settings.API_V1_PREFIX) app.include_router(bx_router, prefix=settings.API_V1_PREFIX) app.include_router(db_router, prefix=settings.API_V1_PREFIX) +app.include_router(pl_router, prefix=settings.API_V1_PREFIX) app.include_router(monitor_router, prefix=settings.API_V1_PREFIX) diff --git a/backend/app/models/__init__.py b/backend/app/models/__init__.py index f52ab68a1..8ac99fc2c 100644 --- a/backend/app/models/__init__.py +++ b/backend/app/models/__init__.py @@ -27,6 +27,29 @@ from app.models.models import ( WfTask, UserRole, ) +from app.models.pl_models import ( + PlCarrier, + PlVehicle, + PlDriver, + PlPersonnel, + PlCert, + PlVehicleDriver, + PlVehiclePersonnel, + PlPlan, + PlPlanProduct, + PlPlanChange, + PlTransport, + PlTransportDbLink, + PlPlanTransport, + PlTransportApproval, + PlFreightSettlement, + PlFreightSettlementTransport, + PlRemittanceVoucher, + PlInventory, + PlInventoryTransaction, + PlInventoryWarning, + PlDocumentReminder, +) User = SysUser ApiRequestLog = SysApiRequestLog @@ -34,6 +57,7 @@ ApiRequestLog = SysApiRequestLog __all__ = [ "BaseModel", "SoftDeleteModel", + # System models "SysUser", "SysRole", "SysUserRole", @@ -61,4 +85,26 @@ __all__ = [ "UserRole", "User", "ApiRequestLog", + # Transport Plan models + "PlCarrier", + "PlVehicle", + "PlDriver", + "PlPersonnel", + "PlCert", + "PlVehicleDriver", + "PlVehiclePersonnel", + "PlPlan", + "PlPlanProduct", + "PlPlanChange", + "PlTransport", + "PlTransportDbLink", + "PlPlanTransport", + "PlTransportApproval", + "PlFreightSettlement", + "PlFreightSettlementTransport", + "PlRemittanceVoucher", + "PlInventory", + "PlInventoryTransaction", + "PlInventoryWarning", + "PlDocumentReminder", ] diff --git a/backend/app/models/bx_models.py b/backend/app/models/bx_models.py index a6b167966..0aaaf3690 100644 --- a/backend/app/models/bx_models.py +++ b/backend/app/models/bx_models.py @@ -1,7 +1,7 @@ """报销(bx)模块数据模型 — 对齐 docs/sql/20260606_bx_tables.sql""" from datetime import datetime -from sqlalchemy import BigInteger, Column, DateTime, DECIMAL, ForeignKey, Integer, SmallInteger, String +from sqlalchemy import BigInteger, Column, Date, DateTime, DECIMAL, ForeignKey, Integer, SmallInteger, String from sqlalchemy.orm import relationship from app.core.database import Base @@ -154,6 +154,8 @@ class BxReimburseApply(Base): id = Column(String(64), primary_key=True, comment="主键ID(UUID)") apply_code = Column(String(32), nullable=False, comment="报销单号") title = Column(String(256), nullable=False, comment="报销标题") + reimburse_date = Column(Date, nullable=False, comment="报销日期") + title_seq = Column(Integer, nullable=True, comment="标题序号(同租户同报销日期下自增)") applicant_id = Column(String(64), nullable=False, comment="申请人用户ID") applicant_name = Column(String(64), nullable=False, comment="申请人姓名") expense_id = Column(String(64), nullable=False, comment="费用项目ID") diff --git a/backend/app/models/crm_models.py b/backend/app/models/crm_models.py index 460450555..d6ba3b486 100644 --- a/backend/app/models/crm_models.py +++ b/backend/app/models/crm_models.py @@ -58,6 +58,8 @@ class CrmProduct(Base): stock = Column(Integer, nullable=False, default=0, comment="库存数量") low_stock = Column(Integer, nullable=False, default=10, comment="库存预警值") tax_rate = Column(DECIMAL(5, 2), nullable=False, default=13.00, comment="税率(百分比)") + is_toxic = Column(SmallInteger, nullable=False, default=0, comment="是否易制毒 0-否 1-是") + is_explosive = Column(SmallInteger, nullable=False, default=0, comment="是否易制爆 0-否 1-是") status = Column(String(3), nullable=False, default="on", comment="状态 on 上架 off 下架") description = Column(Text, nullable=True, comment="产品描述") images = Column(String(1000), nullable=True, comment="产品图片(多个用逗号分隔)") diff --git a/backend/app/models/pl_models.py b/backend/app/models/pl_models.py new file mode 100644 index 000000000..856e795ef --- /dev/null +++ b/backend/app/models/pl_models.py @@ -0,0 +1,677 @@ +"""运输计划管理模块数据模型""" +from datetime import datetime +from decimal import Decimal + +from sqlalchemy import ( + BigInteger, + Column, + DECIMAL, + Date, + DateTime, + Integer, + SmallInteger, + String, + Text, + CHAR, + ForeignKey, +) +from sqlalchemy.orm import relationship + +from app.core.database import Base + + +# ============================================================================= +# 1. 基础数据:承运商、车辆、司机 +# ============================================================================= + + +class PlCarrier(Base): + """承运商表 pl_carrier""" + + __tablename__ = "pl_carrier" + + id = Column(String(64), primary_key=True, comment="主键ID") + carrier_name = Column(String(200), nullable=False, comment="承运商名称") + contact_name = Column(String(100), nullable=True, comment="联系人") + contact_phone = Column(String(32), nullable=True, comment="联系电话") + status = Column(CHAR(1), nullable=False, default="1", comment="合作状态 1-合作中 0-已终止") + 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 PlVehicle(Base): + """车辆表 pl_vehicle""" + + __tablename__ = "pl_vehicle" + + id = Column(String(64), primary_key=True, comment="主键ID") + vehicle_type = Column(String(20), nullable=False, comment="车辆类型 self-自有 carrier-承运商") + carrier_id = Column(String(64), nullable=True, comment="承运商ID(类型为承运商时必填)") + carrier_name = Column(String(200), nullable=True, comment="承运商名称(冗余)") + license_plate = Column(String(20), nullable=False, unique=True, comment="车牌号") + default_driver_id = Column(String(64), nullable=True, comment="默认司机ID") + default_driver_name = Column(String(100), nullable=True, comment="默认司机姓名(冗余)") + load_capacity = Column(DECIMAL(10, 2), nullable=True, comment="载重(吨)") + vehicle_status = Column(String(20), nullable=False, default="available", comment="车辆状态 available-可用 maintaining-维修中 scrapped-报废") + 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 PlPersonnel(Base): + """人员表 pl_personnel""" + + __tablename__ = "pl_personnel" + + id = Column(String(64), primary_key=True, comment="主键ID") + personnel_name = Column(String(100), nullable=False, comment="姓名") + phone_no = Column(String(32), nullable=True, comment="手机号(非必填)") + age = Column(Integer, nullable=True, comment="年龄") + id_card_no = Column(String(32), nullable=True, comment="身份证号") + status = Column(CHAR(1), nullable=False, default="1", comment="状态 1-在职 0-停用") + 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 PlCert(Base): + """证书表 pl_cert""" + + __tablename__ = "pl_cert" + + id = Column(String(64), primary_key=True, comment="主键ID") + owner_type = Column(String(20), nullable=False, comment="归属类型 vehicle-车辆 personnel-人员") + owner_id = Column(String(64), nullable=False, comment="归属主体ID") + cert_name = Column(String(100), nullable=False, comment="证书名称") + cert_no = Column(String(64), nullable=True, comment="证号") + expire_date = Column(Date, nullable=True, comment="有效期") + remind_days = Column(Integer, nullable=False, default=30, comment="提前提醒天数") + attachment_urls = Column(String(2000), nullable=True, comment="附件URL(逗号分隔)") + status = Column(String(20), nullable=False, default="valid", comment="状态 valid-有效 expired-已过期 revoked-已作废") + 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 PlDriver(Base): + """司机表 pl_driver(兼容旧表,迁移后逐步废弃)""" + + __tablename__ = "pl_driver" + + id = Column(String(64), primary_key=True, comment="主键ID") + driver_name = Column(String(100), nullable=False, comment="姓名") + phone_no = Column(String(32), nullable=False, comment="手机号") + id_card_no = Column(String(32), nullable=True, comment="身份证号") + driving_license_no = Column(String(32), nullable=True, comment="驾驶证号") + driving_license_expire = Column(Date, nullable=True, comment="驾驶证有效期") + vehicle_license_no = Column(String(32), nullable=True, comment="行驶证号") + vehicle_license_expire = Column(Date, nullable=True, comment="行驶证有效期") + hazmat_cert_no = Column(String(32), nullable=True, comment="危化品证号") + hazmat_cert_expire = Column(Date, nullable=True, comment="危化品证有效期") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlVehiclePersonnel(Base): + """车辆-人员关联表 pl_vehicle_personnel""" + + __tablename__ = "pl_vehicle_personnel" + + id = Column(String(64), primary_key=True, comment="主键ID") + vehicle_id = Column(String(64), nullable=False, comment="车辆ID") + personnel_id = Column(String(64), nullable=False, comment="人员ID") + role = Column(String(20), nullable=False, default="driver", comment="角色 driver-司机 escort-押运员") + is_default = Column(SmallInteger, nullable=False, default=0, comment="是否默认司机 0-否 1-是") + 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 PlVehicleDriver(Base): + """车辆-司机关联表 pl_vehicle_driver(兼容旧表)""" + + __tablename__ = "pl_vehicle_driver" + + id = Column(String(64), primary_key=True, comment="主键ID") + vehicle_id = Column(String(64), nullable=False, comment="车辆ID") + driver_id = Column(String(64), nullable=False, comment="司机ID") + is_default = Column(SmallInteger, nullable=False, default=0, comment="是否默认 0-否 1-是") + 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-已删除") + + +# ============================================================================= +# 2. 计划管理:计划主表、产品明细、变更记录 +# ============================================================================= + + +class PlPlan(Base): + """计划主表 pl_plan""" + + __tablename__ = "pl_plan" + + id = Column(String(64), primary_key=True, comment="主键ID") + + # 编号信息 + plan_no = Column(String(32), nullable=False, unique=True, comment="计划订单编号 SXDDHYYYYMMDD######") + plan_date = Column(Date, nullable=False, comment="计划日期") + + # 基本信息 + belongs_company = Column(String(20), nullable=False, comment="归属公司 shanxia-安庆山峡 yundong-安徽云栋") + plan_type = Column(String(20), nullable=False, comment="单据类型 direct-直销单 inbound-入库单 outbound-出库单") + follow_status = Column(String(30), nullable=False, default="draft", comment="跟进状态") + transport_status = Column(String(20), nullable=False, default="pending", comment="运输安排状态 pending-待安排 arranged-已安排") + archive_status = Column(String(20), nullable=False, default="unarchived", comment="归档状态 unarchived-未归档 archived-已归档") + complete_status = Column(String(10), nullable=False, default="no", comment="完成状态 yes-是 no-否") + + # 合同关联 + contract_id = Column(String(64), nullable=True, comment="CRM合同ID") + contract_no = Column(String(50), nullable=True, comment="合同编号") + + # 供应商与目的地 + supplier_id = Column(String(64), nullable=True, comment="供应商ID") + supplier_name = Column(String(200), nullable=True, comment="供应商名称") + destination_id = Column(String(64), nullable=True, comment="目的地ID") + destination_name = Column(String(200), nullable=True, comment="目的地名称") + + # 客户信息(冗余自合同) + customer_id = Column(String(64), nullable=True, comment="客户ID") + customer_name = Column(String(200), nullable=True, comment="客户名称") + contact_name = Column(String(100), nullable=True, comment="联系人") + contact_phone = Column(String(32), nullable=True, comment="联系电话") + party_a = Column(String(200), nullable=True, comment="甲方") + party_b = Column(String(200), nullable=True, comment="乙方") + + # 合同有效期 + contract_start_date = Column(Date, nullable=True, comment="合同开始日期") + contract_end_date = Column(Date, nullable=True, comment="合同结束日期") + + # 送货与结算 + delivery_method = Column(String(20), nullable=True, comment="送货方式 self_pick-山峡自提 one_ticket-一票制 customer_pick-客户自提") + settlement_method = Column(String(50), nullable=True, comment="结算方式") + + # 运输信息 + has_freight = Column(SmallInteger, nullable=False, default=0, comment="是否有运输费用 0-否 1-是") + pickup_address = Column(String(500), nullable=True, comment="取货地址") + pickup_time = Column(DateTime, nullable=True, comment="取货时间") + pickup_notes = Column(String(500), nullable=True, comment="取货注意事项") + destination_address = Column(String(500), nullable=True, comment="目的地地址") + delivery_time = Column(DateTime, nullable=True, comment="送达时间") + destination_notes = Column(String(500), nullable=True, comment="目的地注意事项") + transport_id = Column(String(64), nullable=True, comment="运输ID") + transport_no = Column(String(32), nullable=True, comment="运输编号") + vehicle_id = Column(String(64), nullable=True, comment="车辆ID") + license_plate = Column(String(20), nullable=True, comment="车牌号") + driver_id = Column(String(64), nullable=True, comment="司机ID") + driver_name = Column(String(100), nullable=True, comment="司机姓名") + + # 金额汇总 + total_amount = Column(DECIMAL(15, 2), nullable=False, default=0, comment="计划总金额") + freight_amount = Column(DECIMAL(15, 2), nullable=False, default=0, comment="运费合计") + + # 通知信息 + notify_message = Column(Text, nullable=True, comment="通知信息(标准模板)") + + # 跟进人 + follow_user_id = Column(String(64), nullable=True, comment="跟进人ID") + follow_user_name = Column(String(100), nullable=True, comment="跟进人姓名") + + # 公共字段 + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlPlanProduct(Base): + """计划产品明细表 pl_plan_product""" + + __tablename__ = "pl_plan_product" + + id = Column(String(64), primary_key=True, comment="主键ID") + plan_id = Column(String(64), nullable=False, comment="计划ID") + + # 产品信息 + product_id = Column(String(64), nullable=False, comment="产品ID") + product_no = Column(String(50), nullable=False, comment="产品编号") + product_name = Column(String(200), nullable=False, comment="产品名称") + model = Column(String(100), nullable=True, comment="规格型号") + unit = Column(String(20), nullable=False, default="吨", comment="单位") + category_name = Column(String(200), nullable=True, comment="产品分类") + package_spec = Column(String(200), nullable=True, comment="包装规格") + delivery_method = Column(String(50), nullable=True, comment="送货方式") + quantity = Column(DECIMAL(15, 3), nullable=True, comment="合同数量") + actual_qty = Column(DECIMAL(15, 3), nullable=True, comment="实际数量") + tax_price = Column(DECIMAL(15, 4), nullable=True, comment="含税单价") + tax_amount = Column(DECIMAL(15, 2), nullable=True, comment="税费") + tax_subtotal = Column(DECIMAL(15, 2), nullable=True, comment="含税总价") + + # 产品属性(冗余自产品主数据) + is_explosive = Column(SmallInteger, nullable=False, default=0, comment="是否易制爆 0-否 1-是") + is_toxic = Column(SmallInteger, nullable=False, default=0, comment="是否易制毒 0-否 1-是") + + # 购买证/运输证 + purchase_cert_url = Column(String(500), nullable=True, comment="购买证URL") + transport_cert_url = Column(String(500), nullable=True, comment="运输证URL") + + # 入库信息 + inbound_estimate_qty = Column(DECIMAL(15, 3), nullable=True, comment="入库预估数") + inbound_qty = Column(DECIMAL(15, 3), nullable=True, comment="入库数") + inbound_price = Column(DECIMAL(15, 4), nullable=True, comment="入库价") + inbound_amount = Column(DECIMAL(15, 2), nullable=True, comment="入库金额") + + # 出库信息 + outbound_estimate_qty = Column(DECIMAL(15, 3), nullable=True, comment="出库预估数") + outbound_qty = Column(DECIMAL(15, 3), nullable=True, comment="出库数") + outbound_price = Column(DECIMAL(15, 4), nullable=True, comment="出库单价") + outbound_amount = Column(DECIMAL(15, 2), nullable=True, comment="出库金额") + + # 公共字段 + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlPlanChange(Base): + """计划变更记录表 pl_plan_change""" + + __tablename__ = "pl_plan_change" + + id = Column(String(64), primary_key=True, comment="主键ID") + plan_id = Column(String(64), nullable=False, comment="计划ID") + change_type = Column(String(30), nullable=False, comment="变更类型") + change_content = Column(Text, nullable=True, comment="变更内容") + change_user_id = Column(String(64), nullable=True, comment="变更人ID") + change_user_name = Column(String(100), nullable=True, comment="变更人姓名") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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-已删除") + + +# ============================================================================= +# 3. 运输管理:运输表、审批记录 +# ============================================================================= + + +class PlTransport(Base): + """运输表 pl_transport""" + + __tablename__ = "pl_transport" + + id = Column(String(64), primary_key=True, comment="主键ID") + transport_no = Column(String(32), nullable=False, unique=True, comment="运输编号 SXYS######") + + # 车辆与司机 + vehicle_id = Column(String(64), nullable=True, comment="车辆ID") + license_plate = Column(String(20), nullable=True, comment="车牌号") + driver_id = Column(String(64), nullable=True, comment="司机ID") + driver_name = Column(String(100), nullable=True, comment="司机姓名") + driver_phone = Column(String(32), nullable=True, comment="司机电话") + + # 承运商 + carrier_id = Column(String(64), nullable=True, comment="承运商ID") + carrier_name = Column(String(200), nullable=True, comment="承运商名称") + + # 运输信息 + transport_medium = Column(String(100), nullable=True, comment="运输介质") + start_point = Column(String(200), nullable=True, comment="运输起点") + end_point = Column(String(200), nullable=True, comment="运输终点") + distance_km = Column(DECIMAL(10, 2), nullable=True, comment="运输公里数") + unit = Column(String(20), nullable=True, comment="计量单位 吨/趟") + transport_qty = Column(DECIMAL(15, 3), nullable=True, comment="运输量(按重量计费基数)") + + # 运费 + freight_price = Column(DECIMAL(15, 4), nullable=True, comment="运输单价") + freight_amount = Column(DECIMAL(15, 2), nullable=False, default=0, comment="运输费用") + freight_type = Column(String(20), nullable=False, default="by_weight", comment="运费计算方式 by_weight-按重量 by_trip-按趟次") + has_invoice = Column(SmallInteger, nullable=False, default=0, comment="是否开票 0-否 1-是") + + # 二维码 + qr_code = Column(String(500), nullable=True, comment="二维码内容") + qr_expire_date = Column(Date, nullable=True, comment="二维码有效期") + driver_access_token = Column(String(64), nullable=True, comment="司机免登录访问令牌") + + # 运输状态 + transport_status = Column(String(20), nullable=False, default="draft", comment="运输状态 draft-草稿 pending-待执行 executing-执行中 completed-已完成 cancelled-已取消") + approval_status = Column(String(20), nullable=False, default="none", comment="审批状态 none-无需 pending-审批中 approved-已通过 rejected-已拒绝") + + # 司机回传信息 + feedback_time = Column(DateTime, nullable=True, comment="回传时间") + feedback_qty = Column(DECIMAL(15, 3), nullable=True, comment="回传数量") + feedback_images = Column(Text, nullable=True, comment="回传图片URLs(JSON数组)") + feedback_remark = Column(String(500), nullable=True, comment="回传备注") + + # 公共字段 + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlTransportDbLink(Base): + """运输-地磅出入库关联 pl_transport_db_link""" + + __tablename__ = "pl_transport_db_link" + + id = Column(String(64), primary_key=True, comment="主键ID") + transport_id = Column(String(64), nullable=False, comment="运输单ID") + plan_id = Column(String(64), nullable=False, comment="运输计划ID") + plan_product_id = Column(String(64), nullable=False, comment="计划产品行ID") + db_purchase_plan_id = Column(String(64), nullable=False, comment="地磅计划ID") + db_inventory_id = Column(String(64), nullable=False, comment="出入库单ID") + 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 PlPlanTransport(Base): + """计划-运输关联表 pl_plan_transport""" + + __tablename__ = "pl_plan_transport" + + id = Column(String(64), primary_key=True, comment="主键ID") + plan_id = Column(String(64), nullable=False, comment="计划ID") + transport_id = Column(String(64), nullable=False, comment="运输ID") + 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 PlTransportApproval(Base): + """运输审批记录表 pl_transport_approval""" + + __tablename__ = "pl_transport_approval" + + id = Column(String(64), primary_key=True, comment="主键ID") + transport_id = Column(String(64), nullable=False, comment="运输ID") + approver_id = Column(String(64), nullable=False, comment="审批人ID") + approver_name = Column(String(100), nullable=False, comment="审批人姓名") + approval_order = Column(Integer, nullable=False, comment="审批顺序") + status = Column(String(20), nullable=False, default="pending", comment="审批状态 pending-待审批 approved-已通过 rejected-已拒绝") + comment = Column(String(500), nullable=True, comment="审批意见") + approval_time = Column(DateTime, nullable=True, comment="审批时间") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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-已删除") + + +# ============================================================================= +# 4. 运费结算 +# ============================================================================= + + +class PlFreightSettlement(Base): + """运费结算表 pl_freight_settlement""" + + __tablename__ = "pl_freight_settlement" + + id = Column(String(64), primary_key=True, comment="主键ID") + settlement_no = Column(String(32), nullable=False, unique=True, comment="结算单编号") + + # 结算金额 + total_freight = Column(DECIMAL(15, 2), nullable=False, default=0, comment="运费合计") + invoice_amount = Column(DECIMAL(15, 2), nullable=True, comment="发票金额") + + # 发票信息 + invoice_no = Column(String(50), nullable=True, comment="发票号") + invoice_date = Column(Date, nullable=True, comment="开票日期") + + # 结算状态 + settlement_status = Column(String(20), nullable=False, default="pending", comment="结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认") + + # 公共字段 + 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""" + + __tablename__ = "pl_freight_settlement_transport" + + id = Column(String(64), primary_key=True, comment="主键ID") + settlement_id = Column(String(64), nullable=False, comment="结算单ID") + transport_id = Column(String(64), nullable=False, comment="运输ID") + freight_amount = Column(DECIMAL(15, 2), nullable=False, comment="运费金额") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlRemittanceVoucher(Base): + """汇款凭证表 pl_remittance_voucher""" + + __tablename__ = "pl_remittance_voucher" + + id = Column(String(64), primary_key=True, comment="主键ID") + settlement_id = Column(String(64), nullable=False, comment="结算单ID") + voucher_no = Column(String(32), nullable=True, comment="凭证编号") + remittance_date = Column(Date, nullable=True, comment="汇款日期") + remittance_amount = Column(DECIMAL(15, 2), nullable=True, comment="汇款金额") + voucher_urls = Column(Text, nullable=True, comment="凭证文件URLs(JSON数组)") + 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-已删除") + + +# ============================================================================= +# 5. 库存管理 +# ============================================================================= + + +class PlInventory(Base): + """库存表 pl_inventory""" + + __tablename__ = "pl_inventory" + + id = Column(String(64), primary_key=True, comment="主键ID") + product_id = Column(String(64), nullable=False, comment="产品ID") + product_no = Column(String(50), nullable=False, comment="产品编号") + product_name = Column(String(200), nullable=False, comment="产品名称") + model = Column(String(100), nullable=True, comment="规格型号") + unit = Column(String(20), nullable=False, default="吨", comment="单位") + + # 库存数量与金额 + stock_qty = Column(DECIMAL(15, 3), nullable=False, default=0, comment="库存数量") + stock_amount = Column(DECIMAL(15, 2), nullable=False, default=0, comment="库存金额") + + # 预警阈值 + low_stock_warning = Column(DECIMAL(15, 3), nullable=True, comment="最低库存预警值") + high_stock_warning = Column(DECIMAL(15, 3), nullable=True, comment="最高库存预警值") + + # 公共字段 + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlInventoryTransaction(Base): + """库存流水表 pl_inventory_transaction""" + + __tablename__ = "pl_inventory_transaction" + + id = Column(String(64), primary_key=True, comment="主键ID") + product_id = Column(String(64), nullable=False, comment="产品ID") + product_name = Column(String(200), nullable=False, comment="产品名称") + transaction_type = Column(String(20), nullable=False, comment="事务类型 inbound-入库 outbound-出库") + plan_id = Column(String(64), nullable=True, comment="计划ID") + plan_no = Column(String(32), nullable=True, comment="计划编号") + + # 数量与价格 + qty = Column(DECIMAL(15, 3), nullable=False, comment="变动数量(正数入库/负数出库)") + unit_price = Column(DECIMAL(15, 4), nullable=False, comment="单价") + amount = Column(DECIMAL(15, 2), nullable=False, comment="金额") + stock_after = Column(DECIMAL(15, 3), nullable=False, comment="变动后库存") + + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlInventoryWarning(Base): + """库存预警表 pl_inventory_warning""" + + __tablename__ = "pl_inventory_warning" + + id = Column(String(64), primary_key=True, comment="主键ID") + product_id = Column(String(64), nullable=False, comment="产品ID") + product_name = Column(String(200), nullable=False, comment="产品名称") + warning_type = Column(String(20), nullable=False, comment="预警类型 low-低于最低 high-高于最高") + current_qty = Column(DECIMAL(15, 3), nullable=False, comment="当前库存") + threshold_value = Column(DECIMAL(15, 3), nullable=False, comment="阈值") + status = Column(String(20), nullable=False, default="pending", comment="状态 pending-待处理 resolved-已处理") + resolve_time = Column(DateTime, nullable=True, comment="处理时间") + resolve_remark = Column(String(500), nullable=True, comment="处理备注") + tenant_no = Column(String(64), nullable=False, default="shanxia2.0", comment="租户编号") + order_num = Column(Integer, nullable=True, comment="排序号") + remark = Column(String(512), nullable=True, comment="备注") + create_by = Column(String(64), nullable=True, comment="创建人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 PlDocumentReminder(Base): + """证件到期提醒表 pl_document_reminder""" + + __tablename__ = "pl_document_reminder" + + id = Column(String(64), primary_key=True, comment="主键ID") + cert_id = Column(String(64), nullable=True, comment="证书ID") + owner_type = Column(String(20), nullable=True, comment="归属类型 vehicle/personnel") + owner_id = Column(String(64), nullable=True, comment="归属主体ID") + owner_label = Column(String(200), nullable=True, comment="归属展示名(车牌/姓名)") + driver_id = Column(String(64), nullable=True, comment="司机/人员ID(兼容)") + driver_name = Column(String(100), nullable=True, comment="司机/人员姓名(兼容)") + document_type = Column(String(100), nullable=False, comment="证件类型/证书名称") + document_no = Column(String(50), nullable=True, comment="证件号") + expire_date = Column(Date, nullable=False, comment="到期日期") + days_remaining = Column(Integer, nullable=False, comment="剩余天数") + status = Column(String(20), nullable=False, default="pending", comment="状态 pending-待处理 resolved-已处理") + 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-已删除") diff --git a/backend/app/schemas/bx/common.py b/backend/app/schemas/bx/common.py index 2c234ceba..3f0047c70 100644 --- a/backend/app/schemas/bx/common.py +++ b/backend/app/schemas/bx/common.py @@ -1,5 +1,5 @@ """bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。""" -from datetime import datetime +from datetime import date, datetime from typing import Annotated, Generic, List, Optional, TypeVar from pydantic import BaseModel, ConfigDict, PlainSerializer @@ -14,8 +14,16 @@ def _dt_to_str(v: Optional[datetime]) -> Optional[str]: return v.strftime("%Y-%m-%d %H:%M:%S") +def _date_to_str(v: Optional[date]) -> Optional[str]: + if v is None: + return None + return v.strftime("%Y-%m-%d") + + DatetimeToStr = Annotated[datetime, PlainSerializer(_dt_to_str, return_type=str)] OptDatetimeToStr = Annotated[Optional[datetime], PlainSerializer(_dt_to_str, return_type=Optional[str])] +DateToStr = Annotated[date, PlainSerializer(_date_to_str, return_type=str)] +OptDateToStr = Annotated[Optional[date], PlainSerializer(_date_to_str, return_type=Optional[str])] class PagedQuery(BaseModel): diff --git a/backend/app/schemas/bx/reimburse.py b/backend/app/schemas/bx/reimburse.py index e4884b594..547a5bbd5 100644 --- a/backend/app/schemas/bx/reimburse.py +++ b/backend/app/schemas/bx/reimburse.py @@ -3,7 +3,7 @@ from typing import List, Optional from pydantic import BaseModel, ConfigDict, Field, field_validator from pydantic.alias_generators import to_camel -from app.schemas.bx.common import DatetimeToStr, OptDatetimeToStr +from app.schemas.bx.common import DatetimeToStr, OptDateToStr, OptDatetimeToStr def _coerce_id(value): @@ -42,6 +42,7 @@ class ReimburseApplyCreate(BaseModel): model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) title: Optional[str] = None + reimburse_date: Optional[str] = None details: List[ReimburseDetailCreate] = Field(..., min_length=1) remark: Optional[str] = None @@ -57,6 +58,8 @@ class ReimburseApplyUpdate(BaseModel): model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel) details: Optional[List[ReimburseDetailCreate]] = None + title: Optional[str] = None + reimburse_date: Optional[str] = None remark: Optional[str] = None @@ -68,6 +71,7 @@ class ReimburseApplyOut(BaseModel): applicant_id: str applicant_name: str title: str + reimburse_date: OptDateToStr = None expense_id: Optional[str] = None expense_name: str amount: float diff --git a/backend/app/schemas/crm/product.py b/backend/app/schemas/crm/product.py index 124390e14..5ffceafc3 100644 --- a/backend/app/schemas/crm/product.py +++ b/backend/app/schemas/crm/product.py @@ -88,6 +88,8 @@ class ProductCreateBody(BaseModel): stock: int = Field(default=0, description="库存数量") low_stock: int = Field(default=10, alias="lowStock", description="库存预警值") tax_rate: Decimal = Field(default=Decimal("13.00"), alias="taxRate", description="税率(%)") + is_toxic: int = Field(default=0, alias="isToxic", description="是否易制毒 0-否 1-是") + is_explosive: int = Field(default=0, alias="isExplosive", description="是否易制爆 0-否 1-是") status: str = Field(default="on", description="状态 on=上架 off=下架") description: Optional[str] = Field(default=None, description="产品描述") images: Optional[str] = Field(default=None, description="产品图片(逗号分隔 URL)") @@ -119,6 +121,8 @@ class ProductUpdateBody(BaseModel): stock: Optional[int] = Field(default=None, description="库存数量") low_stock: Optional[int] = Field(default=None, alias="lowStock", description="库存预警值") tax_rate: Optional[Decimal] = Field(default=None, alias="taxRate", description="税率(%)") + is_toxic: Optional[int] = Field(default=None, alias="isToxic", description="是否易制毒") + is_explosive: Optional[int] = Field(default=None, alias="isExplosive", description="是否易制爆") status: Optional[str] = Field(default=None, description="状态") description: Optional[str] = Field(default=None, description="产品描述") images: Optional[str] = Field(default=None, description="产品图片(逗号分隔 URL)") diff --git a/backend/app/schemas/pl/__init__.py b/backend/app/schemas/pl/__init__.py new file mode 100644 index 000000000..0687503cc --- /dev/null +++ b/backend/app/schemas/pl/__init__.py @@ -0,0 +1,169 @@ +"""运输计划管理 - Pydantic Schema""" +from app.schemas.pl.base_data import ( + CarrierBase, + CarrierCreate, + CarrierRead, + CarrierUpdate, + CertRead, + CertRow, + DriverBase, + DriverCreate, + DriverRead, + DriverUpdate, + PersonnelBase, + PersonnelCreate, + PersonnelDetailRead, + PersonnelRead, + PersonnelUpdate, + VehicleBase, + VehicleCreate, + VehicleDetailRead, + VehicleDriverCreate, + VehicleDriverRead, + VehiclePersonnelRow, + VehicleRead, + VehicleUpdate, +) +from app.schemas.pl.plan import ( + PlanBase, + PlanProductBase, + PlanProductCreate, + PlanProductUpdate, + PlanProductRead, + PlanCreate, + PlanUpdate, + PlanRead, + PlanWithProducts, + PlanListQuery, + PlanListResponse, + CreateFromContractRequest, + PlanCreateFull, + PlanTransportCreateBlock, +) +from app.schemas.pl.transport import ( + TransportBase, + TransportCreate, + TransportUpdate, + TransportRead, + TransportWithPlans, + TransportFeedback, + ApprovalSubmit, + ApprovalRequest, + ApprovalRecordRead, + TransportListQuery, + TransportListResponse, +) +from app.schemas.pl.freight import ( + FreightSettlementBase, + FreightSettlementCreate, + FreightSettlementUpdate, + FreightSettlementRead, + FreightSettlementWithTransports, + FreightSettlementTransportRead, + RemittanceVoucherCreate, + RemittanceVoucherRead, + FreightSettlementListQuery, + FreightSettlementListResponse, +) +from app.schemas.pl.inventory import ( + InventoryRead, + InventoryTransactionRead, + InventoryWarningRead, + InventoryWarningUpdate, + InventoryWarningThreshold, + DocumentReminderRead, + DocumentReminderUpdate, + InventoryLedgerQuery, + InventoryLedgerResponse, + InventoryTransactionQuery, + InventoryTransactionResponse, + InventorySummaryQuery, + InventorySummaryItem, + InventorySummaryResponse, + TransportStatsQuery, + TransportStatsItem, + TransportStatsResponse, +) + +__all__ = [ + # Base data + "CarrierBase", + "VehicleBase", + "DriverBase", + "VehicleDriverCreate", + "VehiclePersonnelRow", + "CertRow", + "CertRead", + "CarrierCreate", + "CarrierUpdate", + "CarrierRead", + "VehicleCreate", + "VehicleUpdate", + "VehicleRead", + "VehicleDetailRead", + "PersonnelBase", + "PersonnelCreate", + "PersonnelUpdate", + "PersonnelRead", + "PersonnelDetailRead", + "DriverCreate", + "DriverUpdate", + "DriverRead", + "VehicleDriverRead", + # Plan + "PlanBase", + "PlanProductBase", + "PlanProductCreate", + "PlanProductUpdate", + "PlanProductRead", + "PlanCreate", + "PlanUpdate", + "PlanRead", + "PlanWithProducts", + "PlanListQuery", + "PlanListResponse", + "CreateFromContractRequest", + "PlanCreateFull", + "PlanTransportCreateBlock", + # Transport + "TransportBase", + "TransportCreate", + "TransportUpdate", + "TransportRead", + "TransportWithPlans", + "TransportFeedback", + "ApprovalSubmit", + "ApprovalRequest", + "ApprovalRecordRead", + "TransportListQuery", + "TransportListResponse", + # Freight + "FreightSettlementBase", + "FreightSettlementCreate", + "FreightSettlementUpdate", + "FreightSettlementRead", + "FreightSettlementWithTransports", + "FreightSettlementTransportRead", + "RemittanceVoucherCreate", + "RemittanceVoucherRead", + "FreightSettlementListQuery", + "FreightSettlementListResponse", + # Inventory + "InventoryRead", + "InventoryTransactionRead", + "InventoryWarningRead", + "InventoryWarningUpdate", + "InventoryWarningThreshold", + "DocumentReminderRead", + "DocumentReminderUpdate", + "InventoryLedgerQuery", + "InventoryLedgerResponse", + "InventoryTransactionQuery", + "InventoryTransactionResponse", + "InventorySummaryQuery", + "InventorySummaryItem", + "InventorySummaryResponse", + "TransportStatsQuery", + "TransportStatsItem", + "TransportStatsResponse", +] diff --git a/backend/app/schemas/pl/base_data.py b/backend/app/schemas/pl/base_data.py new file mode 100644 index 000000000..e39270b38 --- /dev/null +++ b/backend/app/schemas/pl/base_data.py @@ -0,0 +1,258 @@ +"""运输计划管理 - 基础数据 Schema(承运商、车辆、人员、证书)""" +from datetime import date, datetime +from decimal import Decimal +from typing import Optional + +from pydantic import BaseModel, Field + + +# ============================================================================= +# 承运商 Schema +# ============================================================================= + + +class CarrierBase(BaseModel): + carrier_name: str = Field(..., max_length=200, alias="carrierName", description="承运商名称") + contact_name: Optional[str] = Field(default=None, max_length=100, alias="contactName", description="联系人") + contact_phone: Optional[str] = Field(default=None, max_length=32, alias="contactPhone", description="联系电话") + status: str = Field(default="1", max_length=1, description="合作状态 1-合作中 0-已终止") + remark: Optional[str] = Field(default=None, description="备注") + + +class CarrierCreate(CarrierBase): + model_config = {"populate_by_name": True} + + +class CarrierUpdate(BaseModel): + carrier_name: Optional[str] = Field(default=None, max_length=200, alias="carrierName") + contact_name: Optional[str] = Field(default=None, max_length=100, alias="contactName") + contact_phone: Optional[str] = Field(default=None, max_length=32, alias="contactPhone") + status: Optional[str] = Field(default=None, max_length=1) + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class CarrierRead(CarrierBase): + id: str + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 子表行 Schema +# ============================================================================= + + +class VehiclePersonnelRow(BaseModel): + personnel_id: Optional[str] = Field(default=None, alias="personnelId") + personnel_name: str = Field(..., alias="personnelName") + phone_no: Optional[str] = Field(default=None, alias="phoneNo") + age: Optional[int] = None + role: str = Field(..., description="driver|escort") + is_default: int = Field(default=0, alias="isDefault") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class CertRow(BaseModel): + cert_id: Optional[str] = Field(default=None, alias="certId") + cert_name: str = Field(..., alias="certName") + cert_no: Optional[str] = Field(default=None, alias="certNo") + expire_date: Optional[date] = Field(default=None, alias="expireDate") + remind_days: int = Field(default=30, alias="remindDays") + attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls") + model_config = {"populate_by_name": True} + + +class CertRead(CertRow): + id: str + owner_type: str = Field(alias="ownerType") + owner_id: str = Field(alias="ownerId") + status: str + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + update_time: datetime = Field(alias="updateTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 车辆 Schema +# ============================================================================= + + +class VehicleBase(BaseModel): + vehicle_type: str = Field(..., alias="vehicleType", description="车辆类型 self-自有 carrier-承运商") + carrier_id: Optional[str] = Field(default=None, alias="carrierId", description="承运商ID") + carrier_name: Optional[str] = Field(default=None, max_length=200, alias="carrierName", description="承运商名称") + license_plate: str = Field(..., max_length=20, alias="licensePlate", description="车牌号") + default_driver_id: Optional[str] = Field(default=None, alias="defaultDriverId", description="默认司机ID(只读兼容)") + default_driver_name: Optional[str] = Field(default=None, max_length=100, alias="defaultDriverName", description="默认司机姓名(只读兼容)") + load_capacity: Optional[Decimal] = Field(default=None, alias="loadCapacity", description="载重(吨)") + vehicle_status: str = Field(default="available", max_length=20, alias="vehicleStatus", description="车辆状态") + remark: Optional[str] = None + + +class VehicleCreate(VehicleBase): + personnel_list: list[VehiclePersonnelRow] = Field(default_factory=list, alias="personnelList") + cert_list: list[CertRow] = Field(default_factory=list, alias="certList") + model_config = {"populate_by_name": True} + + +class VehicleUpdate(BaseModel): + vehicle_type: Optional[str] = Field(default=None, max_length=20, alias="vehicleType") + carrier_id: Optional[str] = Field(default=None, alias="carrierId") + carrier_name: Optional[str] = Field(default=None, max_length=200, alias="carrierName") + license_plate: Optional[str] = Field(default=None, max_length=20, alias="licensePlate") + load_capacity: Optional[Decimal] = Field(default=None, alias="loadCapacity") + vehicle_status: Optional[str] = Field(default=None, max_length=20, alias="vehicleStatus") + remark: Optional[str] = None + personnel_list: Optional[list[VehiclePersonnelRow]] = Field(default=None, alias="personnelList") + cert_list: Optional[list[CertRow]] = Field(default=None, alias="certList") + model_config = {"populate_by_name": True} + + +class VehicleRead(VehicleBase): + id: str + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + personnel_summary: Optional[str] = Field(default=None, alias="personnelSummary") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class VehicleDetailRead(VehicleRead): + personnel_list: list[VehiclePersonnelRow] = Field(default_factory=list, alias="personnelList") + cert_list: list[CertRead] = Field(default_factory=list, alias="certList") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 人员 Schema +# ============================================================================= + + +class PersonnelBase(BaseModel): + personnel_name: str = Field(..., max_length=100, alias="personnelName", description="姓名") + phone_no: Optional[str] = Field(default=None, max_length=32, alias="phoneNo", description="手机号") + age: Optional[int] = Field(default=None, description="年龄") + id_card_no: Optional[str] = Field(default=None, max_length=32, alias="idCardNo", description="身份证号") + status: str = Field(default="1", max_length=1, description="状态 1-在职 0-停用") + remark: Optional[str] = None + + +class PersonnelCreate(PersonnelBase): + cert_list: list[CertRow] = Field(default_factory=list, alias="certList") + model_config = {"populate_by_name": True} + + +class PersonnelUpdate(BaseModel): + personnel_name: Optional[str] = Field(default=None, max_length=100, alias="personnelName") + phone_no: Optional[str] = Field(default=None, max_length=32, alias="phoneNo") + age: Optional[int] = None + id_card_no: Optional[str] = Field(default=None, max_length=32, alias="idCardNo") + status: Optional[str] = Field(default=None, max_length=1) + remark: Optional[str] = None + cert_list: Optional[list[CertRow]] = Field(default=None, alias="certList") + model_config = {"populate_by_name": True} + + +class PersonnelRead(PersonnelBase): + id: str + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + nearest_expire_date: Optional[date] = Field(default=None, alias="nearestExpireDate") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class PersonnelDetailRead(PersonnelRead): + cert_list: list[CertRead] = Field(default_factory=list, alias="certList") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 司机 Schema(兼容旧 API) +# ============================================================================= + + +class DriverBase(BaseModel): + driver_name: str = Field(..., max_length=100, alias="driverName", description="姓名") + phone_no: Optional[str] = Field(default=None, max_length=32, alias="phoneNo", description="手机号") + id_card_no: Optional[str] = Field(default=None, max_length=32, alias="idCardNo", description="身份证号") + driving_license_no: Optional[str] = Field(default=None, max_length=32, alias="drivingLicenseNo", description="驾驶证号") + driving_license_expire: Optional[date] = Field(default=None, alias="drivingLicenseExpire", description="驾驶证有效期") + vehicle_license_no: Optional[str] = Field(default=None, max_length=32, alias="vehicleLicenseNo", description="行驶证号") + vehicle_license_expire: Optional[date] = Field(default=None, alias="vehicleLicenseExpire", description="行驶证有效期") + hazmat_cert_no: Optional[str] = Field(default=None, max_length=32, alias="hazmatCertNo", description="危化品证号") + hazmat_cert_expire: Optional[date] = Field(default=None, alias="hazmatCertExpire", description="危化品证有效期") + remark: Optional[str] = None + + +class DriverCreate(DriverBase): + model_config = {"populate_by_name": True} + + +class DriverUpdate(BaseModel): + driver_name: Optional[str] = Field(default=None, max_length=100, alias="driverName") + phone_no: Optional[str] = Field(default=None, max_length=32, alias="phoneNo") + id_card_no: Optional[str] = Field(default=None, max_length=32, alias="idCardNo") + driving_license_no: Optional[str] = Field(default=None, max_length=32, alias="drivingLicenseNo") + driving_license_expire: Optional[date] = Field(default=None, alias="drivingLicenseExpire") + vehicle_license_no: Optional[str] = Field(default=None, max_length=32, alias="vehicleLicenseNo") + vehicle_license_expire: Optional[date] = Field(default=None, alias="vehicleLicenseExpire") + hazmat_cert_no: Optional[str] = Field(default=None, max_length=32, alias="hazmatCertNo") + hazmat_cert_expire: Optional[date] = Field(default=None, alias="hazmatCertExpire") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class DriverRead(DriverBase): + id: str + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 车辆-司机关联 Schema(兼容) +# ============================================================================= + + +class VehicleDriverCreate(BaseModel): + vehicle_id: str = Field(..., alias="vehicleId", description="车辆ID") + driver_id: str = Field(..., alias="driverId", description="司机ID") + is_default: int = Field(default=0, alias="isDefault", description="是否默认 0-否 1-是") + model_config = {"populate_by_name": True} + + +class VehicleDriverRead(BaseModel): + id: str + vehicle_id: str = Field(alias="vehicleId") + driver_id: str = Field(alias="driverId") + is_default: int = Field(alias="isDefault") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} diff --git a/backend/app/schemas/pl/freight.py b/backend/app/schemas/pl/freight.py new file mode 100644 index 000000000..b353aba11 --- /dev/null +++ b/backend/app/schemas/pl/freight.py @@ -0,0 +1,106 @@ +"""运输计划管理 - 运费结算 Schema""" +from datetime import date, datetime +from decimal import Decimal +from typing import Optional + +from pydantic import BaseModel, Field + + +# ============================================================================= +# 运费结算 Schema +# ============================================================================= + + +class FreightSettlementBase(BaseModel): + total_freight: Decimal = Field(default=Decimal("0.00"), alias="totalFreight", description="运费合计") + invoice_amount: Optional[Decimal] = Field(default=None, alias="invoiceAmount", description="发票金额") + invoice_no: Optional[str] = Field(default=None, max_length=50, alias="invoiceNo", description="发票号") + invoice_date: Optional[date] = Field(default=None, alias="invoiceDate", description="开票日期") + settlement_status: str = Field(default="pending", alias="settlementStatus", description="结算状态") + remark: Optional[str] = None + + +class FreightSettlementCreate(BaseModel): + transport_ids: list[str] = Field(..., alias="transportIds", description="运输ID列表") + model_config = {"populate_by_name": True} + + +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} + + +class FreightSettlementRead(FreightSettlementBase): + id: str + settlement_no: str = Field(alias="settlementNo") + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class FreightSettlementWithTransports(FreightSettlementRead): + transports: list = [] + + +class FreightSettlementTransportRead(BaseModel): + id: str + settlement_id: str = Field(alias="settlementId") + transport_id: str = Field(alias="transportId") + freight_amount: Decimal = Field(alias="freightAmount") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 汇款凭证 Schema +# ============================================================================= + + +class RemittanceVoucherCreate(BaseModel): + settlement_id: str = Field(..., alias="settlementId", description="结算单ID") + remittance_date: Optional[date] = Field(default=None, alias="remittanceDate", description="汇款日期") + remittance_amount: Optional[Decimal] = Field(default=None, alias="remittanceAmount", description="汇款金额") + voucher_urls: Optional[list[str]] = Field(default=None, alias="voucherUrls", description="凭证文件URLs") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class RemittanceVoucherRead(BaseModel): + id: str + settlement_id: str = Field(alias="settlementId") + voucher_no: Optional[str] = Field(default=None, alias="voucherNo") + 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") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 列表查询 +# ============================================================================= + + +class FreightSettlementListQuery(BaseModel): + q: Optional[str] = Field(default=None, description="模糊搜索") + settlement_status: Optional[str] = Field(default=None, alias="settlementStatus", description="结算状态") + 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} + + +class FreightSettlementListResponse(BaseModel): + total: int + list: list[FreightSettlementRead] diff --git a/backend/app/schemas/pl/inventory.py b/backend/app/schemas/pl/inventory.py new file mode 100644 index 000000000..28edf4476 --- /dev/null +++ b/backend/app/schemas/pl/inventory.py @@ -0,0 +1,182 @@ +"""运输计划管理 - 库存统计 Schema""" +from datetime import date, datetime +from decimal import Decimal +from typing import Optional + +from pydantic import BaseModel, Field + + +# ============================================================================= +# 库存台账 Schema +# ============================================================================= + + +class InventoryRead(BaseModel): + id: str + product_id: str = Field(alias="productId") + product_no: str = Field(alias="productNo") + product_name: str = Field(alias="productName") + model: Optional[str] = None + unit: str + stock_qty: Decimal = Field(alias="stockQty") + stock_amount: Decimal = Field(alias="stockAmount") + low_stock_warning: Optional[Decimal] = Field(default=None, alias="lowStockWarning") + high_stock_warning: Optional[Decimal] = Field(default=None, alias="highStockWarning") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + update_time: datetime = Field(alias="updateTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 库存流水 Schema +# ============================================================================= + + +class InventoryTransactionRead(BaseModel): + id: str + product_id: str = Field(alias="productId") + product_name: str = Field(alias="productName") + transaction_type: str = Field(alias="transactionType") + plan_id: Optional[str] = Field(default=None, alias="planId") + plan_no: Optional[str] = Field(default=None, alias="planNo") + qty: Decimal + unit_price: Decimal = Field(alias="unitPrice") + amount: Decimal + stock_after: Decimal = Field(alias="stockAfter") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 库存预警 Schema +# ============================================================================= + + +class InventoryWarningRead(BaseModel): + id: str + product_id: str = Field(alias="productId") + product_name: str = Field(alias="productName") + warning_type: str = Field(alias="warningType") + current_qty: Decimal = Field(alias="currentQty") + threshold_value: Decimal = Field(alias="thresholdValue") + status: str + resolve_time: Optional[datetime] = Field(default=None, alias="resolveTime") + resolve_remark: Optional[str] = Field(default=None, alias="resolveRemark") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class InventoryWarningUpdate(BaseModel): + status: str = Field(..., description="状态 pending/resolved") + resolve_remark: Optional[str] = Field(default=None, alias="resolveRemark", description="处理备注") + model_config = {"populate_by_name": True} + + +class InventoryWarningThreshold(BaseModel): + product_id: str = Field(..., alias="productId", description="产品ID") + low_stock_warning: Optional[Decimal] = Field(default=None, alias="lowStockWarning", description="最低库存预警值") + high_stock_warning: Optional[Decimal] = Field(default=None, alias="highStockWarning", description="最高库存预警值") + model_config = {"populate_by_name": True} + + +# ============================================================================= +# 证件到期提醒 Schema +# ============================================================================= + + +class DocumentReminderRead(BaseModel): + id: str + cert_id: Optional[str] = Field(default=None, alias="certId") + owner_type: Optional[str] = Field(default=None, alias="ownerType") + owner_id: Optional[str] = Field(default=None, alias="ownerId") + owner_label: Optional[str] = Field(default=None, alias="ownerLabel") + driver_id: Optional[str] = Field(default=None, alias="driverId") + driver_name: Optional[str] = Field(default=None, alias="driverName") + document_type: str = Field(alias="documentType") + document_no: Optional[str] = Field(default=None, alias="documentNo") + expire_date: date = Field(alias="expireDate") + days_remaining: int = Field(alias="daysRemaining") + status: str + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class DocumentReminderUpdate(BaseModel): + status: str = Field(..., description="状态 pending/resolved") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +# ============================================================================= +# 查询参数 +# ============================================================================= + + +class InventoryLedgerQuery(BaseModel): + product_name: Optional[str] = Field(default=None, alias="productName", description="产品名称") + 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} + + +class InventoryLedgerResponse(BaseModel): + total: int + list: list[InventoryRead] + + +class InventoryTransactionQuery(BaseModel): + product_id: Optional[str] = Field(default=None, alias="productId", description="产品ID") + transaction_type: Optional[str] = Field(default=None, alias="transactionType", description="事务类型 inbound/outbound") + date_from: Optional[date] = Field(default=None, alias="dateFrom", description="开始日期") + date_to: Optional[date] = Field(default=None, alias="dateTo", description="结束日期") + 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} + + +class InventoryTransactionResponse(BaseModel): + total: int + list: list[InventoryTransactionRead] + + +class InventorySummaryQuery(BaseModel): + group_by: str = Field(default="month", alias="groupBy", description="汇总维度 month/week") + date_from: date = Field(..., alias="dateFrom", description="开始日期") + date_to: date = Field(..., alias="dateTo", description="结束日期") + product_id: Optional[str] = Field(default=None, alias="productId", description="产品ID") + model_config = {"populate_by_name": True} + + +class InventorySummaryItem(BaseModel): + period: str + product_id: Optional[str] = Field(default=None, alias="productId") + product_name: str = Field(alias="productName") + inbound_qty: Decimal = Field(alias="inboundQty") + outbound_qty: Decimal = Field(alias="outboundQty") + net_change: Decimal = Field(alias="netChange") + + +class InventorySummaryResponse(BaseModel): + list: list[InventorySummaryItem] + + +class TransportStatsQuery(BaseModel): + group_by: str = Field(default="carrier", alias="groupBy", description="统计维度 carrier/vehicle") + date_from: Optional[date] = Field(default=None, alias="dateFrom", description="开始日期") + date_to: Optional[date] = Field(default=None, alias="dateTo", description="结束日期") + model_config = {"populate_by_name": True} + + +class TransportStatsItem(BaseModel): + group_key: str = Field(alias="groupKey") + group_name: str = Field(alias="groupName") + trip_count: int = Field(alias="tripCount") + total_freight: Decimal = Field(alias="totalFreight") + + +class TransportStatsResponse(BaseModel): + list: list[TransportStatsItem] diff --git a/backend/app/schemas/pl/plan.py b/backend/app/schemas/pl/plan.py new file mode 100644 index 000000000..56afed3b4 --- /dev/null +++ b/backend/app/schemas/pl/plan.py @@ -0,0 +1,253 @@ +"""运输计划管理 - 计划 Schema""" +from datetime import date, datetime +from decimal import Decimal +from typing import Optional + +from pydantic import BaseModel, Field + +# ============================================================================= +# 计划产品明细 Schema +# ============================================================================= + + +class PlanProductBase(BaseModel): + product_id: str = Field(..., alias="productId", description="产品ID") + product_no: str = Field(..., max_length=50, alias="productNo", description="产品编号") + product_name: str = Field(..., max_length=200, alias="productName", description="产品名称") + model: Optional[str] = Field(default=None, max_length=100, description="规格型号") + unit: str = Field(default="吨", max_length=20, description="单位") + category_name: Optional[str] = Field(default=None, max_length=200, alias="categoryName", description="产品分类") + package_spec: Optional[str] = Field(default=None, max_length=200, alias="packageSpec", description="包装规格") + delivery_method: Optional[str] = Field(default=None, max_length=50, alias="deliveryMethod", description="送货方式") + quantity: Optional[Decimal] = Field(default=None, description="合同数量") + actual_qty: Optional[Decimal] = Field(default=None, alias="actualQty", description="实际数量") + tax_price: Optional[Decimal] = Field(default=None, alias="taxPrice", description="含税单价") + tax_amount: Optional[Decimal] = Field(default=None, alias="taxAmount", description="税费") + tax_subtotal: Optional[Decimal] = Field(default=None, alias="taxSubtotal", description="含税总价") + is_explosive: int = Field(default=0, alias="isExplosive", description="是否易制爆") + is_toxic: int = Field(default=0, alias="isToxic", description="是否易制毒") + purchase_cert_url: Optional[str] = Field(default=None, alias="purchaseCertUrl", description="购买证URL") + transport_cert_url: Optional[str] = Field(default=None, alias="transportCertUrl", description="运输证URL") + inbound_estimate_qty: Optional[Decimal] = Field(default=None, alias="inboundEstimateQty", description="入库预估数") + inbound_qty: Optional[Decimal] = Field(default=None, alias="inboundQty", description="入库数") + inbound_price: Optional[Decimal] = Field(default=None, alias="inboundPrice", description="入库价") + inbound_amount: Optional[Decimal] = Field(default=None, alias="inboundAmount", description="入库金额") + outbound_estimate_qty: Optional[Decimal] = Field(default=None, alias="outboundEstimateQty", description="出库预估数") + outbound_qty: Optional[Decimal] = Field(default=None, alias="outboundQty", description="出库数") + outbound_price: Optional[Decimal] = Field(default=None, alias="outboundPrice", description="出库单价") + outbound_amount: Optional[Decimal] = Field(default=None, alias="outboundAmount", description="出库金额") + remark: Optional[str] = Field(default=None, max_length=512, description="备注") + + +class PlanProductCreate(PlanProductBase): + model_config = {"populate_by_name": True} + + +class PlanProductUpdate(BaseModel): + product_id: Optional[str] = Field(default=None, alias="productId") + product_no: Optional[str] = Field(default=None, max_length=50, alias="productNo") + product_name: Optional[str] = Field(default=None, max_length=200, alias="productName") + model: Optional[str] = Field(default=None, max_length=100) + unit: Optional[str] = Field(default=None, max_length=20) + is_explosive: Optional[int] = Field(default=None, alias="isExplosive") + is_toxic: Optional[int] = Field(default=None, alias="isToxic") + purchase_cert_url: Optional[str] = Field(default=None, alias="purchaseCertUrl") + transport_cert_url: Optional[str] = Field(default=None, alias="transportCertUrl") + inbound_estimate_qty: Optional[Decimal] = Field(default=None, alias="inboundEstimateQty") + inbound_qty: Optional[Decimal] = Field(default=None, alias="inboundQty") + inbound_price: Optional[Decimal] = Field(default=None, alias="inboundPrice") + inbound_amount: Optional[Decimal] = Field(default=None, alias="inboundAmount") + outbound_estimate_qty: Optional[Decimal] = Field(default=None, alias="outboundEstimateQty") + outbound_qty: Optional[Decimal] = Field(default=None, alias="outboundQty") + outbound_price: Optional[Decimal] = Field(default=None, alias="outboundPrice") + outbound_amount: Optional[Decimal] = Field(default=None, alias="outboundAmount") + model_config = {"populate_by_name": True} + + +class PlanProductRead(PlanProductBase): + id: str + plan_id: str = Field(alias="planId") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + update_time: datetime = Field(alias="updateTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 计划主表 Schema +# ============================================================================= + + +class PlanBase(BaseModel): + belongs_company: str = Field(..., alias="belongsCompany", description="归属公司 shanxia-安庆山峡 yundong-安徽云栋") + plan_type: str = Field(..., alias="planType", description="单据类型 direct-直销单 inbound-入库单 outbound-出库单") + follow_status: str = Field(default="draft", alias="followStatus", description="跟进状态") + transport_status: str = Field(default="pending", alias="transportStatus", description="运输安排状态") + archive_status: str = Field(default="unarchived", alias="archiveStatus", description="归档状态") + complete_status: str = Field(default="no", alias="completeStatus", description="完成状态") + contract_id: Optional[str] = Field(default=None, alias="contractId", description="CRM合同ID") + contract_no: Optional[str] = Field(default=None, max_length=50, alias="contractNo", description="合同编号") + supplier_id: Optional[str] = Field(default=None, alias="supplierId", description="供应商ID") + supplier_name: Optional[str] = Field(default=None, max_length=200, alias="supplierName", description="供应商名称") + destination_id: Optional[str] = Field(default=None, alias="destinationId", description="目的地ID") + destination_name: Optional[str] = Field(default=None, max_length=200, alias="destinationName", description="目的地名称") + customer_id: Optional[str] = Field(default=None, alias="customerId", description="客户ID") + customer_name: Optional[str] = Field(default=None, max_length=200, alias="customerName", description="客户名称") + contact_name: Optional[str] = Field(default=None, max_length=100, alias="contactName", description="联系人") + contact_phone: Optional[str] = Field(default=None, max_length=32, alias="contactPhone", description="联系电话") + party_a: Optional[str] = Field(default=None, max_length=200, alias="partyA", description="甲方") + party_b: Optional[str] = Field(default=None, max_length=200, alias="partyB", description="乙方") + contract_start_date: Optional[date] = Field(default=None, alias="contractStartDate", description="合同开始日期") + contract_end_date: Optional[date] = Field(default=None, alias="contractEndDate", description="合同结束日期") + delivery_method: Optional[str] = Field(default=None, alias="deliveryMethod", description="送货方式") + settlement_method: Optional[str] = Field(default=None, max_length=50, alias="settlementMethod", description="结算方式") + has_freight: int = Field(default=0, alias="hasFreight", description="是否有运输费用") + pickup_address: Optional[str] = Field(default=None, max_length=500, alias="pickupAddress", description="取货地址") + pickup_time: Optional[datetime] = Field(default=None, alias="pickupTime", description="取货时间") + pickup_notes: Optional[str] = Field(default=None, max_length=500, alias="pickupNotes", description="取货注意事项") + destination_address: Optional[str] = Field(default=None, max_length=500, alias="destinationAddress", description="目的地地址") + delivery_time: Optional[datetime] = Field(default=None, alias="deliveryTime", description="送达时间") + destination_notes: Optional[str] = Field(default=None, max_length=500, alias="destinationNotes", description="目的地注意事项") + notify_message: Optional[str] = Field(default=None, alias="notifyMessage", description="通知信息") + follow_user_id: Optional[str] = Field(default=None, alias="followUserId", description="跟进人ID") + follow_user_name: Optional[str] = Field(default=None, max_length=100, alias="followUserName", description="跟进人姓名") + remark: Optional[str] = None + + +class PlanCreate(PlanBase): + plan_date: date = Field(..., alias="planDate", description="计划日期") + products: Optional[list[PlanProductCreate]] = Field(default=None, description="产品明细列表") + model_config = {"populate_by_name": True} + + +class PlanTransportCreateBlock(BaseModel): + vehicle_id: str = Field(..., alias="vehicleId", description="车辆ID") + driver_id: Optional[str] = Field(default=None, alias="driverId", description="司机/人员ID") + carrier_id: Optional[str] = Field(default=None, alias="carrierId", description="承运商ID") + distance_km: Optional[Decimal] = Field(default=None, alias="distanceKm", description="运输公里数") + freight_type: str = Field(default="by_weight", alias="freightType", description="运费计算方式") + transport_qty: Optional[Decimal] = Field(default=None, alias="transportQty", description="运输量") + freight_price: Optional[Decimal] = Field(default=None, alias="freightPrice", description="运输单价") + freight_amount: Optional[Decimal] = Field(default=None, alias="freightAmount", description="运费金额") + has_invoice: int = Field(default=0, alias="hasInvoice", description="是否开票") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class PlanUpdate(BaseModel): + plan_date: Optional[date] = Field(default=None, alias="planDate") + belongs_company: Optional[str] = Field(default=None, alias="belongsCompany") + plan_type: Optional[str] = Field(default=None, alias="planType") + follow_status: Optional[str] = Field(default=None, alias="followStatus") + transport_status: Optional[str] = Field(default=None, alias="transportStatus") + supplier_id: Optional[str] = Field(default=None, alias="supplierId") + supplier_name: Optional[str] = Field(default=None, max_length=200, alias="supplierName") + destination_id: Optional[str] = Field(default=None, alias="destinationId") + destination_name: Optional[str] = Field(default=None, max_length=200, alias="destinationName") + customer_id: Optional[str] = Field(default=None, alias="customerId") + customer_name: Optional[str] = Field(default=None, max_length=200, alias="customerName") + contact_name: Optional[str] = Field(default=None, max_length=100, alias="contactName") + contact_phone: Optional[str] = Field(default=None, max_length=32, alias="contactPhone") + party_a: Optional[str] = Field(default=None, max_length=200, alias="partyA") + party_b: Optional[str] = Field(default=None, max_length=200, alias="partyB") + contract_start_date: Optional[date] = Field(default=None, alias="contractStartDate") + contract_end_date: Optional[date] = Field(default=None, alias="contractEndDate") + delivery_method: Optional[str] = Field(default=None, alias="deliveryMethod") + settlement_method: Optional[str] = Field(default=None, max_length=50, alias="settlementMethod") + has_freight: Optional[int] = Field(default=None, alias="hasFreight") + pickup_address: Optional[str] = Field(default=None, max_length=500, alias="pickupAddress") + pickup_time: Optional[datetime] = Field(default=None, alias="pickupTime") + pickup_notes: Optional[str] = Field(default=None, max_length=500, alias="pickupNotes") + destination_address: Optional[str] = Field(default=None, max_length=500, alias="destinationAddress") + delivery_time: Optional[datetime] = Field(default=None, alias="deliveryTime") + destination_notes: Optional[str] = Field(default=None, max_length=500, alias="destinationNotes") + notify_message: Optional[str] = Field(default=None, alias="notifyMessage") + follow_user_id: Optional[str] = Field(default=None, alias="followUserId") + follow_user_name: Optional[str] = Field(default=None, alias="followUserName") + remark: Optional[str] = None + products: Optional[list[PlanProductCreate]] = None + transport: Optional[PlanTransportCreateBlock] = Field(default=None, description="运输预选/更新(有车牌时同步车辆与运费)") + model_config = {"populate_by_name": True} + + +class PlanRead(PlanBase): + id: str + plan_no: str = Field(alias="planNo") + plan_date: date = Field(alias="planDate") + vehicle_id: Optional[str] = Field(default=None, alias="vehicleId") + license_plate: Optional[str] = Field(default=None, alias="licensePlate") + driver_id: Optional[str] = Field(default=None, alias="driverId") + driver_name: Optional[str] = Field(default=None, alias="driverName") + transport_id: Optional[str] = Field(default=None, alias="transportId") + transport_no: Optional[str] = Field(default=None, alias="transportNo") + total_amount: Decimal = Field(alias="totalAmount") + freight_amount: Decimal = Field(alias="freightAmount") + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class PlanWithProducts(PlanRead): + products: list[PlanProductRead] = [] + + +# ============================================================================= +# 从合同创建计划 +# ============================================================================= + + +class CreateFromContractRequest(BaseModel): + contract_id: str = Field(..., alias="contractId", description="CRM合同ID") + plan_date: date = Field(..., alias="planDate", description="计划日期") + follow_user_id: Optional[str] = Field(default=None, alias="followUserId", description="跟进人ID") + follow_user_name: Optional[str] = Field(default=None, max_length=100, alias="followUserName", description="跟进人姓名") + model_config = {"populate_by_name": True} + + +class PlanCreateFull(PlanCreate): + contract_id: str = Field(..., alias="contractId", description="CRM合同ID") + transport: Optional[PlanTransportCreateBlock] = Field(default=None, description="运输安排(有车牌时创建运输)") + model_config = {"populate_by_name": True} + + +# ============================================================================= +# 计划列表查询 +# ============================================================================= + + +class PlanListQuery(BaseModel): + q: Optional[str] = Field(default=None, description="模糊搜索计划号/客户名称") + plan_no: Optional[str] = Field(default=None, alias="planNo", description="计划编号") + plan_type: Optional[str] = Field(default=None, alias="planType", description="单据类型") + follow_status: Optional[str] = Field(default=None, alias="followStatus", description="跟进状态") + transport_status: Optional[str] = Field(default=None, alias="transportStatus", description="运输状态") + archive_status: Optional[str] = Field(default=None, alias="archiveStatus", description="归档状态") + customer_name: Optional[str] = Field(default=None, alias="customerName", description="客户名称") + plan_date_from: Optional[date] = Field(default=None, alias="planDateFrom", description="计划日期开始") + plan_date_to: Optional[date] = Field(default=None, alias="planDateTo", description="计划日期结束") + page: int = Field(default=1, ge=1, description="页码") + page_size: int = Field(default=20, ge=1, le=100, alias="pageSize", description="每页数量") + model_config = {"populate_by_name": True} + + +class PlanProductCertItem(BaseModel): + id: str = Field(..., description="计划产品明细ID") + purchase_cert_url: Optional[str] = Field(default=None, alias="purchaseCertUrl", description="购买证URL") + transport_cert_url: Optional[str] = Field(default=None, alias="transportCertUrl", description="运输证URL") + model_config = {"populate_by_name": True} + + +class PlanProductCertsUpdate(BaseModel): + products: list[PlanProductCertItem] = Field(..., description="危化品证书更新列表") + model_config = {"populate_by_name": True} + + +class PlanListResponse(BaseModel): + total: int + list: list[PlanWithProducts] diff --git a/backend/app/schemas/pl/transport.py b/backend/app/schemas/pl/transport.py new file mode 100644 index 000000000..3ff36051e --- /dev/null +++ b/backend/app/schemas/pl/transport.py @@ -0,0 +1,231 @@ +"""运输计划管理 - 运输 Schema""" +from datetime import date, datetime +from decimal import Decimal +from typing import Optional + +from pydantic import BaseModel, Field + + +# ============================================================================= +# 运输 Schema +# ============================================================================= + + +class TransportBase(BaseModel): + vehicle_id: Optional[str] = Field(default=None, alias="vehicleId", description="车辆ID") + license_plate: Optional[str] = Field(default=None, max_length=20, alias="licensePlate", description="车牌号") + driver_id: Optional[str] = Field(default=None, alias="driverId", description="司机ID") + driver_name: Optional[str] = Field(default=None, max_length=100, alias="driverName", description="司机姓名") + driver_phone: Optional[str] = Field(default=None, max_length=32, alias="driverPhone", description="司机电话") + carrier_id: Optional[str] = Field(default=None, alias="carrierId", description="承运商ID") + carrier_name: Optional[str] = Field(default=None, max_length=200, alias="carrierName", description="承运商名称") + transport_medium: Optional[str] = Field(default=None, max_length=100, alias="transportMedium", description="运输介质") + start_point: Optional[str] = Field(default=None, max_length=200, alias="startPoint", description="运输起点") + end_point: Optional[str] = Field(default=None, max_length=200, alias="endPoint", description="运输终点") + distance_km: Optional[Decimal] = Field(default=None, alias="distanceKm", description="运输公里数") + unit: Optional[str] = Field(default=None, max_length=20, description="计量单位") + transport_qty: Optional[Decimal] = Field(default=None, alias="transportQty", description="运输量") + freight_price: Optional[Decimal] = Field(default=None, alias="freightPrice", description="运输单价") + freight_amount: Decimal = Field(default=Decimal("0.00"), alias="freightAmount", description="运输费用") + freight_type: str = Field(default="by_weight", alias="freightType", description="运费计算方式") + has_invoice: int = Field(default=0, alias="hasInvoice", description="是否开票") + qr_expire_date: Optional[date] = Field(default=None, alias="qrExpireDate", description="二维码有效期") + transport_status: str = Field(default="draft", alias="transportStatus", description="运输状态") + approval_status: str = Field(default="none", alias="approvalStatus", description="审批状态") + remark: Optional[str] = None + + +class TransportCreate(TransportBase): + plan_ids: Optional[list[str]] = Field(default=None, alias="planIds", description="关联计划ID列表") + model_config = {"populate_by_name": True} + + +class TransportArrange(BaseModel): + vehicle_id: str = Field(..., alias="vehicleId", description="车辆ID") + driver_id: str = Field(..., alias="driverId", description="司机ID") + carrier_id: Optional[str] = Field(default=None, alias="carrierId", description="承运商ID") + transport_medium: Optional[str] = Field(default=None, alias="transportMedium", description="运输介质") + start_point: Optional[str] = Field(default=None, alias="startPoint", description="运输起点") + end_point: Optional[str] = Field(default=None, alias="endPoint", description="运输终点") + distance_km: Optional[Decimal] = Field(default=None, alias="distanceKm", description="运输公里数") + unit: Optional[str] = Field(default=None, description="计量单位") + freight_type: str = Field(default="by_weight", alias="freightType", description="运费计算方式 by_weight/by_trip") + freight_price: Optional[Decimal] = Field(default=None, alias="freightPrice", description="运输单价") + freight_amount: Optional[Decimal] = Field(default=None, alias="freightAmount", description="运费金额") + has_invoice: int = Field(default=0, alias="hasInvoice", description="是否开票") + remark: Optional[str] = None + generate_dibang_plan: bool = Field(default=False, alias="generateDibangPlan", description="是否生成地磅计划") + model_config = {"populate_by_name": True} + + +class TransportInventoryLinkRead(BaseModel): + plan_product_id: str = Field(alias="planProductId") + product_name: str = Field(alias="productName") + db_purchase_plan_id: str = Field(alias="dbPurchasePlanId") + db_inventory_id: str = Field(alias="dbInventoryId") + batch_no: str = Field(alias="batchNo") + plan_no: str = Field(alias="planNo") + model_config = {"populate_by_name": True} + + +class TransportUpdate(BaseModel): + vehicle_id: Optional[str] = Field(default=None, alias="vehicleId") + license_plate: Optional[str] = Field(default=None, max_length=20, alias="licensePlate") + driver_id: Optional[str] = Field(default=None, alias="driverId") + driver_name: Optional[str] = Field(default=None, max_length=100, alias="driverName") + driver_phone: Optional[str] = Field(default=None, max_length=32, alias="driverPhone") + carrier_id: Optional[str] = Field(default=None, alias="carrierId") + carrier_name: Optional[str] = Field(default=None, max_length=200, alias="carrierName") + transport_medium: Optional[str] = Field(default=None, max_length=100, alias="transportMedium") + start_point: Optional[str] = Field(default=None, max_length=200, alias="startPoint") + end_point: Optional[str] = Field(default=None, max_length=200, alias="endPoint") + distance_km: Optional[Decimal] = Field(default=None, alias="distanceKm") + unit: Optional[str] = Field(default=None, max_length=20) + freight_price: Optional[Decimal] = Field(default=None, alias="freightPrice") + freight_amount: Optional[Decimal] = Field(default=None, alias="freightAmount") + freight_type: Optional[str] = Field(default=None, alias="freightType") + has_invoice: Optional[int] = Field(default=None, alias="hasInvoice") + qr_expire_date: Optional[date] = Field(default=None, alias="qrExpireDate") + transport_status: Optional[str] = Field(default=None, alias="transportStatus") + approval_status: Optional[str] = Field(default=None, alias="approvalStatus") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + + +class TransportRead(TransportBase): + id: str + transport_no: str = Field(alias="transportNo") + qr_code: Optional[str] = Field(default=None, alias="qrCode") + feedback_time: Optional[datetime] = Field(default=None, alias="feedbackTime") + feedback_qty: Optional[Decimal] = Field(default=None, alias="feedbackQty") + feedback_images: Optional[str] = Field(default=None, alias="feedbackImages") + feedback_remark: Optional[str] = Field(default=None, alias="feedbackRemark") + tenant_no: str = Field(alias="tenantNo") + order_num: Optional[int] = Field(default=None, alias="orderNum") + create_by: Optional[str] = Field(default=None, alias="createBy") + create_dept_id: Optional[str] = Field(default=None, alias="createDeptId") + create_time: datetime = Field(alias="createTime") + update_by: Optional[str] = Field(default=None, alias="updateBy") + update_time: datetime = Field(alias="updateTime") + del_flag: int = Field(default=0, alias="delFlag") + model_config = {"from_attributes": True, "populate_by_name": True} + + +class TransportArrangeResult(TransportRead): + driver_access_token: Optional[str] = Field(default=None, alias="driverAccessToken") + driver_url: Optional[str] = Field(default=None, alias="driverUrl") + inventory_records: list[TransportInventoryLinkRead] = Field( + default_factory=list, alias="inventoryRecords" + ) + model_config = {"from_attributes": True, "populate_by_name": True} + + +class PlanArrangeInfoRead(BaseModel): + driver_url: Optional[str] = Field(default=None, alias="driverUrl") + license_plate: Optional[str] = Field(default=None, alias="licensePlate") + inventory_records: list[TransportInventoryLinkRead] = Field( + default_factory=list, alias="inventoryRecords" + ) + model_config = {"populate_by_name": True} + + +class TransportWithPlans(TransportRead): + plan_ids: list[str] = Field(default_factory=list, alias="planIds") + + +# ============================================================================= +# 司机扫码回传 +# ============================================================================= + + +class TransportFeedback(BaseModel): + transport_no: str = Field(..., alias="transportNo", description="运输编号") + verify_code: Optional[str] = Field(default=None, alias="verifyCode", description="验证码") + feedback_qty: Optional[Decimal] = Field(default=None, alias="feedbackQty", description="回传数量") + feedback_images: Optional[list[str]] = Field(default=None, alias="feedbackImages", description="回传图片URLs") + feedback_remark: Optional[str] = Field(default=None, alias="feedbackRemark", description="回传备注") + model_config = {"populate_by_name": True} + + +class PublicTransportFeedback(BaseModel): + feedback_images: Optional[list[str]] = Field(default=None, alias="feedbackImages") + feedback_remark: Optional[str] = Field(default=None, alias="feedbackRemark") + model_config = {"populate_by_name": True} + + +class PublicTransportPlanProductRead(BaseModel): + product_name: str = Field(alias="productName") + model: Optional[str] = None + package_spec: Optional[str] = Field(default=None, alias="packageSpec") + unit: Optional[str] = None + quantity: Optional[Decimal] = None + model_config = {"populate_by_name": True} + + +class PublicTransportPageRead(BaseModel): + plan_no: str = Field(alias="planNo") + plan_date: Optional[str] = Field(default=None, alias="planDate") + plan_type: str = Field(alias="planType") + pickup_address: Optional[str] = Field(default=None, alias="pickupAddress") + destination_address: Optional[str] = Field(default=None, alias="destinationAddress") + license_plate: Optional[str] = Field(default=None, alias="licensePlate") + driver_name: Optional[str] = Field(default=None, alias="driverName") + driver_phone: Optional[str] = Field(default=None, alias="driverPhone") + products: list[PublicTransportPlanProductRead] = Field(default_factory=list) + feedback_remark: Optional[str] = Field(default=None, alias="feedbackRemark") + feedback_images: list[str] = Field(default_factory=list, alias="feedbackImages") + feedback_time: Optional[datetime] = Field(default=None, alias="feedbackTime") + plan_voided: bool = Field(default=False, alias="planVoided") + model_config = {"populate_by_name": True} + + +# ============================================================================= +# 审批 +# ============================================================================= + + +class ApprovalSubmit(BaseModel): + approver_ids: list[str] = Field(..., alias="approverIds", description="审批人ID列表(按顺序)") + model_config = {"populate_by_name": True} + + +class ApprovalRequest(BaseModel): + action: str = Field(..., description="审批动作 approve/reject") + comment: Optional[str] = Field(default=None, description="审批意见") + model_config = {"populate_by_name": True} + + +class ApprovalRecordRead(BaseModel): + id: str + transport_id: str = Field(alias="transportId") + approver_id: str = Field(alias="approverId") + approver_name: str = Field(alias="approverName") + approval_order: int = Field(alias="approvalOrder") + status: str + comment: Optional[str] = None + approval_time: Optional[datetime] = Field(default=None, alias="approvalTime") + tenant_no: str = Field(alias="tenantNo") + create_time: datetime = Field(alias="createTime") + model_config = {"from_attributes": True, "populate_by_name": True} + + +# ============================================================================= +# 列表查询 +# ============================================================================= + + +class TransportListQuery(BaseModel): + q: Optional[str] = Field(default=None, description="模糊搜索") + transport_no: Optional[str] = Field(default=None, alias="transportNo", description="运输编号") + transport_status: Optional[str] = Field(default=None, alias="transportStatus", description="运输状态") + approval_status: Optional[str] = Field(default=None, alias="approvalStatus", description="审批状态") + vehicle_id: Optional[str] = Field(default=None, alias="vehicleId", description="车辆ID") + driver_id: Optional[str] = Field(default=None, alias="driverId", description="司机ID") + 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} + + +class TransportListResponse(BaseModel): + total: int + list: list[TransportRead] diff --git a/backend/app/services/bx/reimburse.py b/backend/app/services/bx/reimburse.py index f4895c9f0..c04ad49f0 100644 --- a/backend/app/services/bx/reimburse.py +++ b/backend/app/services/bx/reimburse.py @@ -5,6 +5,7 @@ from decimal import Decimal from typing import Any, Dict, List, Optional, Sequence, Tuple from sqlalchemy import and_, func, or_ +from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import Session from app.core.bx_auth import BxUserContext @@ -22,7 +23,14 @@ from app.schemas.bx.reimburse import ReimburseApplyOut, ReimburseDetailOut from app.services.bx.approval_cycle import filter_current_cycle_approvals from app.services.bx.attachment import AttachmentService from app.services.bx.base import BxCrudService -from app.utils.bx_codegen import generate_apply_code, generate_title +from app.utils.bx_codegen import ( + allocate_reimburse_title_seq, + generate_apply_code, + format_reimburse_title, + is_auto_reimburse_title, + parse_reimburse_date, + resolve_reimburse_title, +) from app.utils.bx_date_range import current_month_bounds, parse_create_time_day_bounds _REIMBURSE_MY_STATS_PASSED_STATUSES = ("approved", "processed", "paid", "offset") @@ -374,24 +382,42 @@ class ReimburseService: tenant_no = ReimburseService._tenant_no(db, user) data = dict(obj_in) total_amount = sum(float(d.get("amount", 0) or 0) for d in details) - title = data.pop("title", None) or generate_title(db, user.name, tenant_no) + reimburse_date = parse_reimburse_date(data.pop("reimburse_date", None)) + requested_title = data.pop("title", None) first_detail = details[0] if details else {} - apply_obj = BxReimburseApply( - id=generate_uuid(), - title=title, - amount=total_amount, - expense_id=str(first_detail.get("expense_id") or ""), - expense_name=first_detail.get("expense_name") or "", - applicant_id=user.id, - applicant_name=user.name, - tenant_no=tenant_no, - create_by=user.id, - create_dept_id=user.dept_id or "", - **data, - ) - db.add(apply_obj) - db.flush() + apply_obj: BxReimburseApply | None = None + for attempt in range(5): + title, title_seq = resolve_reimburse_title( + db, user.name, tenant_no, reimburse_date, requested_title + ) + apply_obj = BxReimburseApply( + id=generate_uuid(), + title=title, + reimburse_date=reimburse_date, + title_seq=title_seq, + amount=total_amount, + expense_id=str(first_detail.get("expense_id") or ""), + expense_name=first_detail.get("expense_name") or "", + applicant_id=user.id, + applicant_name=user.name, + tenant_no=tenant_no, + create_by=user.id, + create_dept_id=user.dept_id or "", + **data, + ) + db.add(apply_obj) + try: + db.flush() + break + except IntegrityError: + db.rollback() + if attempt >= 4: + raise + continue + + if apply_obj is None: + raise RuntimeError("报销申请创建失败") for d in details: detail = BxReimburseDetail( @@ -423,9 +449,35 @@ class ReimburseService: if not apply_obj: return None + reimburse_date = None + date_changed = False + if "reimburse_date" in obj_in: + reimburse_date = parse_reimburse_date(obj_in.pop("reimburse_date")) + date_changed = reimburse_date != apply_obj.reimburse_date + + requested_title = obj_in.pop("title", None) + for key, value in obj_in.items(): setattr(apply_obj, key, value) + if reimburse_date is not None: + apply_obj.reimburse_date = reimburse_date + + if requested_title is not None: + apply_obj.title = str(requested_title).strip() + + should_regen_title = date_changed and is_auto_reimburse_title(apply_obj.title) + if should_regen_title: + seq = allocate_reimburse_title_seq( + db, tenant_no, apply_obj.reimburse_date, exclude_apply_id=apply_id + ) + apply_obj.title_seq = seq + apply_obj.title = format_reimburse_title( + apply_obj.applicant_name, apply_obj.reimburse_date, seq + ) + elif requested_title is not None and not is_auto_reimburse_title(apply_obj.title): + apply_obj.title_seq = None + if details is not None: db.query(BxReimburseDetail).filter( BxReimburseDetail.reimburse_id == apply_id, diff --git a/backend/app/services/pl_cert_service.py b/backend/app/services/pl_cert_service.py new file mode 100644 index 000000000..ca0f42e07 --- /dev/null +++ b/backend/app/services/pl_cert_service.py @@ -0,0 +1,211 @@ +"""运输计划 - 证书 CRUD 与到期扫描""" +from __future__ import annotations + +from datetime import date +from typing import Optional + +from sqlalchemy.orm import Session + +from app.core.utils import generate_uuid +from app.models.pl_models import PlCert, PlDocumentReminder, PlPersonnel, PlVehicle +from app.schemas.pl.base_data import CertRead, CertRow + + +def list_owner_certs( + db: Session, tenant_no: str, owner_type: str, owner_id: str +) -> list[PlCert]: + return ( + db.query(PlCert) + .filter( + PlCert.tenant_no == tenant_no, + PlCert.owner_type == owner_type, + PlCert.owner_id == owner_id, + PlCert.del_flag == 0, + ) + .order_by(PlCert.order_num.asc(), PlCert.create_time.asc()) + .all() + ) + + +def certs_to_read(certs: list[PlCert]) -> list[CertRead]: + return [ + CertRead( + id=c.id, + cert_id=c.id, + cert_name=c.cert_name, + cert_no=c.cert_no, + expire_date=c.expire_date, + remind_days=c.remind_days, + attachment_urls=c.attachment_urls, + owner_type=c.owner_type, + owner_id=c.owner_id, + status=c.status, + tenant_no=c.tenant_no, + create_time=c.create_time, + update_time=c.update_time, + ) + for c in certs + ] + + +def _normalize_cert_row(row: CertRow | dict) -> CertRow: + if isinstance(row, CertRow): + return row + return CertRow.model_validate(row) + + +def save_owner_certs( + db: Session, + owner_type: str, + owner_id: str, + cert_rows: list[CertRow | dict], + tenant_no: str, + *, + user_id: str, + dept_id: str, +) -> None: + """按 cert_id upsert;未出现在列表中的旧证软删。""" + existing = list_owner_certs(db, tenant_no, owner_type, owner_id) + existing_map = {c.id: c for c in existing} + keep_ids: set[str] = set() + + for idx, row in enumerate(cert_rows): + row = _normalize_cert_row(row) + cert_id = row.cert_id + if cert_id and cert_id in existing_map: + cert = existing_map[cert_id] + cert.cert_name = row.cert_name + cert.cert_no = row.cert_no + cert.expire_date = row.expire_date + cert.remind_days = row.remind_days + cert.attachment_urls = row.attachment_urls + cert.order_num = idx + cert.update_by = user_id + keep_ids.add(cert.id) + else: + cert = PlCert( + id=generate_uuid(), + tenant_no=tenant_no, + owner_type=owner_type, + owner_id=owner_id, + cert_name=row.cert_name, + cert_no=row.cert_no, + expire_date=row.expire_date, + remind_days=row.remind_days, + attachment_urls=row.attachment_urls, + status="valid", + order_num=idx, + create_by=user_id, + create_dept_id=dept_id, + ) + db.add(cert) + db.flush() + keep_ids.add(cert.id) + + for cert in existing: + if cert.id not in keep_ids: + cert.del_flag = 1 + cert.update_by = user_id + + +def nearest_expire_date( + db: Session, tenant_no: str, owner_type: str, owner_id: str +) -> Optional[date]: + row = ( + db.query(PlCert.expire_date) + .filter( + PlCert.tenant_no == tenant_no, + PlCert.owner_type == owner_type, + PlCert.owner_id == owner_id, + PlCert.del_flag == 0, + PlCert.expire_date.isnot(None), + ) + .order_by(PlCert.expire_date.asc()) + .first() + ) + return row[0] if row else None + + +def _resolve_owner_label( + db: Session, tenant_no: str, owner_type: str, owner_id: str +) -> str: + if owner_type == "vehicle": + vehicle = ( + db.query(PlVehicle) + .filter( + PlVehicle.id == owner_id, + PlVehicle.tenant_no == tenant_no, + PlVehicle.del_flag == 0, + ) + .first() + ) + return vehicle.license_plate if vehicle else owner_id + + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.id == owner_id, + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + .first() + ) + return personnel.personnel_name if personnel else owner_id + + +def scan_cert_expiry(db: Session, tenant_no: Optional[str] = None) -> int: + """扫描 pl_cert 生成到期提醒,返回新建条数。""" + today = date.today() + query = db.query(PlCert).filter( + PlCert.del_flag == 0, + PlCert.expire_date.isnot(None), + PlCert.status == "valid", + ) + if tenant_no: + query = query.filter(PlCert.tenant_no == tenant_no) + + created_count = 0 + for cert in query.all(): + days_remaining = (cert.expire_date - today).days + if days_remaining < 0 or days_remaining > cert.remind_days: + continue + + existing = ( + db.query(PlDocumentReminder) + .filter( + PlDocumentReminder.cert_id == cert.id, + PlDocumentReminder.status == "pending", + PlDocumentReminder.del_flag == 0, + ) + .first() + ) + if existing: + continue + + owner_label = _resolve_owner_label( + db, cert.tenant_no, cert.owner_type, cert.owner_id + ) + driver_id = cert.owner_id if cert.owner_type == "personnel" else None + driver_name = owner_label if cert.owner_type == "personnel" else None + + reminder = PlDocumentReminder( + id=generate_uuid(), + tenant_no=cert.tenant_no, + cert_id=cert.id, + owner_type=cert.owner_type, + owner_id=cert.owner_id, + owner_label=owner_label, + driver_id=driver_id, + driver_name=driver_name, + document_type=cert.cert_name, + document_no=cert.cert_no, + expire_date=cert.expire_date, + days_remaining=days_remaining, + status="pending", + create_by="system", + create_dept_id="", + ) + db.add(reminder) + created_count += 1 + + return created_count diff --git a/backend/app/services/pl_dibang_bridge_service.py b/backend/app/services/pl_dibang_bridge_service.py new file mode 100644 index 000000000..db4ccc6ed --- /dev/null +++ b/backend/app/services/pl_dibang_bridge_service.py @@ -0,0 +1,415 @@ +"""运输计划安排时联动地磅计划与出入库单。""" +from __future__ import annotations + +import calendar +import re +from dataclasses import dataclass +from datetime import date, datetime +from decimal import Decimal +from typing import Optional + +from sqlalchemy.orm import Session + +from app.core.utils import generate_uuid +from app.models.db_models import DbInboundOutbound, DbPurchasePlan, DbVehicle, DbWeighingSlip +from app.models.pl_models import PlPlan, PlPlanProduct, PlTransport, PlTransportDbLink +from app.services.db.inventory_id import next_inbound_outbound_id +from app.services.db.mappers import parse_date_str +from app.services.db.plan_helpers import default_execution_status, generate_plan_no +from app.services.db.product_helpers import ( + apply_product_snapshot_to_inventory, + apply_product_snapshot_to_plan, + resolve_crm_product, +) + + +@dataclass +class DibangInventoryLinkResult: + plan_product_id: str + product_name: str + db_purchase_plan_id: str + db_inventory_id: str + batch_no: str + plan_no: str + + +def resolve_partner_company(plan: PlPlan, plan_type: str) -> str: + if plan_type == "inbound": + return (plan.supplier_name or plan.party_a or "").strip() + if plan_type == "outbound": + return (plan.customer_name or plan.party_b or "").strip() + return "" + + +def _month_range(plan_date: date) -> tuple[date, date]: + month_start = plan_date.replace(day=1) + last_day = calendar.monthrange(plan_date.year, plan_date.month)[1] + month_end = plan_date.replace(day=last_day) + return month_start, month_end + + +def _plan_type_to_business_type(plan_type: str) -> Optional[str]: + if plan_type == "inbound": + return "入库" + if plan_type == "outbound": + return "出库" + return None + + +def _product_quantity(product: PlPlanProduct) -> float: + for value in (product.quantity, product.inbound_estimate_qty, product.outbound_estimate_qty): + if value is not None: + return float(value) + return 0.0 + + +def _generate_batch_no(db: Session, tenant_no: str) -> str: + rows = ( + db.query(DbInboundOutbound.batch_no) + .filter( + DbInboundOutbound.tenant_no == tenant_no, + DbInboundOutbound.del_flag == 0, + DbInboundOutbound.batch_no.like("CRKDH%"), + ) + .all() + ) + max_seq = 0 + pattern = re.compile(r"^CRKDH(\d+)$") + for (batch_no,) in rows: + if batch_no: + match = pattern.match(batch_no) + if match: + max_seq = max(max_seq, int(match.group(1))) + return f"CRKDH{max_seq + 1:07d}" + + +def _ensure_vehicle_exists(db: Session, tenant_no: str, vehicle_no: str) -> None: + vehicle_no = (vehicle_no or "").strip() + if not vehicle_no: + return + exists = ( + db.query(DbVehicle.id) + .filter( + DbVehicle.tenant_no == tenant_no, + DbVehicle.del_flag == 0, + DbVehicle.vehicle_no == vehicle_no, + ) + .first() + ) + if exists: + return + db.add( + DbVehicle( + id=generate_uuid(), + tenant_no=tenant_no, + vehicle_no=vehicle_no, + remark="", + ) + ) + db.flush() + + +def find_monthly_db_plan( + db: Session, + tenant_no: str, + plan_date: date, + business_type: str, + customer_name: str, + product_id: str, + specification: Optional[str], +) -> Optional[DbPurchasePlan]: + month_start, month_end = _month_range(plan_date) + customer = (customer_name or "").strip() + spec = (specification or "").strip() + + query = db.query(DbPurchasePlan).filter( + DbPurchasePlan.tenant_no == tenant_no, + DbPurchasePlan.del_flag == 0, + DbPurchasePlan.business_type == business_type, + DbPurchasePlan.product_id == product_id, + DbPurchasePlan.start_date <= month_end, + DbPurchasePlan.end_date >= month_start, + ) + if customer: + query = query.filter(DbPurchasePlan.customer_name == customer) + if spec: + query = query.filter(DbPurchasePlan.specification == spec) + + return query.order_by(DbPurchasePlan.create_time.desc()).first() + + +def _create_db_plan( + db: Session, + tenant_no: str, + plan: PlPlan, + product: PlPlanProduct, + business_type: str, + customer_name: str, + month_start: date, + month_end: date, + user_id: Optional[str], + dept_id: str, +) -> DbPurchasePlan: + snapshot = resolve_crm_product(db, tenant_no, product.product_id) + db_plan = DbPurchasePlan( + id=generate_uuid(), + tenant_no=tenant_no, + plan_no=generate_plan_no(), + plan_date=plan.plan_date, + start_date=month_start, + end_date=month_end, + business_type=business_type, + planned_quantity=Decimal(str(_product_quantity(product))), + vehicle_no=(plan.license_plate or "").strip(), + customer_name=customer_name or None, + remark=f"来源运输计划 {plan.plan_no}", + execution_status=default_execution_status(business_type), + executed_at=None, + last_weighing_slip_id=None, + executed_quantity=0, + auto_generate_enabled=0, + auto_generate_end_month=None, + auto_generate_last_month=None, + create_by=user_id, + create_dept_id=dept_id, + ) + apply_product_snapshot_to_plan(db_plan, snapshot) + db.add(db_plan) + db.flush() + return db_plan + + +def _create_db_inventory( + db: Session, + tenant_no: str, + plan: PlPlan, + product: PlPlanProduct, + db_plan: DbPurchasePlan, + business_type: str, + customer_name: str, + license_plate: str, + user_id: Optional[str], + dept_id: str, +) -> DbInboundOutbound: + if license_plate: + _ensure_vehicle_exists(db, tenant_no, license_plate) + + snapshot = resolve_crm_product(db, tenant_no, product.product_id) + status_value = "待入库" if business_type == "入库" else "待出库" + inventory = DbInboundOutbound( + id=next_inbound_outbound_id(db, tenant_no), + tenant_no=tenant_no, + date=plan.plan_date, + partner_company=customer_name, + business_type=business_type, + quantity=Decimal(str(_product_quantity(product))), + plan_no=(db_plan.plan_no or "").strip() or None, + batch_no=_generate_batch_no(db, tenant_no), + vehicle_no=(license_plate or "").strip(), + status=status_value, + remark=f"运输计划 {plan.plan_no}", + purchase_plan_id=db_plan.id, + create_by=user_id, + create_dept_id=dept_id, + ) + apply_product_snapshot_to_inventory(inventory, snapshot) + db.add(inventory) + db.flush() + return inventory + + +# 仅这些状态的出入库单可在「再次安排+勾地磅」时软删后重建 +_REVOKABLE_INVENTORY_STATUSES = frozenset({"待入库", "待出库", "待三方填写", "待处理"}) + + +def _inventory_has_weighing_slip(db: Session, inventory_id: str) -> bool: + return ( + db.query(DbWeighingSlip.id) + .filter( + DbWeighingSlip.inbound_outbound_id == inventory_id, + DbWeighingSlip.del_flag == 0, + DbWeighingSlip.is_voided == 0, + ) + .first() + is not None + ) + + +def revoke_regeneratable_dibang_for_transport( + db: Session, + *, + tenant_no: str, + transport_id: str, + user_id: Optional[str], +) -> None: + """再次勾选地磅安排前:软删本运输单此前生成的、仍可作废的出入库单及关联。 + + - 不删除地磅月计划(可能被其他业务复用) + - 若出入库单已完成的/已有关联磅单 → 阻断并提示人工处理 + """ + links = ( + db.query(PlTransportDbLink) + .filter( + PlTransportDbLink.tenant_no == tenant_no, + PlTransportDbLink.transport_id == transport_id, + PlTransportDbLink.del_flag == 0, + ) + .all() + ) + if not links: + return + + blocking: list[str] = [] + for link in links: + inventory = ( + db.query(DbInboundOutbound) + .filter( + DbInboundOutbound.id == link.db_inventory_id, + DbInboundOutbound.tenant_no == tenant_no, + DbInboundOutbound.del_flag == 0, + ) + .first() + ) + if not inventory: + link.del_flag = 1 + link.update_by = user_id + continue + + label = inventory.batch_no or inventory.id + status = (inventory.status or "").strip() + if status and status not in _REVOKABLE_INVENTORY_STATUSES: + blocking.append(f"{label}(状态:{status})") + continue + if _inventory_has_weighing_slip(db, inventory.id): + blocking.append(f"{label}(已关联地磅单)") + + if blocking: + raise ValueError( + "以下出入库单已执行或已关联地磅,无法随运输安排自动重建:" + + ";".join(blocking) + + "。请在地磅管理中处理后再安排。" + ) + + for link in links: + inventory = ( + db.query(DbInboundOutbound) + .filter( + DbInboundOutbound.id == link.db_inventory_id, + DbInboundOutbound.tenant_no == tenant_no, + DbInboundOutbound.del_flag == 0, + ) + .first() + ) + if inventory: + inventory.del_flag = 1 + inventory.update_by = user_id + link.del_flag = 1 + link.update_by = user_id + + db.flush() + + +def sync_dibang_for_transport( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + products: list[PlPlanProduct], + transport: PlTransport, + user_id: Optional[str], + dept_id: str, +) -> list[DibangInventoryLinkResult]: + business_type = _plan_type_to_business_type(plan.plan_type) + if not business_type: + return [] + + partner = resolve_partner_company(plan, plan.plan_type) + if not partner: + raise ValueError("无法解析往来单位,请检查合同供方/需方信息") + + plan_date = plan.plan_date + if isinstance(plan_date, datetime): + plan_date = plan_date.date() + elif isinstance(plan_date, str): + parsed = parse_date_str(plan_date) + plan_date = parsed or date.today() + month_start, month_end = _month_range(plan_date) + + license_plate = (transport.license_plate or plan.license_plate or "").strip() + + # 计划/安排变更后再次勾地磅:先作废本运输单此前可重建的出入库单,再按当前计划重建 + revoke_regeneratable_dibang_for_transport( + db, + tenant_no=tenant_no, + transport_id=transport.id, + user_id=user_id, + ) + + results: list[DibangInventoryLinkResult] = [] + + for product in products: + if not product.product_id: + raise ValueError(f"产品【{product.product_name}】未关联 CRM 产品,无法生成地磅计划") + + db_plan = find_monthly_db_plan( + db, + tenant_no, + plan_date, + business_type, + partner, + product.product_id, + product.model, + ) + if not db_plan: + db_plan = _create_db_plan( + db, + tenant_no, + plan, + product, + business_type, + partner, + month_start, + month_end, + user_id, + dept_id, + ) + + inventory = _create_db_inventory( + db, + tenant_no, + plan, + product, + db_plan, + business_type, + partner, + license_plate, + user_id, + dept_id, + ) + + link = PlTransportDbLink( + id=generate_uuid(), + tenant_no=tenant_no, + transport_id=transport.id, + plan_id=plan.id, + plan_product_id=product.id, + db_purchase_plan_id=db_plan.id, + db_inventory_id=inventory.id, + remark=f"运输计划 {plan.plan_no}", + create_by=user_id, + create_dept_id=dept_id, + ) + db.add(link) + + results.append( + DibangInventoryLinkResult( + plan_product_id=product.id, + product_name=product.product_name or "", + db_purchase_plan_id=db_plan.id, + db_inventory_id=inventory.id, + batch_no=inventory.batch_no or "", + plan_no=db_plan.plan_no or "", + ) + ) + + return results diff --git a/backend/app/services/pl_personnel_service.py b/backend/app/services/pl_personnel_service.py new file mode 100644 index 000000000..6f8d73dec --- /dev/null +++ b/backend/app/services/pl_personnel_service.py @@ -0,0 +1,208 @@ +"""运输计划 - 人员 upsert 与车辆-人员关联保存""" +from __future__ import annotations + +from typing import Optional + +from fastapi import HTTPException +from sqlalchemy.orm import Session + +from app.core.utils import generate_uuid +from app.models.pl_models import PlPersonnel, PlVehiclePersonnel +from app.schemas.pl.base_data import VehiclePersonnelRow + + +def upsert_personnel( + db: Session, + tenant_no: str, + row: VehiclePersonnelRow, + *, + user_id: str, + dept_id: str, +) -> str: + """按 personnelId → phone → name 弱匹配 upsert,返回 personnel_id。""" + personnel: Optional[PlPersonnel] = None + + if row.personnel_id: + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.id == row.personnel_id, + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + .first() + ) + + phone = (row.phone_no or "").strip() or None + if personnel is None and phone: + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.phone_no == phone, + PlPersonnel.del_flag == 0, + ) + .first() + ) + + name = (row.personnel_name or "").strip() + if personnel is None and name: + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.personnel_name == name, + PlPersonnel.del_flag == 0, + ) + .first() + ) + + if personnel: + personnel.personnel_name = name or personnel.personnel_name + personnel.phone_no = phone + if row.age is not None: + personnel.age = row.age + personnel.update_by = user_id + return personnel.id + + personnel = PlPersonnel( + id=generate_uuid(), + tenant_no=tenant_no, + personnel_name=name, + phone_no=phone, + age=row.age, + status="1", + create_by=user_id, + create_dept_id=dept_id, + ) + db.add(personnel) + db.flush() + return personnel.id + + +def save_vehicle_personnel( + db: Session, + vehicle_id: str, + rows: list[VehiclePersonnelRow], + tenant_no: str, + *, + user_id: str, + dept_id: str, +) -> None: + """软删旧关联后批量插入;校验默认司机唯一。""" + default_count = sum( + 1 for r in rows if r.role == "driver" and r.is_default == 1 + ) + if default_count > 1: + raise HTTPException(status_code=400, detail="每辆车最多设置一名默认司机") + + db.query(PlVehiclePersonnel).filter( + PlVehiclePersonnel.vehicle_id == vehicle_id, + PlVehiclePersonnel.tenant_no == tenant_no, + PlVehiclePersonnel.del_flag == 0, + ).update({"del_flag": 1, "update_by": user_id}, synchronize_session=False) + + for idx, row in enumerate(rows): + if row.role == "escort" and row.is_default == 1: + raise HTTPException(status_code=400, detail="仅司机角色可设为默认") + + personnel_id = upsert_personnel( + db, tenant_no, row, user_id=user_id, dept_id=dept_id + ) + link = PlVehiclePersonnel( + id=generate_uuid(), + tenant_no=tenant_no, + vehicle_id=vehicle_id, + personnel_id=personnel_id, + role=row.role, + is_default=row.is_default if row.role == "driver" else 0, + remark=row.remark, + order_num=idx, + create_by=user_id, + create_dept_id=dept_id, + ) + db.add(link) + + +def build_personnel_summary( + links: list[tuple[str, str, int]], +) -> tuple[str, Optional[str]]: + """links: [(personnel_name, role, is_default)] → (summary, default_driver_name).""" + role_labels = {"driver": "司机", "escort": "押运员"} + parts: list[str] = [] + default_name: Optional[str] = None + + for name, role, is_default in links: + label = role_labels.get(role, role) + parts.append(f"{name}({label})") + if role == "driver" and int(is_default) == 1: + default_name = name + + return "、".join(parts), default_name + + +def load_vehicle_personnel_rows( + db: Session, tenant_no: str, vehicle_id: str +) -> list[VehiclePersonnelRow]: + """查询车辆关联人员子表行。""" + rows = ( + db.query(PlVehiclePersonnel, PlPersonnel) + .join( + PlPersonnel, + PlPersonnel.id == PlVehiclePersonnel.personnel_id, + ) + .filter( + PlVehiclePersonnel.vehicle_id == vehicle_id, + PlVehiclePersonnel.tenant_no == tenant_no, + PlVehiclePersonnel.del_flag == 0, + PlPersonnel.del_flag == 0, + ) + .order_by(PlVehiclePersonnel.order_num.asc(), PlVehiclePersonnel.create_time.asc()) + .all() + ) + return [ + VehiclePersonnelRow( + personnel_id=p.personnel_id, + personnel_name=person.personnel_name, + phone_no=person.phone_no, + age=person.age, + role=p.role, + is_default=p.is_default, + remark=p.remark, + ) + for p, person in rows + ] + + +def load_vehicle_personnel_summaries( + db: Session, tenant_no: str, vehicle_ids: list[str] +) -> dict[str, tuple[str, Optional[str]]]: + """批量加载 personnelSummary / defaultDriverName。""" + if not vehicle_ids: + return {} + + rows = ( + db.query( + PlVehiclePersonnel.vehicle_id, + PlPersonnel.personnel_name, + PlVehiclePersonnel.role, + PlVehiclePersonnel.is_default, + ) + .join(PlPersonnel, PlPersonnel.id == PlVehiclePersonnel.personnel_id) + .filter( + PlVehiclePersonnel.vehicle_id.in_(vehicle_ids), + PlVehiclePersonnel.tenant_no == tenant_no, + PlVehiclePersonnel.del_flag == 0, + PlPersonnel.del_flag == 0, + ) + .order_by(PlVehiclePersonnel.order_num.asc()) + .all() + ) + + grouped: dict[str, list[tuple[str, str, str]]] = {} + for vehicle_id, name, role, is_default in rows: + grouped.setdefault(vehicle_id, []).append((name, role, is_default)) + + return { + vid: build_personnel_summary(items) for vid, items in grouped.items() + } diff --git a/backend/app/services/pl_plan_service.py b/backend/app/services/pl_plan_service.py new file mode 100644 index 000000000..b6d9a2d54 --- /dev/null +++ b/backend/app/services/pl_plan_service.py @@ -0,0 +1,697 @@ +"""运输计划业务逻辑""" +from datetime import date +from decimal import Decimal +from typing import Optional + +from fastapi import HTTPException +from sqlalchemy.orm import Session + +from app.core.utils import generate_uuid +from app.models.pl_models import ( + PlCarrier, + PlPersonnel, + PlPlan, + PlPlanProduct, + PlPlanTransport, + PlTransport, + PlVehicle, + PlVehiclePersonnel, +) +from app.schemas.pl.plan import PlanCreateFull, PlanProductCreate, PlanTransportCreateBlock + + +def determine_plan_type(supplier_name: Optional[str], destination_name: Optional[str]) -> str: + if destination_name and ("安庆山峡" in destination_name or "安徽云栋" in destination_name): + return "inbound" + if supplier_name and ("安庆山峡" in supplier_name or "安徽云栋" in supplier_name): + return "outbound" + return "direct" + + +def _product_quantity(prod: PlanProductCreate) -> Decimal: + if prod.quantity is not None: + return Decimal(str(prod.quantity)) + if prod.inbound_estimate_qty is not None: + return Decimal(str(prod.inbound_estimate_qty)) + if prod.outbound_estimate_qty is not None: + return Decimal(str(prod.outbound_estimate_qty)) + return Decimal("0") + + +def sum_product_quantities(products: list[PlanProductCreate]) -> Decimal: + return sum(_product_quantity(p) for p in products) + + +def _estimate_qty_fields(plan_type: str, qty: Optional[Decimal]) -> dict: + if qty is None: + return {} + q = float(qty) + if plan_type == "inbound": + return {"inbound_estimate_qty": q, "outbound_estimate_qty": q} + if plan_type == "outbound": + return {"outbound_estimate_qty": q, "inbound_estimate_qty": q} + return {"inbound_estimate_qty": q, "outbound_estimate_qty": q} + + +def build_plan_product( + *, + tenant_no: str, + plan_id: str, + plan_type: str, + prod: PlanProductCreate, + order_num: int, + user_id: str, + dept_id: str, +) -> PlPlanProduct: + qty = _product_quantity(prod) + estimates = _estimate_qty_fields(plan_type, qty if qty else None) + tax_price = prod.tax_price + return PlPlanProduct( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=plan_id, + product_id=prod.product_id, + product_no=prod.product_no, + product_name=prod.product_name, + model=prod.model, + unit=prod.unit or "吨", + category_name=prod.category_name, + package_spec=prod.package_spec, + delivery_method=prod.delivery_method, + quantity=qty if qty else None, + actual_qty=Decimal(str(prod.actual_qty)) if prod.actual_qty is not None else (qty if qty else None), + tax_price=tax_price, + tax_amount=prod.tax_amount, + tax_subtotal=prod.tax_subtotal, + is_explosive=prod.is_explosive, + is_toxic=prod.is_toxic, + purchase_cert_url=prod.purchase_cert_url, + transport_cert_url=prod.transport_cert_url, + inbound_price=tax_price, + outbound_price=tax_price, + inbound_amount=prod.tax_subtotal, + outbound_amount=prod.tax_subtotal, + remark=prod.remark, + order_num=order_num, + create_by=user_id, + create_dept_id=dept_id, + **estimates, + ) + + +def _resolve_driver( + db: Session, + tenant_no: str, + vehicle_id: str, + driver_id: Optional[str], +) -> tuple[str, str, Optional[str]]: + if driver_id: + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.id == driver_id, + PlPersonnel.tenant_no == tenant_no, + PlPersonnel.del_flag == 0, + ) + .first() + ) + if personnel: + return personnel.id, personnel.personnel_name, personnel.phone_no + + default_link = ( + db.query(PlVehiclePersonnel) + .filter( + PlVehiclePersonnel.vehicle_id == vehicle_id, + PlVehiclePersonnel.tenant_no == tenant_no, + PlVehiclePersonnel.del_flag == 0, + PlVehiclePersonnel.role == "driver", + ) + .order_by(PlVehiclePersonnel.is_default.desc(), PlVehiclePersonnel.order_num.asc()) + .first() + ) + if default_link: + personnel = ( + db.query(PlPersonnel) + .filter( + PlPersonnel.id == default_link.personnel_id, + PlPersonnel.del_flag == 0, + ) + .first() + ) + if personnel: + return personnel.id, personnel.personnel_name, personnel.phone_no + + raise HTTPException(status_code=400, detail="请选择司机或确保车辆已关联默认司机") + + +def _calc_freight_amount( + freight_type: str, + products: list[PlPlanProduct], + transport_qty: Optional[Decimal], + freight_price: Optional[Decimal], + freight_amount: Optional[Decimal], +) -> Decimal: + if freight_type == "by_trip": + return Decimal(str(freight_amount or 0)) + + qty = transport_qty + if qty is None: + qty = sum( + Decimal(str(p.quantity or p.inbound_estimate_qty or p.outbound_estimate_qty or 0)) + for p in products + ) + if freight_price is not None: + computed = qty * Decimal(str(freight_price)) + if freight_amount is not None: + return Decimal(str(freight_amount)) + return computed + return Decimal(str(freight_amount or 0)) + + +def _validate_toxic_products(products: list[PlPlanProduct]) -> None: + for prod in products: + if prod.is_explosive or prod.is_toxic: + if not prod.purchase_cert_url or not prod.transport_cert_url: + label = "易制爆" if prod.is_explosive else "易制毒" + raise HTTPException( + status_code=400, + detail=f"产品【{prod.product_name}】为{label},必须上传购买证和运输证", + ) + + +def resolve_hazard_flags_from_crm( + db: Session, + tenant_no: str, + product_id: Optional[str], + is_toxic: int = 0, + is_explosive: int = 0, +) -> tuple[int, int]: + if is_toxic or is_explosive: + return int(is_toxic or 0), int(is_explosive or 0) + if not product_id: + return 0, 0 + from app.models.crm_models import CrmProduct + + row = ( + db.query(CrmProduct) + .filter( + CrmProduct.id == product_id, + CrmProduct.tenant_no == tenant_no, + CrmProduct.del_flag == 0, + ) + .first() + ) + if not row: + return 0, 0 + return int(row.is_toxic or 0), int(row.is_explosive or 0) + + +def update_plan_product_certs( + db: Session, + *, + tenant_no: str, + plan_id: str, + items: list, + user_id: str, +) -> list[PlPlanProduct]: + plan = ( + db.query(PlPlan) + .filter( + PlPlan.id == plan_id, + PlPlan.tenant_no == tenant_no, + PlPlan.del_flag == 0, + ) + .first() + ) + if not plan: + raise HTTPException(status_code=404, detail="计划不存在") + if plan.archive_status == "archived": + raise HTTPException(status_code=400, detail="已归档的计划不能修改") + + updated: list[PlPlanProduct] = [] + for item in items: + row = ( + db.query(PlPlanProduct) + .filter( + PlPlanProduct.id == item.id, + PlPlanProduct.plan_id == plan_id, + PlPlanProduct.tenant_no == tenant_no, + PlPlanProduct.del_flag == 0, + ) + .first() + ) + if not row: + raise HTTPException(status_code=404, detail=f"计划产品不存在: {item.id}") + if not (row.is_toxic or row.is_explosive): + raise HTTPException(status_code=400, detail=f"产品【{row.product_name}】无需上传危化品证书") + row.purchase_cert_url = (item.purchase_cert_url or "").strip() or None + row.transport_cert_url = (item.transport_cert_url or "").strip() or None + row.update_by = user_id + updated.append(row) + + plan.update_by = user_id + db.commit() + for row in updated: + db.refresh(row) + return updated + + +def _generate_transport_no(db: Session) -> str: + now = date.today() + prefix = f"SXYS{now.strftime('%Y%m')}" + last = ( + db.query(PlTransport) + .filter(PlTransport.transport_no.like(f"{prefix}%")) + .order_by(PlTransport.transport_no.desc()) + .first() + ) + seq = 1 + if last and last.transport_no: + try: + seq = int(last.transport_no[-6:]) + 1 + except ValueError: + seq = 1 + return f"{prefix}{seq:06d}" + + +def _resolve_transport_context( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + transport_payload: PlanTransportCreateBlock, + products: list[PlPlanProduct], +) -> tuple[PlVehicle, str, str, Optional[str], Optional[str], Optional[str], Decimal, Optional[Decimal]]: + vehicle = ( + db.query(PlVehicle) + .filter( + PlVehicle.id == transport_payload.vehicle_id, + PlVehicle.tenant_no == tenant_no, + PlVehicle.del_flag == 0, + ) + .first() + ) + if not vehicle: + raise HTTPException(status_code=400, detail="车辆不存在") + + driver_id, driver_name, driver_phone = _resolve_driver( + db, tenant_no, transport_payload.vehicle_id, transport_payload.driver_id + ) + carrier_id = transport_payload.carrier_id or vehicle.carrier_id + carrier_name = vehicle.carrier_name + if carrier_id: + carrier = ( + db.query(PlCarrier) + .filter(PlCarrier.id == carrier_id, PlCarrier.del_flag == 0) + .first() + ) + if carrier: + carrier_name = carrier.carrier_name + + freight_amount = _calc_freight_amount( + transport_payload.freight_type, + products, + transport_payload.transport_qty, + transport_payload.freight_price, + transport_payload.freight_amount, + ) + transport_qty = transport_payload.transport_qty + if transport_qty is None and transport_payload.freight_type == "by_weight": + transport_qty = sum( + Decimal(str(p.quantity or p.inbound_estimate_qty or p.outbound_estimate_qty or 0)) + for p in products + ) + + return ( + vehicle, + driver_id, + driver_name, + driver_phone, + carrier_id, + carrier_name, + freight_amount, + transport_qty, + ) + + +def _apply_payload_to_transport_row( + transport: PlTransport, + *, + vehicle: PlVehicle, + driver_id: str, + driver_name: str, + driver_phone: Optional[str], + carrier_id: Optional[str], + carrier_name: Optional[str], + plan: PlPlan, + transport_payload: PlanTransportCreateBlock, + freight_amount: Decimal, + transport_qty: Optional[Decimal], + user_id: str, +) -> None: + transport.vehicle_id = vehicle.id + transport.license_plate = vehicle.license_plate + transport.driver_id = driver_id + transport.driver_name = driver_name + transport.driver_phone = driver_phone + transport.carrier_id = carrier_id + transport.carrier_name = carrier_name + transport.start_point = plan.pickup_address + transport.end_point = plan.destination_address or plan.destination_name + transport.distance_km = transport_payload.distance_km + transport.transport_qty = transport_qty + transport.freight_price = transport_payload.freight_price + transport.freight_amount = freight_amount or 0 + transport.freight_type = transport_payload.freight_type + transport.has_invoice = transport_payload.has_invoice + transport.unit = "吨" if transport_payload.freight_type == "by_weight" else "趟" + if transport_payload.remark is not None: + transport.remark = transport_payload.remark + transport.update_by = user_id + + +def upsert_draft_transport_for_plan( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + transport_payload: PlanTransportCreateBlock, + products: list[PlPlanProduct], + user_id: str, + dept_id: str, +) -> None: + """写入/更新草稿运输单(pl_transport + pl_plan_transport),计划保持待安排。""" + ( + vehicle, + driver_id, + driver_name, + driver_phone, + carrier_id, + carrier_name, + freight_amount, + transport_qty, + ) = _resolve_transport_context( + db, + tenant_no=tenant_no, + plan=plan, + transport_payload=transport_payload, + products=products, + ) + + transport: Optional[PlTransport] = None + if plan.transport_id: + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + + if transport: + _apply_payload_to_transport_row( + transport, + vehicle=vehicle, + driver_id=driver_id, + driver_name=driver_name, + driver_phone=driver_phone, + carrier_id=carrier_id, + carrier_name=carrier_name, + plan=plan, + transport_payload=transport_payload, + freight_amount=freight_amount, + transport_qty=transport_qty, + user_id=user_id, + ) + if transport.transport_status == "draft": + pass + else: + transport_no = _generate_transport_no(db) + transport = PlTransport( + id=generate_uuid(), + tenant_no=tenant_no, + transport_no=transport_no, + transport_status="draft", + approval_status="none", + remark=transport_payload.remark, + create_by=user_id, + create_dept_id=dept_id, + ) + db.add(transport) + db.flush() + db.add( + PlPlanTransport( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=plan.id, + transport_id=transport.id, + create_by=user_id, + create_dept_id=dept_id, + ) + ) + plan.transport_id = transport.id + plan.transport_no = transport_no + _apply_payload_to_transport_row( + transport, + vehicle=vehicle, + driver_id=driver_id, + driver_name=driver_name, + driver_phone=driver_phone, + carrier_id=carrier_id, + carrier_name=carrier_name, + plan=plan, + transport_payload=transport_payload, + freight_amount=freight_amount, + transport_qty=transport_qty, + user_id=user_id, + ) + + plan.vehicle_id = vehicle.id + plan.license_plate = vehicle.license_plate + plan.driver_id = driver_id + plan.driver_name = driver_name + plan.freight_amount = freight_amount or 0 + if plan.transport_status != "arranged": + plan.transport_status = "pending" + + +def clear_draft_transport_for_plan( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + user_id: str, +) -> None: + """清除计划上的草稿运输单及车辆预选。""" + if plan.transport_id: + transport = ( + db.query(PlTransport) + .filter( + PlTransport.id == plan.transport_id, + PlTransport.tenant_no == tenant_no, + PlTransport.del_flag == 0, + ) + .first() + ) + if transport and transport.transport_status == "draft": + transport.del_flag = 1 + transport.update_by = user_id + db.query(PlPlanTransport).filter( + PlPlanTransport.plan_id == plan.id, + PlPlanTransport.transport_id == transport.id, + PlPlanTransport.tenant_no == tenant_no, + PlPlanTransport.del_flag == 0, + ).update({"del_flag": 1, "update_by": user_id}) + plan.transport_id = None + plan.transport_no = None + + plan.vehicle_id = None + plan.license_plate = None + plan.driver_id = None + plan.driver_name = None + plan.freight_amount = 0 + if plan.transport_status != "arranged": + plan.transport_status = "pending" + + +def sync_transport_prefill_for_plan( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + transport_payload: PlanTransportCreateBlock, + products: list[PlPlanProduct], + user_id: str, + dept_id: str = "", +) -> None: + """同步运输预选到草稿运输子表(pl_transport)。""" + upsert_draft_transport_for_plan( + db, + tenant_no=tenant_no, + plan=plan, + transport_payload=transport_payload, + products=products, + user_id=user_id, + dept_id=dept_id or user_id, + ) + + +def apply_vehicle_prefill_to_plan( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + transport_payload: PlanTransportCreateBlock, + products: list[PlPlanProduct], + user_id: str = "", + dept_id: str = "", +) -> None: + """兼容旧调用:写入草稿运输子表。""" + upsert_draft_transport_for_plan( + db, + tenant_no=tenant_no, + plan=plan, + transport_payload=transport_payload, + products=products, + user_id=user_id, + dept_id=dept_id or user_id, + ) + + +def create_transport_for_plan( + db: Session, + *, + tenant_no: str, + plan: PlPlan, + products: list[PlPlanProduct], + transport_payload: PlanTransportCreateBlock, + user_id: str, + dept_id: str, + generate_transport_no, +) -> PlTransport: + vehicle = ( + db.query(PlVehicle) + .filter( + PlVehicle.id == transport_payload.vehicle_id, + PlVehicle.tenant_no == tenant_no, + PlVehicle.del_flag == 0, + ) + .first() + ) + if not vehicle: + raise HTTPException(status_code=400, detail="车辆不存在") + + _validate_toxic_products(products) + + driver_id, driver_name, driver_phone = _resolve_driver( + db, tenant_no, transport_payload.vehicle_id, transport_payload.driver_id + ) + + carrier_name = vehicle.carrier_name + carrier_id = transport_payload.carrier_id or vehicle.carrier_id + if carrier_id: + carrier = ( + db.query(PlCarrier) + .filter(PlCarrier.id == carrier_id, PlCarrier.del_flag == 0) + .first() + ) + if carrier: + carrier_name = carrier.carrier_name + + freight_amount = _calc_freight_amount( + transport_payload.freight_type, + products, + transport_payload.transport_qty, + transport_payload.freight_price, + transport_payload.freight_amount, + ) + + transport_qty = transport_payload.transport_qty + if transport_qty is None and transport_payload.freight_type == "by_weight": + transport_qty = sum( + Decimal(str(p.quantity or p.inbound_estimate_qty or p.outbound_estimate_qty or 0)) + for p in products + ) + + transport_no = generate_transport_no(db) + transport = PlTransport( + id=generate_uuid(), + tenant_no=tenant_no, + transport_no=transport_no, + vehicle_id=vehicle.id, + license_plate=vehicle.license_plate, + driver_id=driver_id, + driver_name=driver_name, + driver_phone=driver_phone, + carrier_id=carrier_id, + carrier_name=carrier_name, + start_point=plan.pickup_address, + end_point=plan.destination_address or plan.destination_name, + distance_km=transport_payload.distance_km, + unit="吨" if transport_payload.freight_type == "by_weight" else "趟", + transport_qty=transport_qty, + freight_price=transport_payload.freight_price, + freight_amount=freight_amount or 0, + freight_type=transport_payload.freight_type, + has_invoice=transport_payload.has_invoice, + transport_status="draft", + approval_status="none", + remark=transport_payload.remark, + create_by=user_id, + create_dept_id=dept_id, + ) + db.add(transport) + + db.add( + PlPlanTransport( + id=generate_uuid(), + tenant_no=tenant_no, + plan_id=plan.id, + transport_id=transport.id, + create_by=user_id, + create_dept_id=dept_id, + ) + ) + + plan.transport_id = transport.id + plan.transport_no = transport_no + plan.vehicle_id = vehicle.id + plan.license_plate = vehicle.license_plate + plan.driver_id = driver_id + plan.driver_name = driver_name + plan.transport_status = "arranged" + plan.freight_amount = freight_amount or 0 + + return transport + + +def validate_create_full(payload: PlanCreateFull) -> None: + if not payload.contract_id: + raise HTTPException(status_code=422, detail="请选择合同") + if not payload.products: + raise HTTPException(status_code=422, detail="请至少保留一条产品明细") + + transport = payload.transport + if not transport or not transport.vehicle_id: + return + + if payload.has_freight: + if transport.freight_type == "by_weight": + if not transport.freight_price or Decimal(str(transport.freight_price)) <= 0: + raise HTTPException(status_code=422, detail="按重量计费时请填写运输单价") + qty = transport.transport_qty or sum_product_quantities(payload.products) + if qty <= 0: + raise HTTPException(status_code=422, detail="运输量必须大于0") + elif transport.freight_type == "by_trip": + if not transport.freight_amount or Decimal(str(transport.freight_amount)) <= 0: + raise HTTPException(status_code=422, detail="按趟计费时请填写运费金额") + + +def calc_plan_total_amount(products: list[PlanProductCreate]) -> Decimal: + total = Decimal("0") + for prod in products: + if prod.tax_subtotal is not None: + total += Decimal(str(prod.tax_subtotal)) + return total diff --git a/backend/app/utils/bx_codegen.py b/backend/app/utils/bx_codegen.py index 3613d4338..3d63d44a4 100644 --- a/backend/app/utils/bx_codegen.py +++ b/backend/app/utils/bx_codegen.py @@ -1,9 +1,16 @@ """报销单号/标题生成(从 bx-backend 迁移,增加 tenant_no 隔离)。""" -from datetime import datetime +from __future__ import annotations -from sqlalchemy import text +import re +from datetime import date, datetime + +from sqlalchemy import func, text from sqlalchemy.orm import Session +from app.models.bx_models import BxReimburseApply + +_AUTO_TITLE_SUFFIX_RE = re.compile(r"报销单\d{11}$") + def generate_apply_code(db: Session, prefix: str, tenant_no: str) -> str: """ @@ -30,17 +37,100 @@ def generate_apply_code(db: Session, prefix: str, tenant_no: str) -> str: return f"{prefix}{today}{seq:03d}" -def generate_title(db: Session, applicant_name: str, tenant_no: str) -> str: - today = datetime.now().strftime("%Y%m%d") - like_pattern = f"%报销单{today}%" +def parse_reimburse_date(value: str | date | datetime | None) -> date: + if value is None: + return datetime.now().date() + if isinstance(value, datetime): + return value.date() + if isinstance(value, date): + return value + text_value = str(value).strip() + if not text_value: + return datetime.now().date() + return datetime.strptime(text_value, "%Y-%m-%d").date() - result = db.execute( - text( - "SELECT COUNT(*) FROM bx_reimburse_apply " - "WHERE tenant_no = :tenant_no AND title LIKE :p AND del_flag = 0" - ), - {"tenant_no": tenant_no, "p": like_pattern}, - ).scalar() - seq = (result or 0) + 1 - return f"{applicant_name}报销单{today}{seq:03d}" +def format_reimburse_title(applicant_name: str, reimburse_date: date, seq: int) -> str: + return f"{applicant_name}报销单{reimburse_date.strftime('%Y%m%d')}{seq:03d}" + + +def is_auto_reimburse_title(title: str) -> bool: + return bool(_AUTO_TITLE_SUFFIX_RE.search(str(title or "").strip())) + + +def preview_reimburse_title_seq( + db: Session, + tenant_no: str, + reimburse_date: date, + exclude_apply_id: str | None = None, +) -> int: + """预览序号(不加行锁,仅用于弹窗展示)。""" + query = db.query(func.max(BxReimburseApply.title_seq)).filter( + BxReimburseApply.tenant_no == tenant_no, + BxReimburseApply.reimburse_date == reimburse_date, + BxReimburseApply.del_flag == 0, + BxReimburseApply.title_seq.isnot(None), + ) + if exclude_apply_id: + query = query.filter(BxReimburseApply.id != exclude_apply_id) + max_seq = query.scalar() + return int(max_seq or 0) + 1 + + +def allocate_reimburse_title_seq( + db: Session, + tenant_no: str, + reimburse_date: date, + exclude_apply_id: str | None = None, +) -> int: + """ + 分配同租户、同报销日期下的标题序号(MAX+1)。 + 配合 uk_tenant_reimburse_date_title_seq 唯一约束,并发冲突时由上层重试。 + """ + query = db.query(func.max(BxReimburseApply.title_seq)).filter( + BxReimburseApply.tenant_no == tenant_no, + BxReimburseApply.reimburse_date == reimburse_date, + BxReimburseApply.del_flag == 0, + BxReimburseApply.title_seq.isnot(None), + ) + if exclude_apply_id: + query = query.filter(BxReimburseApply.id != exclude_apply_id) + max_seq = query.with_for_update().scalar() + return int(max_seq or 0) + 1 + + +def generate_title( + db: Session, + applicant_name: str, + tenant_no: str, + reimburse_date: str | date | datetime | None = None, + exclude_apply_id: str | None = None, +) -> str: + """预览用标题生成(提交时仍会在服务端重新分配序号以保证并发安全)。""" + rd = parse_reimburse_date(reimburse_date) + seq = preview_reimburse_title_seq(db, tenant_no, rd, exclude_apply_id) + return format_reimburse_title(applicant_name, rd, seq) + + +def resolve_reimburse_title( + db: Session, + applicant_name: str, + tenant_no: str, + reimburse_date: date, + requested_title: str | None, + exclude_apply_id: str | None = None, +) -> tuple[str, int | None]: + """ + 确定最终标题与 title_seq。 + - 未填标题或仍为自动标题格式时:按报销日期重新分配序号并生成标题。 + - 自定义标题:title_seq 为 None(不参与唯一序号约束)。 + """ + custom_title = str(requested_title or "").strip() + if custom_title and not is_auto_reimburse_title(custom_title): + return custom_title, None + + seq = allocate_reimburse_title_seq( + db, tenant_no, reimburse_date, exclude_apply_id=exclude_apply_id + ) + title = format_reimburse_title(applicant_name, reimburse_date, seq) + return title, seq diff --git a/backend/graphify-out/.graphify_labels.json b/backend/graphify-out/.graphify_labels.json index a0a8db74a..ff1119fb9 100644 --- a/backend/graphify-out/.graphify_labels.json +++ b/backend/graphify-out/.graphify_labels.json @@ -86,7 +86,6 @@ "84": "Community 84", "85": "Community 85", "86": "Community 86", - "87": "Community 87", "88": "Community 88", "89": "Community 89", "90": "Community 90", @@ -97,7 +96,6 @@ "95": "Community 95", "96": "Community 96", "97": "Community 97", - "98": "Community 98", "99": "Community 99", "100": "Community 100", "101": "Community 101", @@ -124,13 +122,20 @@ "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" + "133": "Community 133", + "134": "Community 134", + "135": "Community 135", + "136": "Community 136", + "137": "Community 137", + "138": "Community 138", + "139": "Community 139", + "140": "Community 140", + "141": "Community 141", + "143": "Community 143", + "144": "Community 144", + "146": "Community 146", + "147": "Community 147" } diff --git a/backend/graphify-out/GRAPH_REPORT.md b/backend/graphify-out/GRAPH_REPORT.md index 488bc6a46..cd4feaea6 100644 --- a/backend/graphify-out/GRAPH_REPORT.md +++ b/backend/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - backend (2026-06-09) +# Graph Report - backend (2026-06-21) ## Corpus Check -- 174 files · ~114,294 words +- 193 files · ~131,723 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 3328 nodes · 21999 edges · 134 communities (129 shown, 5 thin omitted) -- Extraction: 48% EXTRACTED · 52% INFERRED · 0% AMBIGUOUS · INFERRED: 11419 edges (avg confidence: 0.51) +- 3873 nodes · 29741 edges · 139 communities (137 shown, 2 thin omitted) +- Extraction: 48% EXTRACTED · 52% INFERRED · 0% AMBIGUOUS · INFERRED: 15365 edges (avg confidence: 0.5) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `725774ef` +- Built from commit: `c3be9d1d` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -47,6 +47,10 @@ - [[_COMMUNITY_Community 29|Community 29]] - [[_COMMUNITY_Community 30|Community 30]] - [[_COMMUNITY_Community 31|Community 31]] +- [[_COMMUNITY_Community 32|Community 32]] +- [[_COMMUNITY_Community 33|Community 33]] +- [[_COMMUNITY_Community 34|Community 34]] +- [[_COMMUNITY_Community 35|Community 35]] - [[_COMMUNITY_Community 36|Community 36]] - [[_COMMUNITY_Community 37|Community 37]] - [[_COMMUNITY_Community 38|Community 38]] @@ -77,6 +81,8 @@ - [[_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]] - [[_COMMUNITY_Community 70|Community 70]] @@ -86,6 +92,7 @@ - [[_COMMUNITY_Community 74|Community 74]] - [[_COMMUNITY_Community 75|Community 75]] - [[_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]] @@ -95,7 +102,6 @@ - [[_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]] @@ -106,7 +112,6 @@ - [[_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]] @@ -121,551 +126,583 @@ - [[_COMMUNITY_Community 110|Community 110]] - [[_COMMUNITY_Community 111|Community 111]] - [[_COMMUNITY_Community 112|Community 112]] -- [[_COMMUNITY_Community 113|Community 113]] -- [[_COMMUNITY_Community 114|Community 114]] -- [[_COMMUNITY_Community 116|Community 116]] -- [[_COMMUNITY_Community 117|Community 117]] -- [[_COMMUNITY_Community 118|Community 118]] -- [[_COMMUNITY_Community 119|Community 119]] -- [[_COMMUNITY_Community 120|Community 120]] -- [[_COMMUNITY_Community 121|Community 121]] +- [[_COMMUNITY_Community 122|Community 122]] - [[_COMMUNITY_Community 123|Community 123]] - [[_COMMUNITY_Community 124|Community 124]] -- [[_COMMUNITY_Community 125|Community 125]] - [[_COMMUNITY_Community 126|Community 126]] -- [[_COMMUNITY_Community 127|Community 127]] - [[_COMMUNITY_Community 128|Community 128]] - [[_COMMUNITY_Community 129|Community 129]] -- [[_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 136|Community 136]] +- [[_COMMUNITY_Community 137|Community 137]] +- [[_COMMUNITY_Community 138|Community 138]] +- [[_COMMUNITY_Community 139|Community 139]] +- [[_COMMUNITY_Community 140|Community 140]] +- [[_COMMUNITY_Community 141|Community 141]] +- [[_COMMUNITY_Community 143|Community 143]] +- [[_COMMUNITY_Community 144|Community 144]] +- [[_COMMUNITY_Community 146|Community 146]] +- [[_COMMUNITY_Community 147|Community 147]] ## God Nodes (most connected - your core abstractions) -1. `BaseModel` - 301 edges -2. `Session` - 256 edges -3. `success_response()` - 246 edges -4. `Session` - 243 edges -5. `error_response()` - 234 edges -6. `get_tenant_no()` - 201 edges -7. `SysUser` - 180 edges -8. `generate_uuid()` - 128 edges -9. `int` - 111 edges -10. `CustomerListBody` - 108 edges +1. `Session` - 1134 edges +2. `BaseModel` - 371 edges +3. `int` - 336 edges +4. `Any` - 331 edges +5. `get_tenant_no()` - 264 edges +6. `Session` - 256 edges +7. `bool` - 256 edges +8. `success_response()` - 250 edges +9. `error_response()` - 237 edges +10. `SysUser` - 203 edges ## Surprising Connections (you probably didn't know these) -- `Any` --uses--> `SysApiRequestLog` [INFERRED] - app/core/api_request_log_middleware.py → app/models/models.py -- `bytes` --uses--> `SysApiRequestLog` [INFERRED] - app/core/api_request_log_middleware.py → app/models/models.py -- `bool` --uses--> `SysApiRequestLog` [INFERRED] - app/core/api_request_log_middleware.py → app/models/models.py -- `UploadFile` --uses--> `BxUserContext` [INFERRED] - app/api/bx/attachment.py → app/core/bx_auth.py -- `int` --uses--> `BxUserContext` [INFERRED] - app/api/bx/workflow.py → app/core/bx_auth.py +- `bool` --uses--> `DbUserContext` [INFERRED] + scripts/migrate_dibang_data.py → app/core/db_auth.py +- `date` --uses--> `DbUserContext` [INFERRED] + scripts/migrate_dibang_data.py → app/core/db_auth.py +- `int` --uses--> `DbUserContext` [INFERRED] + scripts/run_db_auto_generate_plans.py → app/core/db_auth.py +- `int` --uses--> `ApiRequestLogMiddleware` [INFERRED] + scripts/run_db_auto_generate_plans.py → app/core/api_request_log_middleware.py +- `int` --uses--> `LocalStorage` [INFERRED] + scripts/run_db_auto_generate_plans.py → app/core/storage.py -## Communities (134 total, 5 thin omitted) +## Communities (139 total, 2 thin omitted) ### Community 0 - "Community 0" -Cohesion: 0.25 -Nodes (27): Any, bool, CRM 公海池规则 CRUD + 规则执行逻辑, int, Session, str, generate_uuid(), create_pool_rule() (+19 more) +Cohesion: 0.23 +Nodes (74): date, DbUserContext, int, Session, str, DocumentReminderRead, DocumentReminderUpdate, InventoryLedgerResponse (+66 more) ### Community 1 - "Community 1" -Cohesion: 0.08 -Nodes (100): register_contract_routes(), register_contract_sub_routes(), Any, bool, CRM 合同 CRUD — 对照 CrmContractServiceImpl.java(列表/详情 P1), Decimal, int, Session (+92 more) +Cohesion: 0.15 +Nodes (34): CrmContract, Query, CrmContract, CrmContractProductPriceTier, date, datetime, Query, contract_row_to_dict() (+26 more) ### Community 2 - "Community 2" -Cohesion: 0.22 -Nodes (18): bytes, int, str, download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url() (+10 more) +Cohesion: 0.36 +Nodes (217): Any, bool, str, UploadFile, CRM 线索管理 Pydantic Schemas, CRM 商机管理 Pydantic Schemas, CRM 客户公海池规则 Pydantic Schemas, CRM 产品模块 Pydantic Schemas (+209 more) ### Community 3 - "Community 3" -Cohesion: 0.13 -Nodes (15): Any, bool, int, str, get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.html, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total_amo (+7 more) +Cohesion: 0.06 +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.20 -Nodes (29): bool, CRM 产品模块 CRUD(产品分类 + 产品 + 附件), Session, str, barcode_exists(), category_code_exists(), _category_row_to_dict(), create_category() (+21 more) +Cohesion: 0.19 +Nodes (41): Decimal, int, PlanCreateFull, PlPlan, PlPlanProduct, PlTransport, PlVehicle, Session (+33 more) ### Community 5 - "Community 5" Cohesion: 0.10 -Nodes (33): BxUserContext, Session, str, Any, str, bool, BxUserContext, int (+25 more) +Nodes (31): _error_json(), lifespan(), _mask_secret(), Exception, int, Request, str, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin (+23 more) ### Community 6 - "Community 6" -Cohesion: 0.09 -Nodes (96): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_post(), create_role_management() (+88 more) +Cohesion: 0.07 +Nodes (97): attachment_download_url(), AttachmentDownloadUrlBody, create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_post(), create_role_management() (+89 more) ### Community 7 - "Community 7" -Cohesion: 0.23 -Nodes (15): Any, bool, bytes, int, Request, str, _claims_from_auth(), _format_body_bytes() (+7 more) +Cohesion: 0.18 +Nodes (25): str, bool, date, datetime, int, Session, str, filter_current_cycle_approvals() (+17 more) ### Community 8 - "Community 8" -Cohesion: 0.15 -Nodes (34): Session, str, Any, bool, int, Session, str, apply_data_scope() (+26 more) +Cohesion: 0.23 +Nodes (10): Any, bool, int, Session, str, camel_to_snake(), CRUDBase, get_model_attr() (+2 more) ### Community 9 - "Community 9" -Cohesion: 0.22 -Nodes (11): Any, bool, int, Session, str, bool, camel_to_snake(), CRUDBase (+3 more) +Cohesion: 0.08 +Nodes (90): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), Any, CRM 合同 CRUD — 对照 CrmContractServiceImpl.java(列表/详情 P1), Decimal, int, Session, str (+82 more) ### Community 10 - "Community 10" +Cohesion: 0.26 +Nodes (30): DbInboundOutbound, DbUserContext, Session, str, CreateLinkForPlanPayload, _apply_inventory_product_update(), _apply_inventory_update(), _base_query() (+22 more) + +### Community 11 - "Community 11" +Cohesion: 0.18 +Nodes (22): Any, bool, BxUserContext, BxWorkflowNode, float, int, ReimburseApplyOut, Session (+14 more) + +### Community 12 - "Community 12" +Cohesion: 0.04 +Nodes (112): CRM 报价单 API 路由 — 挂接到 crm.router, str, CRM 合同 Pydantic Schemas — 对照 CrmContractBo / CrmContractVo, CRM 客户管理 Pydantic Schemas, CRM 报价单 Pydantic Schemas, BaseModel, AttachmentOut, ReimburseApplyCreate (+104 more) + +### Community 13 - "Community 13" +Cohesion: 0.07 +Nodes (38): Exception, bool, bytes, int, Path, str, bytes, int (+30 more) + +### Community 14 - "Community 14" Cohesion: 0.09 Nodes (55): Any, bool, datetime, int, Session, str, _advance_contract_after_approval(), approve_contract() (+47 more) -### Community 11 - "Community 11" -Cohesion: 0.05 -Nodes (167): _apply_default_invoice_info_to_customers(), category_add(), category_delete(), category_tree(), category_update(), clue_assign(), clue_check_convert(), clue_check_duplicate() (+159 more) - -### Community 12 - "Community 12" -Cohesion: 0.11 -Nodes (73): Any, ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。, StartInstanceBody, TaskActionBody, Any (+65 more) - -### Community 13 - "Community 13" -Cohesion: 0.36 -Nodes (213): Any, bool, str, UploadFile, CRM 线索管理 Pydantic Schemas, CRM 商机管理 Pydantic Schemas, CRM 客户公海池规则 Pydantic Schemas, CRM 产品模块 Pydantic Schemas (+205 more) - -### Community 14 - "Community 14" -Cohesion: 0.20 -Nodes (36): Any, CRM 客户 CRUD(客户主表 + 转移/成交/公海池操作), CrmCustomer, datetime, int, Session, str, assign_customer() (+28 more) - ### Community 15 - "Community 15" -Cohesion: 0.08 -Nodes (25): 技术栈, 1. 创建虚拟环境, 项目结构, 1. 创建虚拟环境, 2. 安装依赖, 2. 安装依赖, 3. 配置环境变量, 快速开始 (+17 more) +Cohesion: 0.21 +Nodes (18): bool, int, Redis, Request, str, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client() (+10 more) ### Community 16 - "Community 16" -Cohesion: 0.12 -Nodes (31): CRM 报价单 API 路由 — 挂接到 crm.router, CRM 报价单 Pydantic Schemas, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody, QuoteApprovalWithdrawBody, QuoteCreateBody (+23 more) +Cohesion: 0.07 +Nodes (43): AttachmentUploadResponse, ChangePasswordRequest, Config, LoginRequest, LoginResponse, Pydantic schemas - 用户认证, ResetPasswordRequest, UserCreate (+35 more) ### Community 17 - "Community 17" -Cohesion: 0.21 -Nodes (40): BxUserContext, int, Session, str, int, Session, str, ApiResponse (+32 more) +Cohesion: 0.20 +Nodes (48): Any, Any, CRM 商机 CRUD(主表 + 阶段/赢输单/统计/看板/漏斗), date, datetime, Decimal, int, Session (+40 more) ### Community 18 - "Community 18" -Cohesion: 0.18 -Nodes (32): Any, bool, int, Session, str, SysUser, create_user(), get_user() (+24 more) +Cohesion: 0.14 +Nodes (30): Any, bool, BxUserContext, BxWorkflowNode, float, int, Session, str (+22 more) ### Community 19 - "Community 19" -Cohesion: 0.23 -Nodes (21): Any, bool, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java, int, Session, str, _apply_list_filters(), create_supplier_info() (+13 more) +Cohesion: 0.05 +Nodes (98): register_quote_routes(), Any, bool, CRM 报价单 CRUD — 对照 CrmQuoteServiceImpl.java(P2 全量), date, datetime, Decimal, int (+90 more) ### Community 20 - "Community 20" -Cohesion: 0.37 -Nodes (17): check_env(), check_python(), create_venv(), init_env(), install_dependencies(), log_error(), log_info(), log_success() (+9 more) +Cohesion: 0.32 +Nodes (33): AdvanceApplyCreate, AdvanceApplyOut, AdvanceApplyUpdate, AdvanceApprovalCreate, BxUserContext, int, Session, str (+25 more) ### Community 21 - "Community 21" -Cohesion: 0.20 -Nodes (20): API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave() (+12 more) +Cohesion: 0.08 +Nodes (109): DbUserContext, 运输计划管理 - 基础数据 API(承运商、车辆、人员), PlVehicle, Session, str, VehicleCreate, VehicleRead, VehicleUpdate (+101 more) ### Community 22 - "Community 22" +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 23 - "Community 23" +Cohesion: 0.23 +Nodes (39): AdvanceIssueRequest, BxUserContext, int, ReimburseApplyOut, Session, str, datetime, str (+31 more) + +### Community 24 - "Community 24" Cohesion: 0.09 Nodes (32): clue_import_template(), customer_import_template(), product_import_template(), 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export, 导出供方列表 — Java: CrmSupplierInfoController.export (+24 more) -### Community 23 - "Community 23" -Cohesion: 0.24 -Nodes (50): InboundOutboundRead, bool, DbPurchasePlan, DbUserContext, PurchasePlanRead, PurchasePlanWithFillLink, Session, str (+42 more) - -### Community 24 - "Community 24" -Cohesion: 0.29 -Nodes (14): is_valid_dict_type(), load_portal_baseline(), load_sx(), load_zkxw(), main(), map_tag_type(), normalize_row(), parse_insert() (+6 more) - ### Community 25 - "Community 25" -Cohesion: 0.40 -Nodes (13): check_python(), ensure_dirs(), ensure_venv_and_runtime(), is_running(), log_error(), log_info(), log_warn(), show_help() (+5 more) +Cohesion: 0.16 +Nodes (39): DbPurchasePlan, DbUserContext, Session, str, parse_date_str(), plan_to_read(), plan_to_read_with_fill_link(), _apply_plan_product_update() (+31 more) ### Community 26 - "Community 26" -Cohesion: 0.27 -Nodes (11): Any, bool, str, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。 (+3 more) +Cohesion: 0.13 +Nodes (15): Any, bool, int, str, get_wechat_pay_client(), get_wechat_pay_v2(), 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.html, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total_amo (+7 more) ### Community 27 - "Community 27" -Cohesion: 0.26 -Nodes (20): Any, bool, int, Session, str, create_follow(), _enrich_follow_dict(), _follow_row_to_dict() (+12 more) +Cohesion: 0.21 +Nodes (32): Any, bool, CRM 线索 CRUD(线索主表 + 转化/分配/无效/等级操作), date, datetime, int, Session, str (+24 more) ### Community 28 - "Community 28" -Cohesion: 0.23 -Nodes (34): AdvanceApplyCreate, AdvanceApplyOut, AdvanceApplyUpdate, AdvanceApprovalCreate, BxUserContext, int, Session, str (+26 more) +Cohesion: 0.16 +Nodes (31): Any, bool, int, Session, str, Any, Session, str (+23 more) ### Community 29 - "Community 29" -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() +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.40 -Nodes (3): BaseSettings, Config, Settings +Cohesion: 0.31 +Nodes (32): BxUserContext, int, Session, str, ApiResponse, approve_reimburse(), approved_by_me(), _build_details_data() (+24 more) + +### Community 31 - "Community 31" +Cohesion: 0.20 +Nodes (31): Any, bool, CrmContractProductPriceTier, date, Decimal, int, Session, str (+23 more) + +### Community 32 - "Community 32" +Cohesion: 0.17 +Nodes (27): Any, bool, int, Session, str, Query, approve_quote(), can_user_approve() (+19 more) + +### Community 33 - "Community 33" +Cohesion: 0.13 +Nodes (55): Any, int, Session, str, Any, bool, CRM 客户 CRUD(客户主表 + 转移/成交/公海池操作), CrmCustomer (+47 more) + +### Community 34 - "Community 34" +Cohesion: 0.23 +Nodes (28): Engine, Path, build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str() (+20 more) + +### Community 35 - "Community 35" +Cohesion: 0.26 +Nodes (19): Any, bool, date, int, Session, str, _contact_row_to_dict(), create_contact() (+11 more) ### Community 36 - "Community 36" -Cohesion: 0.23 -Nodes (16): bool, int, Redis, Request, str, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client() (+8 more) +Cohesion: 0.15 +Nodes (37): pool_rule_delete(), Any, bool, CRM 公海池规则 CRUD + 规则执行逻辑, int, Session, str, create_pool_rule() (+29 more) ### Community 37 - "Community 37" -Cohesion: 0.22 -Nodes (16): Any, bool, bytes, int, str, ApiCryptoError, _b64url_decode(), _b64url_encode() (+8 more) - -### Community 38 - "Community 38" -Cohesion: 0.19 -Nodes (34): DbInboundOutbound, DbUserContext, Session, str, CreateLinkForPlanPayload, _apply_inventory_product_update(), _apply_inventory_update(), _base_query() (+26 more) - -### Community 39 - "Community 39" -Cohesion: 0.20 -Nodes (26): Any, bool, Decimal, int, Session, str, batch_insert_quote_products(), calculate_subtotal() (+18 more) - -### Community 40 - "Community 40" -Cohesion: 0.10 -Nodes (60): Any, bool, int, Session, str, Any, bool, CRM 线索 CRUD(线索主表 + 转化/分配/无效/等级操作) (+52 more) - -### Community 41 - "Community 41" -Cohesion: 0.17 -Nodes (22): BxUserContext, Session, str, str, bool, BxUserContext, Session, str (+14 more) - -### Community 42 - "Community 42" -Cohesion: 0.34 -Nodes (16): Any, bool, int, Session, str, create_dict_type(), dict_type_code_exists(), get_dict_type() (+8 more) - -### Community 43 - "Community 43" Cohesion: 0.35 Nodes (17): Any, bool, int, Session, str, _build_tree(), _cascade_soft_delete(), create_menu() (+9 more) +### Community 38 - "Community 38" +Cohesion: 0.41 +Nodes (13): BxUserContext, Session, str, UploadFile, bind_biz(), delete_attachment(), download_file(), list_by_biz() (+5 more) + +### 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) + +### Community 40 - "Community 40" +Cohesion: 0.13 +Nodes (35): Any, bool, Decimal, int, Session, str, create_new_version(), batch_insert_quote_products() (+27 more) + +### Community 41 - "Community 41" +Cohesion: 0.24 +Nodes (18): BxUserContext, Session, str, bool, BxUserContext, Session, str, create_expense_item() (+10 more) + +### Community 42 - "Community 42" +Cohesion: 0.08 +Nodes (25): 技术栈, 1. 创建虚拟环境, 项目结构, 1. 创建虚拟环境, 2. 安装依赖, 2. 安装依赖, 3. 配置环境变量, 快速开始 (+17 more) + +### Community 43 - "Community 43" +Cohesion: 0.16 +Nodes (22): Any, str, Any, int, str, str, 供 get_tenant_no 等门户工具使用。, BusinessException (+14 more) + ### Community 44 - "Community 44" -Cohesion: 0.33 -Nodes (14): BxUserContext, Session, str, UploadFile, AttachmentOut, bind_biz(), delete_attachment(), download_file() (+6 more) +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.18 -Nodes (40): AdvanceIssueRequest, BxUserContext, int, ReimburseApplyOut, Session, str, str, BatchOffsetRequest (+32 more) - -### Community 46 - "Community 46" -Cohesion: 0.12 -Nodes (32): date, str, Session, str, format_datetime(), fmt_date(), fmt_datetime(), inventory_date_to_api() (+24 more) - -### Community 47 - "Community 47" -Cohesion: 0.21 -Nodes (23): Any, bool, BxUserContext, BxWorkflowNode, float, int, ReimburseApplyOut, Session (+15 more) - -### Community 48 - "Community 48" -Cohesion: 0.03 -Nodes (114): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, CRM 合同子模块路由 — 变更/模板/审批独立页, str, CRM 合同 Pydantic Schemas — 对照 CrmContractBo / CrmContractVo, CRM 客户管理 Pydantic Schemas, ContactByCustomerBody, ContactDetailBody, ContactSetPrimaryBody (+106 more) - -### Community 49 - "Community 49" -Cohesion: 0.12 -Nodes (9): bool, int, str, BaseStorage, MinIOStorage, OSSStorage, QiniuStorage, MinIO 预签名下载 URL,携带原始文件名。 (+1 more) - -### Community 50 - "Community 50" -Cohesion: 0.11 -Nodes (27): 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。, _error_json(), lifespan(), _mask_secret(), Exception, int, Request, str (+19 more) - -### Community 51 - "Community 51" -Cohesion: 0.16 -Nodes (13): float, int, str, 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n (+5 more) - -### Community 52 - "Community 52" -Cohesion: 0.06 -Nodes (76): _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 基线) (+68 more) - -### Community 53 - "Community 53" -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 54 - "Community 54" -Cohesion: 0.34 -Nodes (21): Any, Decimal, int, Session, str, batch_add_opportunity_products(), _calc_subtotal(), create_opportunity_product() (+13 more) - -### Community 55 - "Community 55" -Cohesion: 0.34 -Nodes (16): Any, bool, int, Session, str, create_tenant(), get_tenant(), list_tenants() (+8 more) - -### Community 56 - "Community 56" -Cohesion: 0.13 -Nodes (31): CrmContract, Query, CrmContract, CrmContractProductPriceTier, date, datetime, Query, contract_row_to_dict() (+23 more) - -### Community 57 - "Community 57" -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 59 - "Community 59" -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) - -### Community 60 - "Community 60" -Cohesion: 0.19 -Nodes (32): Any, bool, CrmContractProductPriceTier, date, Decimal, int, Session, str (+24 more) - -### Community 61 - "Community 61" -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 62 - "Community 62" -Cohesion: 0.23 -Nodes (26): 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() (+18 more) - -### Community 63 - "Community 63" -Cohesion: 0.18 -Nodes (26): Any, bool, int, Session, str, approve_quote(), can_user_approve(), create_approval_records() (+18 more) - -### Community 65 - "Community 65" -Cohesion: 0.12 -Nodes (16): invoice_info_list(), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价), 按客户ID查询开票信息(与 by-customer 等价) (+8 more) - -### Community 68 - "Community 68" -Cohesion: 0.29 -Nodes (7): Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, Java: renewContract — 基础续签, renew_contract() - -### Community 69 - "Community 69" -Cohesion: 0.19 -Nodes (45): Any, CRM 商机 CRUD(主表 + 阶段/赢输单/统计/看板/漏斗), date, datetime, Decimal, int, Session, str (+37 more) - -### Community 70 - "Community 70" -Cohesion: 0.34 -Nodes (16): Any, int, Session, str, _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept() (+8 more) - -### Community 71 - "Community 71" -Cohesion: 0.14 -Nodes (17): Any, int, _build_category_tree(), _collect_category_with_ancestors(), list_category_tree(), list_products(), _product_row_to_dict(), 获取产品分类树(嵌套 children,供树形表格/树选择器使用) (+9 more) - -### Community 72 - "Community 72" Cohesion: 0.38 Nodes (15): Any, bool, int, Session, str, create_site(), get_site(), list_sites() (+7 more) -### Community 73 - "Community 73" -Cohesion: 0.24 -Nodes (27): Engine, build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str(), main() (+19 more) - -### Community 74 - "Community 74" -Cohesion: 0.30 -Nodes (9): Any, bool, int, M, Session, str, BxCrudService, 报销模块 Service 基类 — 租户隔离 + UUID + 软删除。 (+1 more) - -### Community 75 - "Community 75" -Cohesion: 0.16 -Nodes (21): Any, bool, Session, str, Java: viewByShareCode, Java: viewByShareCode, Java: viewByShareCode, Java: viewByShareCode (+13 more) - -### Community 76 - "Community 76" +### Community 46 - "Community 46" Cohesion: 0.35 -Nodes (19): Any, bool, datetime, int, Session, str, create_opportunity_follow(), get_opportunity_follow() (+11 more) +Nodes (5): Any, str, WfProcessInstance, WorkflowEngine, WfProcessInstance -### Community 78 - "Community 78" -Cohesion: 0.22 -Nodes (9): Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus, Java: statisticsStatus (+1 more) - -### Community 79 - "Community 79" -Cohesion: 0.22 -Nodes (9): generate_contract_no(), Java: generateContractNo — {供方编码}/X-JT + yyyyMMdd + 3位流水, Java: generateContractNo — {供方编码}/X-JT + yyyyMMdd + 3位流水, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号}, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} (+1 more) - -### Community 80 - "Community 80" -Cohesion: 0.33 -Nodes (15): Any, int, Session, str, BizLeaveRequest, create_leave(), get_leave(), list_leaves() (+7 more) - -### Community 81 - "Community 81" +### Community 47 - "Community 47" Cohesion: 0.23 -Nodes (26): DbUserContext, DbWeighingSlip, Session, str, datetime_end_of_day(), parse_datetime_str(), weighing_to_read(), apply_product_snapshot_to_weighing() (+18 more) +Nodes (23): Any, Decimal, Session, str, create_from_opportunity(), _opportunity_products_to_contract_products(), Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id (+15 more) -### Community 82 - "Community 82" -Cohesion: 0.33 -Nodes (11): SysOss, int, Session, str, SysOss, create_oss(), _oss_row_to_dict(), create_oss() (+3 more) +### Community 48 - "Community 48" +Cohesion: 0.17 +Nodes (20): datetime, int, str, date, 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, format_datetime(), generate_id(), generate_random_password() (+12 more) -### Community 83 - "Community 83" -Cohesion: 0.21 -Nodes (16): Any, int, str, BusinessException, InvalidStatusTransitionException, log_api_request(), log_delivery_operation(), log_operation() (+8 more) +### Community 49 - "Community 49" +Cohesion: 0.17 +Nodes (34): Any, bool, int, Session, str, SysUser, create_user(), get_user() (+26 more) -### Community 84 - "Community 84" -Cohesion: 0.33 -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 50 - "Community 50" +Cohesion: 0.08 +Nodes (49): 运输计划管理 - 基础数据 Schema(承运商、车辆、人员、证书), CarrierBase, CarrierCreate, CarrierRead, CarrierUpdate, DriverBase, DriverCreate, DriverRead (+41 more) -### Community 85 - "Community 85" +### Community 51 - "Community 51" +Cohesion: 0.26 +Nodes (22): 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() (+14 more) + +### Community 52 - "Community 52" +Cohesion: 0.34 +Nodes (18): Any, bool, datetime, int, Session, str, create_opportunity_follow(), get_opportunity_follow() (+10 more) + +### Community 53 - "Community 53" +Cohesion: 0.12 +Nodes (73): date, DbUserContext, int, PlanCreateFull, PlPlan, Session, str, CreateFromContractRequest (+65 more) + +### Community 54 - "Community 54" Cohesion: 0.11 Nodes (19): 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list, 分页查询供方列表 — Java: CrmSupplierInfoController.list (+11 more) -### Community 86 - "Community 86" -Cohesion: 0.13 -Nodes (14): Java: deleteWithValidByIds — 软删除, Java: deleteWithValidByIds — 软删除, Java: deleteWithValidByIds — 软删除, Java: deleteWithValidByIds — 软删除, Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注, Java Controller TODO — 保持 pending,记录备注 (+6 more) +### Community 55 - "Community 55" +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 87 - "Community 87" -Cohesion: 0.44 -Nodes (8): bool, int, Session, str, ApiRequestLogCRUD, SysApiRequestLog, SysApiRequestLogHis, SysApiRequestLog - -### Community 88 - "Community 88" -Cohesion: 0.15 -Nodes (29): DbUserContext, Session, str, Any, Session, str, _auto_fill_create_dept_id(), get_db() (+21 more) - -### Community 89 - "Community 89" -Cohesion: 0.25 -Nodes (8): generate_product_no(), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001) - -### Community 90 - "Community 90" -Cohesion: 0.09 -Nodes (44): Any, CRM 报价单 CRUD — 对照 CrmQuoteServiceImpl.java(P2 全量), date, datetime, Decimal, Query, _build_quote_filters(), calculate_quote_amount() (+36 more) - -### Community 91 - "Community 91" -Cohesion: 0.40 -Nodes (5): generate_barcode(), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001) - -### Community 92 - "Community 92" -Cohesion: 0.35 -Nodes (20): DbUserContext, DbVehicle, Session, str, VehicleRead, vehicle_to_read(), VehicleBase, VehicleCreate (+12 more) - -### Community 93 - "Community 93" -Cohesion: 0.26 -Nodes (22): Any, bool, datetime, int, Session, str, BizSampleCode, batch_generate_sample_codes() (+14 more) - -### Community 94 - "Community 94" -Cohesion: 0.22 -Nodes (9): create_new_version(), Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id, Java: createNewVersion — 返回新报价单 id (+1 more) - -### Community 95 - "Community 95" -Cohesion: 0.13 -Nodes (15): generate_auto_product_no(), _get_quote_item_field(), Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配), Java: generateAutoProductNo — SXWL + 8位随机大写字符, Java: generateAutoProductNo — SXWL + 8位随机大写字符 (+7 more) - -### Community 96 - "Community 96" -Cohesion: 0.28 -Nodes (20): Any, bool, date, int, Session, str, _contact_row_to_dict(), create_contact() (+12 more) - -### Community 97 - "Community 97" -Cohesion: 0.42 -Nodes (13): Any, bool, Session, str, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer() (+5 more) - -### Community 98 - "Community 98" -Cohesion: 0.27 -Nodes (9): Exception, bytes, bytes, BytesIO, convert_heic_to_jpeg(), process_image_content(), 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS (, 将 HEIC/HEIF 格式转换为 JPEG 格式 (+1 more) - -### Community 99 - "Community 99" +### Community 56 - "Community 56" Cohesion: 0.33 -Nodes (9): operlog_detail(), operlog_list(), 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), Session, OperLogDetailBody, OperLogListBody, 操作日志(兼容 RuoYi OperLog 视图), OperLogDetailBody (+1 more) +Nodes (25): DbUserContext, DbVehicle, Session, str, VehicleCreate, VehicleRead, VehicleUpdate, vehicle_to_read() (+17 more) -### Community 100 - "Community 100" -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) +### 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) -### Community 101 - "Community 101" +### Community 58 - "Community 58" +Cohesion: 0.37 +Nodes (17): check_env(), check_python(), create_venv(), init_env(), install_dependencies(), log_error(), log_info(), log_success() (+9 more) + +### Community 59 - "Community 59" +Cohesion: 0.34 +Nodes (16): Any, bool, int, Session, str, create_tenant(), get_tenant(), list_tenants() (+8 more) + +### Community 60 - "Community 60" +Cohesion: 0.34 +Nodes (16): Any, bool, int, Session, str, create_dict_type(), dict_type_code_exists(), get_dict_type() (+8 more) + +### Community 61 - "Community 61" +Cohesion: 0.34 +Nodes (16): Any, int, Session, str, _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept() (+8 more) + +### Community 62 - "Community 62" +Cohesion: 0.21 +Nodes (43): DbUserContext, int, Session, str, DbUserContext, FreightSettlementCreate, FreightSettlementListResponse, FreightSettlementRead (+35 more) + +### Community 63 - "Community 63" +Cohesion: 0.17 +Nodes (29): Session, str, date, DbPurchasePlan, PlPlan, PlPlanProduct, Session, str (+21 more) + +### Community 64 - "Community 64" Cohesion: 0.33 -Nodes (14): Any, int, Session, str, create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options() (+6 more) +Nodes (15): Any, int, Session, str, BizLeaveRequest, create_leave(), get_leave(), list_leaves() (+7 more) -### Community 102 - "Community 102" -Cohesion: 0.22 -Nodes (9): Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend, Java: statisticsTrend (+1 more) - -### Community 103 - "Community 103" +### Community 65 - "Community 65" Cohesion: 0.28 -Nodes (13): bool, BxUserContext, BxWorkflowNode, int, Session, str, 按业务类型获取工作流;已知类型不存在时自动创建空定义(无节点)。, WorkflowService (+5 more) +Nodes (8): date, datetime, str, _date_to_str(), _dt_to_str(), PagedQuery, PagedResponse, bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。 -### Community 104 - "Community 104" -Cohesion: 0.13 -Nodes (26): Any, bool, BxUserContext, BxWorkflowNode, float, int, Session, str (+18 more) +### Community 66 - "Community 66" +Cohesion: 0.38 +Nodes (15): Any, bool, int, Session, str, create_post(), get_post(), list_posts() (+7 more) -### Community 105 - "Community 105" -Cohesion: 0.13 -Nodes (34): datetime, int, str, datetime, int, Session, str, Any (+26 more) +### Community 67 - "Community 67" +Cohesion: 0.16 +Nodes (21): Any, bool, Session, str, Java: viewByShareCode, Java: viewByShareCode, Java: viewByShareCode, Java: viewByShareCode (+13 more) -### Community 106 - "Community 106" -Cohesion: 0.18 -Nodes (20): Decimal, str, Any, str, derive_legacy_status_from_three(), derive_three_status_from_legacy(), 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。 (+12 more) - -### Community 107 - "Community 107" +### Community 68 - "Community 68" Cohesion: 0.12 -Nodes (38): register_quote_routes(), bool, int, Session, str, accept_quote(), generate_pdf(), generate_share() (+30 more) +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 108 - "Community 108" -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) - -### Community 109 - "Community 109" -Cohesion: 0.35 -Nodes (9): check_customer_protect_time(), _execute_single_rule(), _get_all_tenant_nos(), pool_recovery_job(), 公海池自动回收任务(由 APScheduler 调度) 遍历所有租户的启用规则,执行自动回收。, 每天凌晨1点:检查保护期到期客户,跟进次数不足则退回公海, 每天早上9点:保护期到期提醒(3天内到期且跟进不足), remind_customer_recycle() (+1 more) - -### Community 111 - "Community 111" +### Community 69 - "Community 69" Cohesion: 0.38 Nodes (11): Any, int, Session, str, _business_type_from_path(), get_oper_log(), list_oper_logs(), _oper_status() (+3 more) -### Community 112 - "Community 112" -Cohesion: 0.22 -Nodes (12): Any, bool, str, WfProcessInstance, _LocalCallbackFn, _dispatch_local(), 工作流回调服务 —— 流程状态变更时通知业务系统, 注册本地回调函数。当 callback_url 以 path 开头时直接调用 fn。 (+4 more) - -### Community 113 - "Community 113" -Cohesion: 0.18 -Nodes (11): batch_assign_owner(), download_contract_pdf(), Java: batchAssignOwner, Java: downloadContractPdf — 返回合同文件 URL/路径, Java: batchAssignOwner, Java: batchAssignOwner, Java: batchAssignOwner, Java: batchAssignOwner (+3 more) - -### Community 114 - "Community 114" -Cohesion: 0.44 -Nodes (11): Any, Session, str, get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics() (+3 more) - -### Community 116 - "Community 116" -Cohesion: 0.33 -Nodes (10): Any, int, Session, str, list_ethnics(), 民族码表 CRUD(全局 sys_ethnic), _row_to_dict(), 民族码表 sys_ethnic(国标 GB/T 3304,全局) (+2 more) - -### Community 117 - "Community 117" -Cohesion: 0.22 -Nodes (18): Any, int, Session, str, bool, date, float, CrmCustomer (+10 more) - -### Community 118 - "Community 118" +### Community 70 - "Community 70" Cohesion: 0.29 -Nodes (7): batch_submit_contract_approval(), Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval, Java: batchSubmitApproval +Nodes (14): is_valid_dict_type(), load_portal_baseline(), load_sx(), load_zkxw(), main(), map_tag_type(), normalize_row(), parse_insert() (+6 more) -### Community 119 - "Community 119" -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 71 - "Community 71" +Cohesion: 0.16 +Nodes (21): Session, str, Any, int, Session, str, apply_data_scope(), _get_child_dept_ids() (+13 more) -### Community 120 - "Community 120" +### Community 72 - "Community 72" +Cohesion: 0.40 +Nodes (13): check_python(), ensure_dirs(), ensure_venv_and_runtime(), is_running(), log_error(), log_info(), log_warn(), show_help() (+5 more) + +### Community 73 - "Community 73" +Cohesion: 0.42 +Nodes (13): Any, bool, Session, str, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer() (+5 more) + +### Community 74 - "Community 74" +Cohesion: 0.22 +Nodes (29): Any, int, Session, str, create_instance(), create_process_def(), create_task(), get_all_tasks_for_business() (+21 more) + +### Community 75 - "Community 75" +Cohesion: 0.27 +Nodes (11): Any, bool, str, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。 (+3 more) + +### Community 76 - "Community 76" +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.29 Nodes (7): export_contracts(), Java: queryList for export, Java: queryList for export, Java: queryList for export, Java: queryList for export, Java: queryList for export, Java: queryList for export -### Community 123 - "Community 123" +### Community 78 - "Community 78" Cohesion: 0.28 -Nodes (3): Path, LocalStorage, Path +Nodes (22): bool, CRM 产品模块 CRUD(产品分类 + 产品 + 附件), Session, str, barcode_exists(), category_code_exists(), create_category(), create_product() (+14 more) -### Community 124 - "Community 124" -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 79 - "Community 79" +Cohesion: 0.46 +Nodes (6): BxUserContext, Session, str, 按业务类型获取工作流;已知类型不存在时自动创建空定义(无节点)。, WorkflowService, BxWorkflowDef -### Community 125 - "Community 125" -Cohesion: 0.50 -Nodes (3): Config, PageResult, ResponseModel +### 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 126 - "Community 126" -Cohesion: 0.33 -Nodes (6): datetime, str, _dt_to_str(), PagedQuery, PagedResponse, bx 原系统 API 响应包装(code=0 / msg / data.rows),与门户 success_response 分离。 +### 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) -### Community 127 - "Community 127" -Cohesion: 0.25 -Nodes (7): 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, bx_health(), P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。 +### Community 82 - "Community 82" +Cohesion: 0.29 +Nodes (9): AST, expr, field_has_alias(), iter_field_assignments(), main(), bool, int, str (+1 more) -### Community 128 - "Community 128" +### Community 83 - "Community 83" Cohesion: 0.20 Nodes (10): 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove, 删除供方 — Java: CrmSupplierInfoController.remove (+2 more) -### Community 129 - "Community 129" +### Community 84 - "Community 84" +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.17 +Nodes (32): logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。, 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。, refresh_token(), bool, Redis, Request (+24 more) + +### Community 86 - "Community 86" +Cohesion: 0.16 +Nodes (16): bool, date, Session, str, get_last_month_range(), month_range(), 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生 (+8 more) + +### Community 88 - "Community 88" +Cohesion: 0.16 +Nodes (27): BxUserContext, int, Session, str, bool, BxUserContext, int, Session (+19 more) + +### Community 89 - "Community 89" +Cohesion: 0.26 +Nodes (22): Any, bool, datetime, int, Session, str, BizSampleCode, batch_generate_sample_codes() (+14 more) + +### Community 90 - "Community 90" +Cohesion: 0.17 +Nodes (22): Any, bool, bytes, int, Request, str, bool, int (+14 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.40 +Nodes (3): AdvanceApplyCreate, AdvanceApplyUpdate, _coerce_optional_id() + +### Community 93 - "Community 93" +Cohesion: 0.19 +Nodes (59): InboundOutboundRead, bool, PurchasePlanRead, PurchasePlanWithFillLink, DbUserContext, DbWeighingSlip, Session, str (+51 more) + +### Community 94 - "Community 94" +Cohesion: 0.27 +Nodes (18): Any, bool, int, Session, str, create_clue_follow(), delete_clue_follow(), get_clue_follow() (+10 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) + +### Community 96 - "Community 96" +Cohesion: 0.17 +Nodes (14): API 路由包 — 山峡化工生产一体化门户, get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单), operlog_detail(), operlog_list(), 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), Session, 运营端角色守卫:admin / super_admin 可访问。 (+6 more) + +### Community 97 - "Community 97" Cohesion: 0.33 -Nodes (5): str, 附件上传 bizType 与 MinIO 目录映射(对齐原 CRM oss 上传语义), 优先使用显式 folder;否则按 bizType 映射默认目录。, 优先使用显式 folder;否则按 bizType 映射默认目录。, resolve_upload_folder() +Nodes (14): Any, int, Session, str, create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options() (+6 more) -### Community 130 - "Community 130" +### Community 99 - "Community 99" +Cohesion: 0.36 +Nodes (15): create_leave(), delete_leave(), get_leave(), _leave_local_callback(), leave_workflow_callback(), list_leaves(), submit_leave(), update_leave() (+7 more) + +### Community 100 - "Community 100" +Cohesion: 0.38 +Nodes (4): str, _coerce_id(), ExpenseItemCreate, ExpenseItemUpdate + +### Community 101 - "Community 101" +Cohesion: 0.40 +Nodes (3): BaseSettings, Config, Settings + +### Community 102 - "Community 102" +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.24 +Nodes (52): DbUserContext, int, PlTransport, Session, str, ApprovalRecordRead, ApprovalRequest, ApprovalSubmit (+44 more) + +### Community 104 - "Community 104" Cohesion: 0.22 -Nodes (9): Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview, Java: statisticsOverview (+1 more) +Nodes (12): Any, bool, str, WfProcessInstance, _LocalCallbackFn, _dispatch_local(), 工作流回调服务 —— 流程状态变更时通知业务系统, 注册本地回调函数。当 callback_url 以 path 开头时直接调用 fn。 (+4 more) -### Community 131 - "Community 131" -Cohesion: 0.29 -Nodes (7): create_from_opportunity(), _opportunity_products_to_contract_products(), Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id, Java: createFromOpportunity — 返回合同 id +### Community 105 - "Community 105" +Cohesion: 0.39 +Nodes (15): DbUserContext, Session, str, DashboardCargoStat, DashboardPartnerCargoStat, DashboardStats, _cargo_stats(), DashboardCargoStat (+7 more) -### Community 132 - "Community 132" -Cohesion: 0.29 -Nodes (7): Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, Java: withdrawApproval, withdraw_contract_approval() +### Community 106 - "Community 106" +Cohesion: 0.30 +Nodes (13): Any, bool, bytes, int, str, ApiCryptoError, _b64url_decode(), _b64url_encode() (+5 more) + +### Community 107 - "Community 107" +Cohesion: 0.40 +Nodes (10): SysOss, int, Session, str, SysOss, create_oss(), create_oss(), get_oss_by_url() (+2 more) + +### Community 108 - "Community 108" +Cohesion: 0.41 +Nodes (11): Any, str, build_quote_html(), _default_value(), _format_date(), _format_discount(), _format_money(), generate_quote_pdf() (+3 more) + +### Community 109 - "Community 109" +Cohesion: 0.38 +Nodes (7): Any, bool, int, M, Session, str, M + +### Community 111 - "Community 111" +Cohesion: 0.06 +Nodes (68): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, register_contract_routes(), bool, bool, batch_assign_owner(), batch_submit_approval(), batch_submit_contract_approval(), ContractApprovalRefreshNamesBody (+60 more) + +### Community 112 - "Community 112" +Cohesion: 0.14 +Nodes (20): _avatar_url_field(), _build_user_info_payload(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), public_quote_share(), 获取当前用户信息(与 sys_user 字段对应)。, 获取当前用户信息(与 sys_user 字段对应)。 (+12 more) + +### Community 122 - "Community 122" +Cohesion: 0.22 +Nodes (9): generate_product_no(), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001), 生成产品编号(格式:CP + yyyyMMdd + 3位序号,如 CP20260530001) (+1 more) + +### Community 123 - "Community 123" +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 124 - "Community 124" +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 126 - "Community 126" +Cohesion: 0.22 +Nodes (9): Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人), Java: CrmQuoteServiceImpl.withdrawApproval(校验创建人) (+1 more) + +### Community 128 - "Community 128" +Cohesion: 0.33 +Nodes (3): _coerce_id(), OffsetItem, 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 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位随机大写字符 + +### Community 135 - "Community 135" +Cohesion: 0.33 +Nodes (6): generate_barcode(), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001), 生成唯一条码(纯数字:yyyyMMdd + 6位序号,如 20260606000001) + +### Community 136 - "Community 136" +Cohesion: 0.14 +Nodes (19): Session, str, Session, str, get_user_menu_codes(), 菜单 code 权限守卫(V0.3:通过 sys_user_role → sys_role_menu → sys_menu.perms), 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, 接口菜单权限守卫。super_admin 直接放行。 (+11 more) + +### Community 137 - "Community 137" +Cohesion: 0.17 +Nodes (9): Any, Session, str, _auto_fill_create_dept_id(), get_db(), ORM before_insert 钩子:当 create_dept_id 为空时,自动从请求上下文填充当前用户部门 ID, get_db_current_user_optional(), 地磅模块认证适配:门户 JWT 用户 → db 业务上下文。 (+1 more) + +### Community 138 - "Community 138" Cohesion: 0.40 -Nodes (5): list_roles_for_designer(), 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID, 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID, 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID, 返回角色下拉选项(label=角色名,value=角色ID UUID),供流程设计器审批人选择使用。 与 /roles 不同,此端点返回角色 UUID +Nodes (4): str, Config, format_api_error_message(), 将 HTTP/SQLAlchemy 等异常转为可展示的错误文案(避免 str([]) 空列表)。 + +### 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 140 - "Community 140" +Cohesion: 0.22 +Nodes (33): ProcessDefCreateBody, ProcessDefUpdateBody, PublishVersionBody, StartInstanceBody, Any, bool, WfNode, WfProcessInstance (+25 more) + +### Community 141 - "Community 141" +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 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 144 - "Community 144" +Cohesion: 0.40 +Nodes (5): bool, str, get_password_hash(), 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password() + +### Community 146 - "Community 146" +Cohesion: 0.22 +Nodes (24): int, PlTransport, Session, str, UploadFile, str, 附件上传 bizType 与 MinIO 目录映射(对齐原 CRM oss 上传语义), 优先使用显式 folder;否则按 bizType 映射默认目录。 (+16 more) + +### Community 147 - "Community 147" +Cohesion: 0.67 +Nodes (3): Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), Web 端登录用 RSA 公钥(PKCS#1 v1.5,与 JSEncrypt 一致), web_login_rsa_public_key() ## Knowledge Gaps -- **57 isolated node(s):** `Any`, `Session`, `bool`, `bool`, `Config` (+52 more) +- **61 isolated node(s):** `Any`, `Session`, `bool`, `bool`, `Config` (+56 more) These have ≤1 connection - possible missing edges or undocumented components. -- **5 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **2 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 `generate_uuid()` connect `Community 0` to `Community 1`, `Community 4`, `Community 8`, `Community 10`, `Community 12`, `Community 14`, `Community 18`, `Community 19`, `Community 27`, `Community 38`, `Community 39`, `Community 40`, `Community 42`, `Community 43`, `Community 46`, `Community 47`, `Community 52`, `Community 54`, `Community 55`, `Community 60`, `Community 62`, `Community 63`, `Community 69`, `Community 70`, `Community 72`, `Community 74`, `Community 75`, `Community 76`, `Community 80`, `Community 81`, `Community 82`, `Community 90`, `Community 92`, `Community 93`, `Community 94`, `Community 95`, `Community 96`, `Community 97`, `Community 100`, `Community 101`, `Community 103`, `Community 104`, `Community 105`, `Community 108`, `Community 109`, `Community 117`?** - _High betweenness centrality (0.118) - this node is a cross-community bridge._ -- **Why does `BaseModel` connect `Community 48` to `Community 5`, `Community 6`, `Community 12`, `Community 13`, `Community 16`, `Community 17`, `Community 21`, `Community 23`, `Community 28`, `Community 38`, `Community 41`, `Community 44`, `Community 45`, `Community 46`, `Community 47`, `Community 81`, `Community 88`, `Community 92`, `Community 99`, `Community 125`, `Community 126`?** - _High betweenness centrality (0.103) - this node is a cross-community bridge._ -- **Why does `SysUser` connect `Community 12` to `Community 1`, `Community 69`, `Community 6`, `Community 8`, `Community 40`, `Community 10`, `Community 107`, `Community 9`, `Community 105`, `Community 14`, `Community 18`, `Community 52`, `Community 117`, `Community 56`, `Community 90`, `Community 93`, `Community 62`, `Community 63`?** - _High betweenness centrality (0.099) - this node is a cross-community bridge._ -- **Are the 28 inferred relationships involving `str` (e.g. with `CRUDBase` and `LeaveCreate`) actually correct?** - _`str` has 28 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 100 inferred relationships involving `Session` (e.g. with `ClueAssignBody` and `ClueConvertBody`) actually correct?** - _`Session` has 100 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 37 inferred relationships involving `success_response()` (e.g. with `category_add()` and `category_delete()`) actually correct?** - _`success_response()` has 37 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 28 inferred relationships involving `Session` (e.g. with `CRUDBase` and `LeaveCreate`) actually correct?** - _`Session` has 28 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file +- **Why does `Session` connect `Community 3` to `Community 1`, `Community 2`, `Community 4`, `Community 6`, `Community 7`, `Community 8`, `Community 9`, `Community 10`, `Community 11`, `Community 12`, `Community 14`, `Community 17`, `Community 18`, `Community 19`, `Community 20`, `Community 21`, `Community 23`, `Community 24`, `Community 25`, `Community 27`, `Community 28`, `Community 29`, `Community 30`, `Community 31`, `Community 32`, `Community 33`, `Community 35`, `Community 36`, `Community 37`, `Community 38`, `Community 40`, `Community 41`, `Community 44`, `Community 45`, `Community 46`, `Community 47`, `Community 49`, `Community 51`, `Community 52`, `Community 53`, `Community 54`, `Community 55`, `Community 56`, `Community 57`, `Community 59`, `Community 60`, `Community 61`, `Community 62`, `Community 63`, `Community 64`, `Community 66`, `Community 67`, `Community 68`, `Community 69`, `Community 71`, `Community 73`, `Community 74`, `Community 77`, `Community 78`, `Community 79`, `Community 80`, `Community 81`, `Community 83`, `Community 84`, `Community 85`, `Community 86`, `Community 88`, `Community 89`, `Community 90`, `Community 93`, `Community 94`, `Community 95`, `Community 96`, `Community 97`, `Community 99`, `Community 102`, `Community 103`, `Community 105`, `Community 107`, `Community 109`, `Community 111`, `Community 112`, `Community 122`, `Community 123`, `Community 126`, `Community 129`, `Community 133`, `Community 135`, `Community 136`, `Community 137`, `Community 140`, `Community 143`?** + _High betweenness centrality (0.238) - this node is a cross-community bridge._ +- **Why does `BaseModel` connect `Community 12` to `Community 128`, `Community 0`, `Community 2`, `Community 4`, `Community 134`, `Community 6`, `Community 9`, `Community 10`, `Community 11`, `Community 140`, `Community 16`, `Community 146`, `Community 20`, `Community 21`, `Community 23`, `Community 25`, `Community 30`, `Community 41`, `Community 50`, `Community 51`, `Community 53`, `Community 56`, `Community 62`, `Community 65`, `Community 88`, `Community 92`, `Community 93`, `Community 96`, `Community 99`, `Community 100`, `Community 103`, `Community 105`, `Community 111`?** + _High betweenness centrality (0.046) - this node is a cross-community bridge._ +- **Why does `datetime` connect `Community 48` to `Community 0`, `Community 1`, `Community 2`, `Community 3`, `Community 4`, `Community 5`, `Community 134`, `Community 7`, `Community 9`, `Community 10`, `Community 12`, `Community 13`, `Community 14`, `Community 140`, `Community 16`, `Community 17`, `Community 146`, `Community 19`, `Community 18`, `Community 21`, `Community 23`, `Community 25`, `Community 26`, `Community 27`, `Community 28`, `Community 29`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `Community 35`, `Community 36`, `Community 37`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 47`, `Community 49`, `Community 50`, `Community 52`, `Community 53`, `Community 56`, `Community 59`, `Community 60`, `Community 61`, `Community 62`, `Community 63`, `Community 64`, `Community 65`, `Community 66`, `Community 67`, `Community 69`, `Community 73`, `Community 74`, `Community 78`, `Community 80`, `Community 81`, `Community 85`, `Community 86`, `Community 89`, `Community 90`, `Community 93`, `Community 94`, `Community 97`, `Community 103`, `Community 105`, `Community 108`, `Community 111`?** + _High betweenness centrality (0.040) - this node is a cross-community bridge._ +- **Are the 254 inferred relationships involving `str` (e.g. with `AdvanceApplyCreate` and `AdvanceApplyOut`) actually correct?** + _`str` has 254 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 251 inferred relationships involving `Session` (e.g. with `AdvanceApplyCreate` and `AdvanceApplyOut`) actually correct?** + _`Session` has 251 INFERRED edges - model-reasoned connections that need verification._ +- **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?** + _805 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/07f36e54e043ffc50c511f2f3b7b7f789e7a448c6bca061b19c498851889a115.json b/backend/graphify-out/cache/ast/07f36e54e043ffc50c511f2f3b7b7f789e7a448c6bca061b19c498851889a115.json new file mode 100644 index 000000000..bfbe56288 --- /dev/null +++ b/backend/graphify-out/cache/ast/07f36e54e043ffc50c511f2f3b7b7f789e7a448c6bca061b19c498851889a115.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_freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L28"}, {"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": "L37"}, {"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": "L51"}, {"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": "L55"}, {"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": "L70"}, {"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": "L79"}, {"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": "L96"}, {"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": "L104"}], "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": "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": "L28", "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": "L28", "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": "L37", "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": "L37", "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": "L51", "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": "L51", "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": "L55", "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": "L55", "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": "L70", "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": "L70", "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": "L79", "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": "L79", "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": "L96", "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": "L96", "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": "L104", "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": "L104", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/10a43394914296c9e2ee6aeafe99b5b0a92ec95da2907ab2edbd3a62cb78021b.json b/backend/graphify-out/cache/ast/10a43394914296c9e2ee6aeafe99b5b0a92ec95da2907ab2edbd3a62cb78021b.json new file mode 100644 index 000000000..309555cc9 --- /dev/null +++ b/backend/graphify-out/cache/ast/10a43394914296c9e2ee6aeafe99b5b0a92ec95da2907ab2edbd3a62cb78021b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}, {"id": "pl_init_carrierbase", "label": "CarrierBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_init_carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L22"}, {"id": "pl_init_carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L26"}, {"id": "pl_init_carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L35"}, {"id": "pl_init_vehiclebase", "label": "VehicleBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L53"}, {"id": "pl_init_vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L65"}, {"id": "pl_init_vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L69"}, {"id": "pl_init_vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L82"}, {"id": "pl_init_driverbase", "label": "DriverBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L100"}, {"id": "pl_init_drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L113"}, {"id": "pl_init_driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L117"}, {"id": "pl_init_driverread", "label": "DriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L131"}, {"id": "pl_init_vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L149"}, {"id": "pl_init_vehicledriverread", "label": "VehicleDriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L156"}, {"id": "pl_init_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - Pydantic Schema", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carrierbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_init_carrierbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carriercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L22", "weight": 1.0}, {"source": "pl_init_carriercreate", "target": "pl_init_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carrierupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L26", "weight": 1.0}, {"source": "pl_init_carrierupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carrierread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_init_carrierread", "target": "pl_init_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L35", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehiclebase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L53", "weight": 1.0}, {"source": "pl_init_vehiclebase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L53", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehiclecreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L65", "weight": 1.0}, {"source": "pl_init_vehiclecreate", "target": "pl_init_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L65", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicleupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L69", "weight": 1.0}, {"source": "pl_init_vehicleupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicleread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L82", "weight": 1.0}, {"source": "pl_init_vehicleread", "target": "pl_init_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L82", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_driverbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L100", "weight": 1.0}, {"source": "pl_init_driverbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L100", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_drivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L113", "weight": 1.0}, {"source": "pl_init_drivercreate", "target": "pl_init_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L113", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_driverupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L117", "weight": 1.0}, {"source": "pl_init_driverupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L117", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_driverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L131", "weight": 1.0}, {"source": "pl_init_driverread", "target": "pl_init_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L131", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicledrivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L149", "weight": 1.0}, {"source": "pl_init_vehicledrivercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L149", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicledriverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_init_vehicledriverread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/189cd50c299ef5bcd983c813612c997cce4b65e5fe95fbb5dec079902bd1e79e.json b/backend/graphify-out/cache/ast/189cd50c299ef5bcd983c813612c997cce4b65e5fe95fbb5dec079902bd1e79e.json new file mode 100644 index 000000000..d58bb9da9 --- /dev/null +++ b/backend/graphify-out/cache/ast/189cd50c299ef5bcd983c813612c997cce4b65e5fe95fbb5dec079902bd1e79e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "label": "pl_personnel_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L1"}, {"id": "services_pl_personnel_service_upsert_personnel", "label": "upsert_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L14"}, {"id": "services_pl_personnel_service_save_vehicle_personnel", "label": "save_vehicle_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L83"}, {"id": "services_pl_personnel_service_build_personnel_summary", "label": "build_personnel_summary()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L127"}, {"id": "services_pl_personnel_service_load_vehicle_personnel_rows", "label": "load_vehicle_personnel_rows()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L144"}, {"id": "services_pl_personnel_service_load_vehicle_personnel_summaries", "label": "load_vehicle_personnel_summaries()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L177"}, {"id": "services_pl_personnel_service_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212 - \u4eba\u5458 upsert \u4e0e\u8f66\u8f86-\u4eba\u5458\u5173\u8054\u4fdd\u5b58", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L1"}, {"id": "services_pl_personnel_service_rationale_22", "label": "\u6309 personnelId \u2192 phone \u2192 name \u5f31\u5339\u914d upsert\uff0c\u8fd4\u56de personnel_id\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L22"}, {"id": "services_pl_personnel_service_rationale_130", "label": "links: [(personnel_name, role, is_default)] \u2192 (summary, default_driver_name).", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L130"}, {"id": "services_pl_personnel_service_rationale_180", "label": "\u6279\u91cf\u52a0\u8f7d personnelSummary / defaultDriverName\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L180"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_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_personnel_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_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_personnel_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "services_pl_personnel_service_upsert_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "services_pl_personnel_service_save_vehicle_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L83", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "services_pl_personnel_service_build_personnel_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "services_pl_personnel_service_load_vehicle_personnel_rows", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L144", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "target": "services_pl_personnel_service_load_vehicle_personnel_summaries", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L177", "weight": 1.0}, {"source": "services_pl_personnel_service_save_vehicle_personnel", "target": "services_pl_personnel_service_upsert_personnel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L109", "weight": 1.0}, {"source": "services_pl_personnel_service_load_vehicle_personnel_summaries", "target": "services_pl_personnel_service_build_personnel_summary", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L207", "weight": 1.0}, {"source": "services_pl_personnel_service_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_personnel_service_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L1", "weight": 1.0}, {"source": "services_pl_personnel_service_rationale_22", "target": "services_pl_personnel_service_upsert_personnel", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L22", "weight": 1.0}, {"source": "services_pl_personnel_service_rationale_130", "target": "services_pl_personnel_service_build_personnel_summary", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L130", "weight": 1.0}, {"source": "services_pl_personnel_service_rationale_180", "target": "services_pl_personnel_service_load_vehicle_personnel_summaries", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L180", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L27"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L27"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L27"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L36"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L39"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L39"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L39"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L48"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L51"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L51"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L51"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "PlPersonnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L68"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L69"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L78"}, {"caller_nid": "services_pl_personnel_service_upsert_personnel", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L79"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "sum", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L93"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L97"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L99"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L99"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L99"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "enumerate", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L105"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L107"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "PlVehiclePersonnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L112"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L113"}, {"caller_nid": "services_pl_personnel_service_save_vehicle_personnel", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L124"}, {"caller_nid": "services_pl_personnel_service_build_personnel_summary", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L136"}, {"caller_nid": "services_pl_personnel_service_build_personnel_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L137"}, {"caller_nid": "services_pl_personnel_service_build_personnel_summary", "callee": "int", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_personnel_service_build_personnel_summary", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L141"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L149"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L149"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L149"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L149"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L149"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L160"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L160"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_rows", "callee": "VehiclePersonnelRow", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L164"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L185"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L185"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L185"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L185"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L185"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L193"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L198"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L204"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "setdefault", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L204"}, {"caller_nid": "services_pl_personnel_service_load_vehicle_personnel_summaries", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py", "source_location": "L207"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1aeb1e02c48dbf35ee6b6091c29c8efeaf73f72f9dba24fce61fd304d42ac8f1.json b/backend/graphify-out/cache/ast/1aeb1e02c48dbf35ee6b6091c29c8efeaf73f72f9dba24fce61fd304d42ac8f1.json new file mode 100644 index 000000000..d76476156 --- /dev/null +++ b/backend/graphify-out/cache/ast/1aeb1e02c48dbf35ee6b6091c29c8efeaf73f72f9dba24fce61fd304d42ac8f1.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": "L41"}, {"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": "L45"}, {"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": "L66"}, {"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": "L80"}, {"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": "L116"}, {"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": "L122"}, {"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": "L136"}, {"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": "L172"}, {"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": "L195"}, {"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": "L204"}, {"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": "L212"}, {"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": "L223"}, {"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": "L238"}, {"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": "L245"}, {"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": "L250"}], "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L66", "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": "L66", "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": "L80", "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": "L80", "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": "L116", "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": "L116", "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": "L122", "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": "L122", "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": "L136", "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": "L136", "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": "L172", "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": "L172", "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": "L195", "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": "L195", "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": "L204", "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": "L204", "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": "L212", "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": "L212", "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": "L223", "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": "L223", "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": "L238", "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": "L238", "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": "L245", "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": "L245", "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": "L250", "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": "L250", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1bbb3dbd12096cc1865d19081a6dda818b86d4ce5857e3a81ee4c85a64e344b4.json b/backend/graphify-out/cache/ast/1bbb3dbd12096cc1865d19081a6dda818b86d4ce5857e3a81ee4c85a64e344b4.json new file mode 100644 index 000000000..253b249aa --- /dev/null +++ b/backend/graphify-out/cache/ast/1bbb3dbd12096cc1865d19081a6dda818b86d4ce5857e3a81ee4c85a64e344b4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "label": "crm_models.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L1"}, {"id": "models_crm_models_crmproductcategory", "label": "CrmProductCategory", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L21"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_crm_models_crmproduct", "label": "CrmProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L43"}, {"id": "models_crm_models_sysoss", "label": "SysOss", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L78"}, {"id": "models_crm_models_crmcustomer", "label": "CrmCustomer", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L110"}, {"id": "models_crm_models_crmcontact", "label": "CrmContact", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L193"}, {"id": "models_crm_models_crminvoiceinfo", "label": "CrmInvoiceInfo", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L228"}, {"id": "models_crm_models_crmcustomerfollow", "label": "CrmCustomerFollow", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L256"}, {"id": "models_crm_models_crmcustomerpool", "label": "CrmCustomerPool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L287"}, {"id": "models_crm_models_crmcustomerpoolrule", "label": "CrmCustomerPoolRule", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L313"}, {"id": "models_crm_models_crmopportunity", "label": "CrmOpportunity", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L336"}, {"id": "models_crm_models_crmopportunityfollow", "label": "CrmOpportunityFollow", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L379"}, {"id": "models_crm_models_crmopportunityproduct", "label": "CrmOpportunityProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L410"}, {"id": "models_crm_models_crmopportunitystagelog", "label": "CrmOpportunityStageLog", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L440"}, {"id": "models_crm_models_crmcontract", "label": "CrmContract", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L471"}, {"id": "models_crm_models_crmcontractapproval", "label": "CrmContractApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L554"}, {"id": "models_crm_models_crmcontractchange", "label": "CrmContractChange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L585"}, {"id": "models_crm_models_crmcontracttemplate", "label": "CrmContractTemplate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L616"}, {"id": "models_crm_models_crmcontractproduct", "label": "CrmContractProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L650"}, {"id": "models_crm_models_crmcontractproductpricetier", "label": "CrmContractProductPriceTier", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L688"}, {"id": "models_crm_models_crmquote", "label": "CrmQuote", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L713"}, {"id": "models_crm_models_crmquoteproduct", "label": "CrmQuoteProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L771"}, {"id": "models_crm_models_crmquoteapproval", "label": "CrmQuoteApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L806"}, {"id": "models_crm_models_crmquotesharelog", "label": "CrmQuoteShareLog", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L831"}, {"id": "models_crm_models_crmclue", "label": "CrmClue", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L857"}, {"id": "models_crm_models_crmcluefollow", "label": "CrmClueFollow", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L907"}, {"id": "models_crm_models_crmsupplierinfo", "label": "CrmSupplierInfo", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L931"}, {"id": "models_crm_models_rationale_1", "label": "CRM \u6a21\u5757\u6570\u636e\u6a21\u578b\uff08\u4ea7\u54c1\u5206\u7c7b\u3001\u4ea7\u54c1\u4e3b\u8868\u3001\u7edf\u4e00\u9644\u4ef6\u8868\u3001\u5ba2\u6237\u7ba1\u7406\u3001\u516c\u6d77\u6c60\u3001\u7ebf\u7d22\u7ba1\u7406\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmproductcategory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L21", "weight": 1.0}, {"source": "models_crm_models_crmproductcategory", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L43", "weight": 1.0}, {"source": "models_crm_models_crmproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_sysoss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L78", "weight": 1.0}, {"source": "models_crm_models_sysoss", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L78", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcustomer", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L110", "weight": 1.0}, {"source": "models_crm_models_crmcustomer", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L110", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontact", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L193", "weight": 1.0}, {"source": "models_crm_models_crmcontact", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L193", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crminvoiceinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L228", "weight": 1.0}, {"source": "models_crm_models_crminvoiceinfo", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L228", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcustomerfollow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L256", "weight": 1.0}, {"source": "models_crm_models_crmcustomerfollow", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L256", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcustomerpool", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L287", "weight": 1.0}, {"source": "models_crm_models_crmcustomerpool", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L287", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcustomerpoolrule", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L313", "weight": 1.0}, {"source": "models_crm_models_crmcustomerpoolrule", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L313", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmopportunity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L336", "weight": 1.0}, {"source": "models_crm_models_crmopportunity", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L336", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmopportunityfollow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L379", "weight": 1.0}, {"source": "models_crm_models_crmopportunityfollow", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L379", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmopportunityproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L410", "weight": 1.0}, {"source": "models_crm_models_crmopportunityproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L410", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmopportunitystagelog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L440", "weight": 1.0}, {"source": "models_crm_models_crmopportunitystagelog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L440", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontract", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L471", "weight": 1.0}, {"source": "models_crm_models_crmcontract", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L471", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontractapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L554", "weight": 1.0}, {"source": "models_crm_models_crmcontractapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L554", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontractchange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L585", "weight": 1.0}, {"source": "models_crm_models_crmcontractchange", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L585", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontracttemplate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L616", "weight": 1.0}, {"source": "models_crm_models_crmcontracttemplate", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L616", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontractproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L650", "weight": 1.0}, {"source": "models_crm_models_crmcontractproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L650", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcontractproductpricetier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L688", "weight": 1.0}, {"source": "models_crm_models_crmcontractproductpricetier", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L688", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmquote", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L713", "weight": 1.0}, {"source": "models_crm_models_crmquote", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L713", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmquoteproduct", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L771", "weight": 1.0}, {"source": "models_crm_models_crmquoteproduct", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L771", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmquoteapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L806", "weight": 1.0}, {"source": "models_crm_models_crmquoteapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L806", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmquotesharelog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L831", "weight": 1.0}, {"source": "models_crm_models_crmquotesharelog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L831", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmclue", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L857", "weight": 1.0}, {"source": "models_crm_models_crmclue", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L857", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmcluefollow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L907", "weight": 1.0}, {"source": "models_crm_models_crmcluefollow", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L907", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "target": "models_crm_models_crmsupplierinfo", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L931", "weight": 1.0}, {"source": "models_crm_models_crmsupplierinfo", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L931", "weight": 1.0}, {"source": "models_crm_models_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_models_crm_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1c3d7ffdf10270d592ec7a28907375dc0040995d2943cebbe9db43e5eeff344e.json b/backend/graphify-out/cache/ast/1c3d7ffdf10270d592ec7a28907375dc0040995d2943cebbe9db43e5eeff344e.json new file mode 100644 index 000000000..8e4aba37a --- /dev/null +++ b/backend/graphify-out/cache/ast/1c3d7ffdf10270d592ec7a28907375dc0040995d2943cebbe9db43e5eeff344e.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_inventoryread", "label": "InventoryRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_inventory_inventorytransactionread", "label": "InventoryTransactionRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36"}, {"id": "pl_inventory_inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57"}, {"id": "pl_inventory_inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72"}, {"id": "pl_inventory_inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78"}, {"id": "pl_inventory_documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90"}, {"id": "pl_inventory_documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L104"}, {"id": "pl_inventory_inventoryledgerquery", "label": "InventoryLedgerQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L115"}, {"id": "pl_inventory_inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L122"}, {"id": "pl_inventory_inventorytransactionquery", "label": "InventoryTransactionQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L127"}, {"id": "pl_inventory_inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L137"}, {"id": "pl_inventory_inventorysummaryquery", "label": "InventorySummaryQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L142"}, {"id": "pl_inventory_inventorysummaryitem", "label": "InventorySummaryItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L150"}, {"id": "pl_inventory_inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L159"}, {"id": "pl_inventory_transportstatsquery", "label": "TransportStatsQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163"}, {"id": "pl_inventory_transportstatsitem", "label": "TransportStatsItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L170"}, {"id": "pl_inventory_transportstatsresponse", "label": "TransportStatsResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L177"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_inventory_inventoryread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_inventory_inventorywarningread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "pl_inventory_inventorywarningupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningthreshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "pl_inventory_inventorywarningthreshold", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_documentreminderread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_inventory_documentreminderread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_documentreminderupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L104", "weight": 1.0}, {"source": "pl_inventory_documentreminderupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L104", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryledgerquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L115", "weight": 1.0}, {"source": "pl_inventory_inventoryledgerquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L115", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryledgerresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L122", "weight": 1.0}, {"source": "pl_inventory_inventoryledgerresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L122", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L137", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L150", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L150", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L159", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L159", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163", "weight": 1.0}, {"source": "pl_inventory_transportstatsquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_inventory_transportstatsitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L170", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L177", "weight": 1.0}, {"source": "pl_inventory_transportstatsresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L177", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1ce279d4dbc7d6e8f4c96efb480f9026ad27e30f8c6ecf72c31daa4f3c837668.json b/backend/graphify-out/cache/ast/1ce279d4dbc7d6e8f4c96efb480f9026ad27e30f8c6ecf72c31daa4f3c837668.json new file mode 100644 index 000000000..8ee58ff9d --- /dev/null +++ b/backend/graphify-out/cache/ast/1ce279d4dbc7d6e8f4c96efb480f9026ad27e30f8c6ecf72c31daa4f3c837668.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "label": "base_data.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}, {"id": "pl_base_data_list_carriers", "label": "list_carriers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "pl_base_data_create_carrier", "label": "create_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63"}, {"id": "carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63"}, {"id": "pl_base_data_get_carrier", "label": "get_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88"}, {"id": "pl_base_data_update_carrier", "label": "update_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99"}, {"id": "carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99"}, {"id": "pl_base_data_delete_carrier", "label": "delete_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118"}, {"id": "plcarrier", "label": "PlCarrier", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130"}, {"id": "pl_base_data_list_vehicles", "label": "list_vehicles()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151"}, {"id": "vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151"}, {"id": "pl_base_data_create_vehicle", "label": "create_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182"}, {"id": "vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182"}, {"id": "pl_base_data_get_vehicle", "label": "get_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223"}, {"id": "pl_base_data_update_vehicle", "label": "update_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234"}, {"id": "vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234"}, {"id": "pl_base_data_delete_vehicle", "label": "delete_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L253"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265"}, {"id": "pl_base_data_list_drivers", "label": "list_drivers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286"}, {"id": "driverread", "label": "DriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286"}, {"id": "pl_base_data_create_driver", "label": "create_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310"}, {"id": "drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310"}, {"id": "pl_base_data_get_driver", "label": "get_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L340"}, {"id": "pl_base_data_update_driver", "label": "update_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351"}, {"id": "driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351"}, {"id": "pl_base_data_delete_driver", "label": "delete_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L370"}, {"id": "pldriver", "label": "PlDriver", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382"}, {"id": "pl_base_data_bind_vehicle_driver", "label": "bind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L403"}, {"id": "vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L403"}, {"id": "pl_base_data_unbind_vehicle_driver", "label": "unbind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L432"}, {"id": "pl_base_data_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e API\uff08\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u53f8\u673a\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_carriers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "carrierread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "carriercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "carrierupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L99", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "plcarrier", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_vehicles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "vehicleread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L151", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "vehiclecreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "vehicleupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L253", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L253", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L253", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L253", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "plvehicle", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_drivers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "driverread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L286", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "drivercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L310", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L340", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L340", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L340", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L340", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L340", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "driverupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L351", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L370", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L370", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L370", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L370", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "pldriver", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_bind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L403", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "vehicledrivercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L403", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L403", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L403", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_unbind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L432", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "plcarrier", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "plvehicle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L201", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "pldriver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L317", "weight": 1.0}, {"source": "pl_base_data_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_base_data_list_carriers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L41"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L41"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L42"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L52"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L53"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L53"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L53"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L54"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L54"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L54"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L58"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "nullslast", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L58"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L58"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L58"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L68"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L68"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L71"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L82"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L83"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L93"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L93"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L94"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L105"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L105"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L106"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L108"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L108"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L112"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L123"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L123"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L127"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L132"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L132"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L141"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L159"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L159"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L160"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L177"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "nullslast", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L177"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L177"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L177"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L187"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L187"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L191"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L191"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L199"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L202"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L216"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L217"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L218"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L228"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L228"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L241"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L243"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L243"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L248"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L258"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L258"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L259"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L262"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L267"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L267"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L276"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L291"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L291"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L299"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L300"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L300"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L300"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L301"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L305"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "nullslast", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L305"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L305"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L305"}, {"caller_nid": "pl_base_data_create_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L315"}, {"caller_nid": "pl_base_data_create_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L315"}, {"caller_nid": "pl_base_data_create_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L318"}, {"caller_nid": "pl_base_data_create_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L333"}, {"caller_nid": "pl_base_data_create_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L334"}, {"caller_nid": "pl_base_data_create_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L335"}, {"caller_nid": "pl_base_data_get_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L345"}, {"caller_nid": "pl_base_data_get_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L345"}, {"caller_nid": "pl_base_data_get_driver", "callee": "_get_driver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L346"}, {"caller_nid": "pl_base_data_update_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L357"}, {"caller_nid": "pl_base_data_update_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L357"}, {"caller_nid": "pl_base_data_update_driver", "callee": "_get_driver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L358"}, {"caller_nid": "pl_base_data_update_driver", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360"}, {"caller_nid": "pl_base_data_update_driver", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360"}, {"caller_nid": "pl_base_data_update_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L364"}, {"caller_nid": "pl_base_data_update_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L365"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L375"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L375"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "_get_driver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L376"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379"}, {"caller_nid": "pl_base_data_get_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L384"}, {"caller_nid": "pl_base_data_get_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L384"}, {"caller_nid": "pl_base_data_get_driver", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L393"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "PlVehicleDriver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L418"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L426"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L427"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L437"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L437"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L439"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L439"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L449"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1d95b34c3387836b31822436916e94ef3ce4a23d235316e3afef70ce515f4d73.json b/backend/graphify-out/cache/ast/1d95b34c3387836b31822436916e94ef3ce4a23d235316e3afef70ce515f4d73.json new file mode 100644 index 000000000..95e1b283c --- /dev/null +++ b/backend/graphify-out/cache/ast/1d95b34c3387836b31822436916e94ef3ce4a23d235316e3afef70ce515f4d73.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_coerce_id", "label": "_coerce_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L9"}, {"id": "bx_reimburse_reimbursedetailcreate", "label": "ReimburseDetailCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "label": ".validate_expense_item_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L24"}, {"id": "bx_reimburse_reimbursedetailout", "label": "ReimburseDetailOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31"}, {"id": "bx_reimburse_reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41"}, {"id": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "label": ".details_must_not_be_empty()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L51"}, {"id": "bx_reimburse_reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L57"}, {"id": "bx_reimburse_reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L65"}, {"id": "bx_reimburse_reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L92"}, {"id": "bx_reimburse_reimburseapprovalout", "label": "ReimburseApprovalOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L99"}, {"id": "bx_reimburse_reimbursemystatsout", "label": "ReimburseMyStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L112"}, {"id": "bx_reimburse_reimburseapproverpendingstatsout", "label": "ReimburseApproverPendingStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L124"}, {"id": "bx_reimburse_payrequest", "label": "PayRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L131"}, {"id": "bx_reimburse_offsetrequest", "label": "OffsetRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L138"}, {"id": "bx_reimburse_offsetrequest_validate_advance_id", "label": ".validate_advance_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L147"}, {"id": "bx_reimburse_offsetitem", "label": "OffsetItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L154"}, {"id": "bx_reimburse_offsetitem_validate_advance_id", "label": ".validate_advance_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L162"}, {"id": "bx_reimburse_batchoffsetrequest", "label": "BatchOffsetRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L169"}, {"id": "bx_reimburse_reimburseoffsetrecordout", "label": "ReimburseOffsetRecordOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L177"}, {"id": "bx_reimburse_paymentfinancestatsout", "label": "PaymentFinanceStatsOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L190"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_coerce_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursedetailcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L15", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate", "target": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursedetailout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L31", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplycreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplycreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L41", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplycreate", "target": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L51", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplyupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplyupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapplyout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_reimburseapplyout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapprovalcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L92", "weight": 1.0}, {"source": "bx_reimburse_reimburseapprovalcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L92", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapprovalout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L99", "weight": 1.0}, {"source": "bx_reimburse_reimburseapprovalout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L99", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimbursemystatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L112", "weight": 1.0}, {"source": "bx_reimburse_reimbursemystatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L112", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseapproverpendingstatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L124", "weight": 1.0}, {"source": "bx_reimburse_reimburseapproverpendingstatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_payrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L131", "weight": 1.0}, {"source": "bx_reimburse_payrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L131", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_offsetrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L138", "weight": 1.0}, {"source": "bx_reimburse_offsetrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L138", "weight": 1.0}, {"source": "bx_reimburse_offsetrequest", "target": "bx_reimburse_offsetrequest_validate_advance_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_offsetitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L154", "weight": 1.0}, {"source": "bx_reimburse_offsetitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L154", "weight": 1.0}, {"source": "bx_reimburse_offsetitem", "target": "bx_reimburse_offsetitem_validate_advance_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L162", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_batchoffsetrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L169", "weight": 1.0}, {"source": "bx_reimburse_batchoffsetrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L169", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_reimburseoffsetrecordout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "bx_reimburse_reimburseoffsetrecordout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L177", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_reimburse_py", "target": "bx_reimburse_paymentfinancestatsout", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_paymentfinancestatsout", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L190", "weight": 1.0}, {"source": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "bx_reimburse_offsetrequest_validate_advance_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L148", "weight": 1.0}, {"source": "bx_reimburse_offsetitem_validate_advance_id", "target": "bx_reimburse_coerce_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L163", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_coerce_id", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L12"}, {"caller_nid": "bx_reimburse_reimbursedetailcreate_validate_expense_item_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L27"}, {"caller_nid": "bx_reimburse_reimburseapplycreate_details_must_not_be_empty", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L53"}, {"caller_nid": "bx_reimburse_offsetrequest_validate_advance_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L150"}, {"caller_nid": "bx_reimburse_offsetitem_validate_advance_id", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py", "source_location": "L165"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/1e3f07d674fe0a2614550c5fe393b3913715a69c643c8ecbbd67cac81e10d89d.json b/backend/graphify-out/cache/ast/1e3f07d674fe0a2614550c5fe393b3913715a69c643c8ecbbd67cac81e10d89d.json new file mode 100644 index 000000000..0d0328fba --- /dev/null +++ b/backend/graphify-out/cache/ast/1e3f07d674fe0a2614550c5fe393b3913715a69c643c8ecbbd67cac81e10d89d.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": "L23"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23"}, {"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": "L31"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"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": "L41"}, {"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": "L45"}, {"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": "L56"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"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": "L101"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L101"}, {"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": "L146"}, {"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": "L170"}, {"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": "L181"}, {"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": "L208"}, {"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": "L258"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L258"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L258"}, {"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": "L350"}, {"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": "L403"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L403"}, {"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": "L510"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L510"}, {"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": "L532"}, {"id": "services_pl_plan_service_rationale_267", "label": "\u540c\u6b65\u8ba1\u5212\u4e0a\u7684\u8f66\u8f86\u9884\u9009\uff0c\u5e76\u5728\u5df2\u6709\u5173\u8054\u8fd0\u8f93\u5355\u65f6\u66f4\u65b0\u8fd0\u8d39\u660e\u7ec6\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L267"}, {"id": "services_pl_plan_service_rationale_358", "label": "\u9884\u9009\u8f66\u8f86\u4fe1\u606f\u5230\u8ba1\u5212\uff0c\u4e0d\u521b\u5efa\u8fd0\u8f93\u5355\uff08\u5b89\u6392\u8fd0\u8f93\u987b\u5355\u72ec\u64cd\u4f5c\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L358"}], "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": "L20", "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": "L23", "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": "L23", "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": "L23", "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": "L23", "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": "L31", "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": "L31", "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": "L31", "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": "L41", "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L45", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L170", "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": "L170", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L350", "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": "L350", "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": "L350", "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": "L350", "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": "L350", "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": "L350", "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": "L403", "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": "L403", "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": "L403", "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": "L403", "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": "L403", "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": "L403", "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": "L403", "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": "L403", "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": "L403", "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": "L510", "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": "L510", "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": "L532", "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": "L532", "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": "L532", "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": "L33", "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": "L42", "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": "L66", "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": "L67", "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": "L69", "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": "L154", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_for_plan", "target": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L268", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_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": "L302", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_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": "L316", "weight": 1.0}, {"source": "services_pl_plan_service_sync_transport_prefill_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": "L326", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_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": "L371", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_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": "L374", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_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": "L385", "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": "L426", "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": "L428", "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": "L443", "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": "L454", "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": "L459", "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": "L522", "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": "L524", "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": "L533", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_267", "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": "L267", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_358", "target": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L358", "weight": 1.0}], "raw_calls": [{"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": "L70"}, {"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": "L109"}, {"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": "L109"}, {"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": "L121"}, {"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": "L121"}, {"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": "L121"}, {"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": "L128"}, {"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": "L128"}, {"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": "L133"}, {"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": "L133"}, {"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": "L143"}, {"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": "L175"}, {"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": "L195"}, {"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": "L195"}, {"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": "L217"}, {"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": "L217"}, {"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": "L226"}, {"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": "L228"}, {"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": "L233"}, {"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": "L233"}, {"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": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L246"}, {"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": "L247"}, {"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": "L249"}, {"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": "L252"}, {"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": "L254"}, {"caller_nid": "services_pl_plan_service_sync_transport_prefill_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": "L279"}, {"caller_nid": "services_pl_plan_service_sync_transport_prefill_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": "L279"}, {"caller_nid": "services_pl_plan_service_sync_transport_prefill_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": "L291"}, {"caller_nid": "services_pl_plan_service_sync_transport_prefill_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": "L291"}, {"caller_nid": "services_pl_plan_service_sync_transport_prefill_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": "L309"}, {"caller_nid": "services_pl_plan_service_sync_transport_prefill_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": "L309"}, {"caller_nid": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L360"}, {"caller_nid": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L360"}, {"caller_nid": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L369"}, {"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": "L415"}, {"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": "L415"}, {"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": "L424"}, {"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": "L436"}, {"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": "L436"}, {"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": "L458"}, {"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": "L460"}, {"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": "L485"}, {"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": "L487"}, {"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": "L488"}, {"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": "L489"}, {"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": "L512"}, {"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": "L514"}, {"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": "L523"}, {"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": "L526"}, {"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": "L529"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/23321640699d1950c83b6a8179d9a1a77ae6c967a08ebcc6f65fb73523e9556d.json b/backend/graphify-out/cache/ast/23321640699d1950c83b6a8179d9a1a77ae6c967a08ebcc6f65fb73523e9556d.json new file mode 100644 index 000000000..a2bd4f9cc --- /dev/null +++ b/backend/graphify-out/cache/ast/23321640699d1950c83b6a8179d9a1a77ae6c967a08ebcc6f65fb73523e9556d.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "label": "main.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L1"}, {"id": "app_main_lifespan", "label": "lifespan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L34"}, {"id": "fastapi", "label": "FastAPI", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L34"}, {"id": "app_main_error_json", "label": "_error_json()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81"}, {"id": "jsonresponse", "label": "JSONResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81"}, {"id": "app_main_sqlalchemy_exception_handler", "label": "sqlalchemy_exception_handler()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L94"}, {"id": "request", "label": "Request", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L94"}, {"id": "sqlalchemyerror", "label": "SQLAlchemyError", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L94"}, {"id": "app_main_unhandled_exception_handler", "label": "unhandled_exception_handler()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L105"}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L105"}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L127"}, {"id": "app_main_root", "label": "root()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L149"}, {"id": "app_main_health_check", "label": "health_check()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L154"}, {"id": "app_main_rationale_95", "label": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95"}, {"id": "app_main_rationale_106", "label": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "contextlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi_middleware_cors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi_responses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "sqlalchemy_exc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_api_request_log_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_api_crypto_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_bx_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_db_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_pl_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_api_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L30", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_lifespan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L34", "weight": 1.0}, {"source": "app_main_lifespan", "target": "fastapi", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L34", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_error_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81", "weight": 1.0}, {"source": "app_main_error_json", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81", "weight": 1.0}, {"source": "app_main_error_json", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81", "weight": 1.0}, {"source": "app_main_error_json", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81", "weight": 1.0}, {"source": "app_main_error_json", "target": "jsonresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L81", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_sqlalchemy_exception_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L94", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "request", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L94", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "sqlalchemyerror", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L94", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_unhandled_exception_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L105", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "request", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L105", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "exception", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L105", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_mask_secret", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L127", "weight": 1.0}, {"source": "app_main_mask_secret", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L127", "weight": 1.0}, {"source": "app_main_mask_secret", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L149", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_health_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L154", "weight": 1.0}, {"source": "app_main_error_json", "target": "jsonresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "app_main_error_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L101", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "app_main_error_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L112", "weight": 1.0}, {"source": "app_main_rationale_95", "target": "app_main_sqlalchemy_exception_handler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95", "weight": 1.0}, {"source": "app_main_rationale_106", "target": "app_main_unhandled_exception_handler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106", "weight": 1.0}], "raw_calls": [{"caller_nid": "app_main_lifespan", "callee": "ensure_initialized", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L38"}, {"caller_nid": "app_main_lifespan", "callee": "init_scheduled_tasks", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L43"}, {"caller_nid": "app_main_lifespan", "callee": "warning", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L45"}, {"caller_nid": "app_main_lifespan", "callee": "shutdown_scheduler", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L52"}, {"caller_nid": "app_main_error_json", "callee": "timestamp", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L88"}, {"caller_nid": "app_main_error_json", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L88"}, {"caller_nid": "app_main_sqlalchemy_exception_handler", "callee": "exception", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L96"}, {"caller_nid": "app_main_unhandled_exception_handler", "callee": "exception", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L107"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/262f91b72eaa2e64144bd543742281195194fab29a08246829e6b1a68ce52c50.json b/backend/graphify-out/cache/ast/262f91b72eaa2e64144bd543742281195194fab29a08246829e6b1a68ce52c50.json new file mode 100644 index 000000000..b7ac86f40 --- /dev/null +++ b/backend/graphify-out/cache/ast/262f91b72eaa2e64144bd543742281195194fab29a08246829e6b1a68ce52c50.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": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"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": "L64"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"id": "freightsettlementlistresponse", "label": "FreightSettlementListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"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": "L97"}, {"id": "freightsettlementcreate", "label": "FreightSettlementCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L97"}, {"id": "freightsettlementread", "label": "FreightSettlementRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L97"}, {"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": "L157"}, {"id": "freightsettlementwithtransports", "label": "FreightSettlementWithTransports", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L157"}, {"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": "L194"}, {"id": "freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L194"}, {"id": "pl_freight_submit_settlement", "label": "submit_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219"}, {"id": "pl_freight_approve_settlement", "label": "approve_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L243"}, {"id": "pl_freight_create_voucher", "label": "create_voucher()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"id": "remittancevouchercreate", "label": "RemittanceVoucherCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"id": "remittancevoucherread", "label": "RemittanceVoucherRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"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": "L296"}, {"id": "plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L321"}], "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": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L4", "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": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L7", "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": "L8", "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": "L10", "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": "L11", "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": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L13", "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": "L14", "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": "L20", "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": "L34", "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": "L34", "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": "L34", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L97", "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": "L97", "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": "L97", "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": "L97", "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": "L97", "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": "L157", "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": "L157", "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": "L157", "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": "L157", "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": "L157", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_submit_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_approve_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_create_voucher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "target": "remittancevouchercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "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": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "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": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "target": "remittancevoucherread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L321", "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": "L321", "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": "L321", "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": "L321", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L321", "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": "L88", "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": "L120", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "plfreightsettlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L122", "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": "L36"}, {"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": "L37"}, {"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": "L40"}, {"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": "L40"}, {"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": "L40"}, {"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": "L42"}, {"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": "L45"}, {"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": "L72"}, {"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": "L72"}, {"caller_nid": "pl_freight_list_settlements", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L73"}, {"caller_nid": "pl_freight_list_settlements", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L82"}, {"caller_nid": "pl_freight_list_settlements", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L84"}, {"caller_nid": "pl_freight_list_settlements", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"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": "L102"}, {"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": "L102"}, {"caller_nid": "pl_freight_create_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L106"}, {"caller_nid": "pl_freight_create_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L108"}, {"caller_nid": "pl_freight_create_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L116"}, {"caller_nid": "pl_freight_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L123"}, {"caller_nid": "pl_freight_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L131"}, {"caller_nid": "pl_freight_create_settlement", "callee": "PlFreightSettlementTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L135"}, {"caller_nid": "pl_freight_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L136"}, {"caller_nid": "pl_freight_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L144"}, {"caller_nid": "pl_freight_create_settlement", "callee": "commit", "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_create_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L147"}, {"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": "L162"}, {"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": "L162"}, {"caller_nid": "pl_freight_get_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L164"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L168"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L178"}, {"caller_nid": "pl_freight_get_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L179"}, {"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": "L183"}, {"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": "L200"}, {"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": "L200"}, {"caller_nid": "pl_freight_update_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L201"}, {"caller_nid": "pl_freight_update_settlement", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L203"}, {"caller_nid": "pl_freight_update_settlement", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L204"}, {"caller_nid": "pl_freight_update_settlement", "callee": "commit", "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_update_settlement", "callee": "refresh", "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_submit_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": "L224"}, {"caller_nid": "pl_freight_submit_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": "L224"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L225"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L228"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L233"}, {"caller_nid": "pl_freight_approve_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": "L248"}, {"caller_nid": "pl_freight_approve_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": "L248"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L249"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L252"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "commit", "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_approve_settlement", "callee": "refresh", "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_create_voucher", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L272"}, {"caller_nid": "pl_freight_create_voucher", "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": "L272"}, {"caller_nid": "pl_freight_create_voucher", "callee": "PlRemittanceVoucher", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L274"}, {"caller_nid": "pl_freight_create_voucher", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L275"}, {"caller_nid": "pl_freight_create_voucher", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L280"}, {"caller_nid": "pl_freight_create_voucher", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L285"}, {"caller_nid": "pl_freight_create_voucher", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L286"}, {"caller_nid": "pl_freight_create_voucher", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L287"}, {"caller_nid": "pl_freight_create_voucher", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L289"}, {"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": "L301"}, {"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": "L301"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L304"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L304"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L310"}, {"caller_nid": "pl_freight_get_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L323"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L323"}, {"caller_nid": "pl_freight_get_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L332"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/2809dda934e6d193c9cc3480f30c8864129118b68d71c5d2e6a283f513ed26a9.json b/backend/graphify-out/cache/ast/2809dda934e6d193c9cc3480f30c8864129118b68d71c5d2e6a283f513ed26a9.json new file mode 100644 index 000000000..ee023493c --- /dev/null +++ b/backend/graphify-out/cache/ast/2809dda934e6d193c9cc3480f30c8864129118b68d71c5d2e6a283f513ed26a9.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": "L49"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L49"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L49"}, {"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": "L71"}, {"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": "L76"}, {"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": "L85"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L85"}, {"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": "L106"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L106"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L106"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L106"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L106"}, {"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": "L205"}, {"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": "L234"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L234"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L234"}, {"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": "L313"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L313"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L313"}, {"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": "L415"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L415"}, {"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": "L524"}, {"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": "L567"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L567"}, {"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": "L685"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L685"}, {"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": "L721"}, {"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": "L745"}, {"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": "L770"}, {"id": "pl_plan_rationale_50", "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": "L50"}, {"id": "pl_plan_rationale_318", "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": "L318"}, {"id": "pl_plan_rationale_691", "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": "L691"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "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": "L22", "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": "L23", "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": "L35", "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": "L49", "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": "L49", "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": "L49", "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": "L71", "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": "L71", "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": "L71", "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": "L71", "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": "L76", "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": "L76", "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": "L76", "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": "L85", "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": "L85", "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": "L85", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L106", "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": "L205", "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": "L205", "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": "L205", "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": "L205", "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": "L234", "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": "L234", "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": "L234", "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": "L234", "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": "L234", "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": "L313", "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": "L313", "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": "L313", "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": "L313", "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": "L313", "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": "L415", "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": "L415", "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": "L415", "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": "L415", "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": "L415", "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": "L524", "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": "L524", "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": "L524", "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": "L524", "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": "L524", "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": "L567", "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": "L567", "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": "L567", "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": "L567", "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": "L567", "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": "L567", "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": "L685", "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": "L685", "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": "L685", "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": "L685", "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": "L685", "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": "L685", "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": "L721", "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": "L721", "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": "L721", "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": "L721", "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": "L721", "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": "L745", "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": "L745", "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": "L745", "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": "L745", "weight": 1.0}, {"source": "pl_plan_archive_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": "L745", "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": "L770", "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": "L770", "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": "L770", "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": "L770", "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": "L801", "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": "L801", "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": "L801", "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": "L801", "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": "L801", "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": "L201", "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": "L242", "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": "L247", "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": "L249", "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": "L321", "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": "L323", "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": "L326", "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": "L435", "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": "L438", "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": "L440", "weight": 1.0}, {"source": "pl_plan_rationale_50", "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": "L50", "weight": 1.0}, {"source": "pl_plan_rationale_318", "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": "L318", "weight": 1.0}, {"source": "pl_plan_rationale_691", "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": "L691", "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": "L51"}, {"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": "L52"}, {"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": "L56"}, {"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": "L56"}, {"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": "L56"}, {"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": "L57"}, {"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": "L58"}, {"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": "L73"}, {"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": "L82"}, {"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": "L87"}, {"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": "L121"}, {"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": "L121"}, {"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": "L122"}, {"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": "L129"}, {"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": "L130"}, {"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": "L131"}, {"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": "L131"}, {"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": "L131"}, {"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": "L136"}, {"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": "lower", "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": "lower", "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": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L160"}, {"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": "L164"}, {"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": "L164"}, {"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": "L164"}, {"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": "L164"}, {"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": "L170"}, {"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": "L170"}, {"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": "L172"}, {"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": "L179"}, {"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": "L179"}, {"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": "L184"}, {"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": "L185"}, {"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": "L192"}, {"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": "L194"}, {"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": "L195"}, {"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": "L197"}, {"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": "L199"}, {"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": "L210"}, {"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": "L210"}, {"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": "L211"}, {"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": "L211"}, {"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": "L211"}, {"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": "L216"}, {"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": "L216"}, {"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": "L216"}, {"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": "L220"}, {"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": "L239"}, {"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": "L239"}, {"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": "L250"}, {"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": "L289"}, {"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": "L294"}, {"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": "L303"}, {"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": "L305"}, {"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": "L307"}, {"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": "L308"}, {"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": "L319"}, {"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": "L320"}, {"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": "L320"}, {"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": "L327"}, {"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": "L360"}, {"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": "L367"}, {"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": "L368"}, {"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": "L372"}, {"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": "L379"}, {"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": "L380"}, {"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": "L389"}, {"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": "L390"}, {"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": "L393"}, {"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": "L401"}, {"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": "L402"}, {"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": "L404"}, {"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": "L423"}, {"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": "L423"}, {"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": "L427"}, {"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": "L427"}, {"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": "L432"}, {"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": "L441"}, {"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": "L473"}, {"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": "L477"}, {"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": "L487"}, {"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": "L494"}, {"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": "L495"}, {"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": "L511"}, {"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": "L513"}, {"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": "L514"}, {"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": "L529"}, {"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": "L529"}, {"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": "L530"}, {"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": "L533"}, {"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": "L533"}, {"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": "L544"}, {"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": "L551"}, {"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": "L553"}, {"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": "L554"}, {"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": "L556"}, {"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": "L573"}, {"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": "L573"}, {"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": "L574"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L578"}, {"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": "L581"}, {"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": "L582"}, {"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": "L590"}, {"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": "L602"}, {"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": "L602"}, {"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": "L609"}, {"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": "L619"}, {"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": "L622"}, {"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": "L630"}, {"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": "L639"}, {"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": "L640"}, {"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": "L642"}, {"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": "L645"}, {"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": "L656"}, {"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": "L679"}, {"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": "L680"}, {"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": "L692"}, {"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": "L692"}, {"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": "L693"}, {"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": "L700"}, {"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": "L702"}, {"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": "L702"}, {"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": "L710"}, {"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": "L726"}, {"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": "L726"}, {"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": "L727"}, {"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": "L730"}, {"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": "L734"}, {"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": "L735"}, {"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": "L750"}, {"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": "L750"}, {"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": "L751"}, {"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": "L754"}, {"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": "L759"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L760"}, {"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": "L775"}, {"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": "L775"}, {"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": "L776"}, {"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": "L781"}, {"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": "L781"}, {"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": "L787"}, {"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": "L787"}, {"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": "L793"}, {"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": "L803"}, {"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": "L803"}, {"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": "L812"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/28913351a0a225b3d94d9ce56fda35b9e255cf37fad78a98ea5bdf1b2244296c.json b/backend/graphify-out/cache/ast/28913351a0a225b3d94d9ce56fda35b9e255cf37fad78a98ea5bdf1b2244296c.json new file mode 100644 index 000000000..bd1c71f4c --- /dev/null +++ b/backend/graphify-out/cache/ast/28913351a0a225b3d94d9ce56fda35b9e255cf37fad78a98ea5bdf1b2244296c.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "label": "public_transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L1"}, {"id": "pl_public_transport_resolve_unit_label", "label": "_resolve_unit_label()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27"}, {"id": "pl_public_transport_get_transport_by_token", "label": "_get_transport_by_token()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34"}, {"id": "pl_public_transport_parse_feedback_images", "label": "_parse_feedback_images()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L48"}, {"id": "pl_public_transport_format_plan_date", "label": "_format_plan_date()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60"}, {"id": "pl_public_transport_build_public_page", "label": "_build_public_page()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L70"}, {"id": "publictransportpageread", "label": "PublicTransportPageRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L70"}, {"id": "pl_public_transport_get_public_transport", "label": "get_public_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L134"}, {"id": "pl_public_transport_save_public_feedback", "label": "save_public_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L141"}, {"id": "publictransportfeedback", "label": "PublicTransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L141"}, {"id": "pl_public_transport_format_file_size", "label": "_format_file_size()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162"}, {"id": "pl_public_transport_upload_public_attachment", "label": "upload_public_attachment()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171"}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_storage", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_attachment_biz", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_response", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_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/public_transport.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_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/public_transport.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_utils_excel_export", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_resolve_unit_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27", "weight": 1.0}, {"source": "pl_public_transport_resolve_unit_label", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27", "weight": 1.0}, {"source": "pl_public_transport_resolve_unit_label", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27", "weight": 1.0}, {"source": "pl_public_transport_resolve_unit_label", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27", "weight": 1.0}, {"source": "pl_public_transport_resolve_unit_label", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_get_transport_by_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_parse_feedback_images", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_public_transport_parse_feedback_images", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L48", "weight": 1.0}, {"source": "pl_public_transport_parse_feedback_images", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_format_plan_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_format_plan_date", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_build_public_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "publictransportpageread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L70", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_get_public_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L134", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L134", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L134", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_save_public_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "publictransportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_format_file_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162", "weight": 1.0}, {"source": "pl_public_transport_format_file_size", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162", "weight": 1.0}, {"source": "pl_public_transport_format_file_size", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_upload_public_attachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_resolve_unit_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L106", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "publictransportpageread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L111", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_format_plan_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L113", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_parse_feedback_images", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L135", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L136", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L147", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L177", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L178", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_format_file_size", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L213", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_public_transport_resolve_unit_label", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L28"}, {"caller_nid": "pl_public_transport_resolve_unit_label", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L31"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L36"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L36"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L44"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "loads", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L52"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L57"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L57"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L57"}, {"caller_nid": "pl_public_transport_format_plan_date", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L64"}, {"caller_nid": "pl_public_transport_format_plan_date", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L66"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L72"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L72"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L72"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L77"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L84"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L84"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L90"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L90"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L92"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L92"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L97"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "load_dict_label_maps", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L97"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L101"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "PublicTransportPlanProductRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L102"}, {"caller_nid": "pl_public_transport_get_public_transport", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L137"}, {"caller_nid": "pl_public_transport_get_public_transport", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L137"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L152"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L157"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L158"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L159"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L180"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L182"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "resolve_upload_folder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L185"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "read", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L186"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "upload_file", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L187"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L188"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L189"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "create_oss", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L194"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "lstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L199"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "splitext", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L199"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L206"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L207"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L218"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L219"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/297b7ce6be7871fd3a1fd0e3c6b717f5a622dcab555ca8b7f4f3e6e7edcda2af.json b/backend/graphify-out/cache/ast/297b7ce6be7871fd3a1fd0e3c6b717f5a622dcab555ca8b7f4f3e6e7edcda2af.json new file mode 100644 index 000000000..f4782654b --- /dev/null +++ b/backend/graphify-out/cache/ast/297b7ce6be7871fd3a1fd0e3c6b717f5a622dcab555ca8b7f4f3e6e7edcda2af.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": "L41"}, {"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": "L45"}, {"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": "L66"}, {"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": "L80"}, {"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": "L116"}, {"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": "L122"}, {"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": "L151"}, {"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": "L174"}, {"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": "L183"}, {"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": "L191"}, {"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": "L205"}, {"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": "L216"}, {"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": "L231"}], "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L66", "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": "L66", "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": "L80", "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": "L80", "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": "L116", "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": "L116", "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": "L122", "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": "L122", "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": "L151", "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": "L151", "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": "L174", "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": "L174", "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": "L183", "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": "L183", "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": "L191", "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": "L191", "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": "L205", "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": "L205", "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": "L216", "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": "L216", "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": "L231", "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": "L231", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/2a396202dbcf00e42ec89ce08603028d56ecf5ebb27b1d970f57cf1d167533b3.json b/backend/graphify-out/cache/ast/2a396202dbcf00e42ec89ce08603028d56ecf5ebb27b1d970f57cf1d167533b3.json new file mode 100644 index 000000000..faf17012d --- /dev/null +++ b/backend/graphify-out/cache/ast/2a396202dbcf00e42ec89ce08603028d56ecf5ebb27b1d970f57cf1d167533b3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "label": "product.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L1"}, {"id": "crm_product_productcategorycreatebody", "label": "ProductCategoryCreateBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L12"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "crm_product_productcategoryupdatebody", "label": "ProductCategoryUpdateBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L26"}, {"id": "crm_product_categorydeletebody", "label": "CategoryDeleteBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L41"}, {"id": "crm_product_productupdatestatusbody", "label": "ProductUpdateStatusBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L47"}, {"id": "crm_product_productlistbody", "label": "ProductListBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L57"}, {"id": "crm_product_productcreatebody", "label": "ProductCreateBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L69"}, {"id": "crm_product_productupdatebody", "label": "ProductUpdateBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L101"}, {"id": "crm_product_productdetailbody", "label": "ProductDetailBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L134"}, {"id": "crm_product_productdeletebody", "label": "ProductDeleteBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L140"}, {"id": "crm_product_productoptionsbody", "label": "ProductOptionsBody", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L147"}, {"id": "crm_product_rationale_1", "label": "CRM \u4ea7\u54c1\u6a21\u5757 Pydantic Schemas", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productcategorycreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L12", "weight": 1.0}, {"source": "crm_product_productcategorycreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productcategoryupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L26", "weight": 1.0}, {"source": "crm_product_productcategoryupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_categorydeletebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L41", "weight": 1.0}, {"source": "crm_product_categorydeletebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L41", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productupdatestatusbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L47", "weight": 1.0}, {"source": "crm_product_productupdatestatusbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productlistbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L57", "weight": 1.0}, {"source": "crm_product_productlistbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productcreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "crm_product_productcreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L101", "weight": 1.0}, {"source": "crm_product_productupdatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L101", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productdetailbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L134", "weight": 1.0}, {"source": "crm_product_productdetailbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L134", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productdeletebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L140", "weight": 1.0}, {"source": "crm_product_productdeletebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L140", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "target": "crm_product_productoptionsbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L147", "weight": 1.0}, {"source": "crm_product_productoptionsbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L147", "weight": 1.0}, {"source": "crm_product_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_crm_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/31457e2ff507ac7a13c3df09a6496aa8428f6b5f9476235412f7b3ad2fb8d614.json b/backend/graphify-out/cache/ast/31457e2ff507ac7a13c3df09a6496aa8428f6b5f9476235412f7b3ad2fb8d614.json new file mode 100644 index 000000000..a93556094 --- /dev/null +++ b/backend/graphify-out/cache/ast/31457e2ff507ac7a13c3df09a6496aa8428f6b5f9476235412f7b3ad2fb8d614.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": "L56"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L56"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L56"}, {"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": "L78"}, {"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": "L83"}, {"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": "L92"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L92"}, {"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": "L113"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L113"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L113"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L113"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L113"}, {"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": "L212"}, {"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": "L241"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L241"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L241"}, {"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": "L320"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L320"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L320"}, {"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": "L424"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L424"}, {"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": "L533"}, {"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": "L576"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L576"}, {"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": "L689"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L689"}, {"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": "L719"}, {"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": "L725"}, {"id": "planarrangeinforead", "label": "PlanArrangeInfoRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L725"}, {"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": "L807"}, {"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": "L859"}, {"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": "L884"}, {"id": "pl_plan_rationale_57", "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": "L57"}, {"id": "pl_plan_rationale_325", "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": "L325"}, {"id": "pl_plan_rationale_695", "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": "L695"}, {"id": "pl_plan_rationale_730", "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": "L730"}, {"id": "pl_plan_rationale_812", "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": "L812"}], "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": "L26", "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": "L27", "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": "L39", "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": "L40", "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": "L41", "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": "L56", "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": "L56", "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": "L56", "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": "L78", "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": "L78", "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": "L78", "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": "L78", "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": "L83", "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": "L83", "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": "L83", "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": "L92", "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": "L92", "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": "L92", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L113", "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": "L212", "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": "L212", "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": "L212", "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": "L212", "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": "L241", "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": "L241", "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": "L241", "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": "L241", "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": "L241", "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": "L320", "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": "L320", "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": "L320", "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": "L320", "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": "L320", "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": "L424", "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": "L424", "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": "L424", "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": "L424", "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": "L424", "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": "L533", "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": "L533", "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": "L533", "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": "L533", "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": "L533", "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": "L576", "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": "L576", "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": "L576", "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": "L576", "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": "L576", "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": "L576", "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": "L689", "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": "L689", "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": "L689", "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": "L689", "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": "L689", "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": "L689", "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": "L719", "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": "L719", "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": "L719", "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": "L725", "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": "L725", "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": "L725", "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": "L725", "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": "L725", "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": "L807", "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": "L807", "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": "L807", "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": "L807", "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": "L807", "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": "L859", "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": "L859", "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": "L859", "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": "L859", "weight": 1.0}, {"source": "pl_plan_archive_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": "L859", "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": "L884", "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": "L884", "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": "L884", "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": "L884", "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": "L915", "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": "L915", "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": "L915", "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": "L915", "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": "L915", "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": "L208", "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": "L249", "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": "L254", "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": "L256", "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": "L328", "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": "L330", "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": "L333", "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": "L444", "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": "L447", "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": "L449", "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": "L734", "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": "L751", "weight": 1.0}, {"source": "pl_plan_rationale_57", "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": "L57", "weight": 1.0}, {"source": "pl_plan_rationale_325", "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": "L325", "weight": 1.0}, {"source": "pl_plan_rationale_695", "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": "L695", "weight": 1.0}, {"source": "pl_plan_rationale_730", "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": "L730", "weight": 1.0}, {"source": "pl_plan_rationale_812", "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": "L812", "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": "L58"}, {"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": "L59"}, {"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": "L63"}, {"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": "L63"}, {"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": "L63"}, {"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": "L64"}, {"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": "L65"}, {"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": "L80"}, {"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": "L89"}, {"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": "L94"}, {"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": "L128"}, {"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": "L128"}, {"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": "L129"}, {"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": "L136"}, {"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": "L137"}, {"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": "L138"}, {"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": "L138"}, {"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": "L138"}, {"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": "L143"}, {"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": "L158"}, {"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": "L158"}, {"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": "L158"}, {"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": "L167"}, {"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": "L171"}, {"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": "L171"}, {"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": "L171"}, {"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": "L171"}, {"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": "L177"}, {"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": "L177"}, {"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": "L179"}, {"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": "L186"}, {"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": "L186"}, {"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": "L191"}, {"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": "L192"}, {"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": "L199"}, {"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": "L201"}, {"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": "L202"}, {"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": "L204"}, {"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": "L206"}, {"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": "L217"}, {"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": "L217"}, {"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": "L218"}, {"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": "L218"}, {"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": "L218"}, {"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": "L223"}, {"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": "L223"}, {"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": "L223"}, {"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": "L227"}, {"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": "L246"}, {"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": "L246"}, {"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": "L257"}, {"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": "L296"}, {"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": "L301"}, {"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": "L310"}, {"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": "L312"}, {"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": "L314"}, {"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": "L315"}, {"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": "L326"}, {"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": "L327"}, {"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": "L327"}, {"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": "L334"}, {"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": "L367"}, {"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": "L374"}, {"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": "L375"}, {"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": "L379"}, {"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": "L386"}, {"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": "L387"}, {"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": "L396"}, {"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": "L397"}, {"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": "L400"}, {"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": "L410"}, {"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": "L411"}, {"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": "L413"}, {"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": "L432"}, {"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": "L432"}, {"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": "L436"}, {"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": "L436"}, {"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": "L441"}, {"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": "L450"}, {"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": "L482"}, {"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": "L486"}, {"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": "L496"}, {"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": "L503"}, {"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": "L504"}, {"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": "L520"}, {"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": "L522"}, {"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": "L523"}, {"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": "L538"}, {"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": "L538"}, {"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": "L539"}, {"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": "L542"}, {"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": "L542"}, {"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": "L553"}, {"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": "L560"}, {"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": "L562"}, {"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": "L563"}, {"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": "L565"}, {"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": "L582"}, {"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": "L582"}, {"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": "L583"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L587"}, {"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": "L590"}, {"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": "L591"}, {"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": "L599"}, {"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": "L611"}, {"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": "L611"}, {"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": "L618"}, {"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": "L628"}, {"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": "L631"}, {"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": "L639"}, {"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": "L648"}, {"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": "L649"}, {"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": "L651"}, {"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": "L654"}, {"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": "L665"}, {"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": "L675"}, {"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": "L683"}, {"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": "L684"}, {"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": "L696"}, {"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": "L696"}, {"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": "L697"}, {"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": "L704"}, {"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": "L706"}, {"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": "L706"}, {"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": "L714"}, {"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": "L720"}, {"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": "L731"}, {"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": "L731"}, {"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": "L732"}, {"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": "L739"}, {"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": "L739"}, {"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": "L750"}, {"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": "L754"}, {"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": "L767"}, {"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": "L767"}, {"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": "L775"}, {"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": "L775"}, {"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": "L783"}, {"caller_nid": "pl_plan_get_plan_arrange_info", "callee": "TransportInventoryLinkRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L784"}, {"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": "L813"}, {"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": "L813"}, {"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": "L814"}, {"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": "L817"}, {"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": "L820"}, {"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": "L824"}, {"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": "L824"}, {"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": "L834"}, {"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": "L841"}, {"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": "L848"}, {"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": "L849"}, {"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": "L864"}, {"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": "L864"}, {"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": "L865"}, {"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": "L868"}, {"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": "L873"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L874"}, {"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": "L889"}, {"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": "L889"}, {"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": "L890"}, {"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": "L895"}, {"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": "L895"}, {"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": "L901"}, {"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": "L901"}, {"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": "L907"}, {"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": "L917"}, {"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": "L917"}, {"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": "L926"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf.json b/backend/graphify-out/cache/ast/37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf.json new file mode 100644 index 000000000..4e61f4d4a --- /dev/null +++ b/backend/graphify-out/cache/ast/37c7372f38d76f1020d31ce8ca9e7f0cb3bc3c204a50deb092b494ce8c983fbf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "label": "bx_models.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}, {"id": "models_bx_models_bxexpenseitem", "label": "BxExpenseItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_bx_models_bxworkflowdef", "label": "BxWorkflowDef", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33"}, {"id": "models_bx_models_bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L62"}, {"id": "models_bx_models_bxadvanceapply", "label": "BxAdvanceApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L95"}, {"id": "models_bx_models_bxadvanceapproval", "label": "BxAdvanceApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L128"}, {"id": "models_bx_models_bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L151"}, {"id": "models_bx_models_bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L189"}, {"id": "models_bx_models_bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L210"}, {"id": "models_bx_models_bxreimburseoffset", "label": "BxReimburseOffset", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L233"}, {"id": "models_bx_models_bxattachment", "label": "BxAttachment", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L251"}, {"id": "models_bx_models_rationale_1", "label": "\u62a5\u9500\uff08bx\uff09\u6a21\u5757\u6570\u636e\u6a21\u578b \u2014 \u5bf9\u9f50 docs/sql/20260606_bx_tables.sql", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxexpenseitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10", "weight": 1.0}, {"source": "models_bx_models_bxexpenseitem", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflowdef", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33", "weight": 1.0}, {"source": "models_bx_models_bxworkflowdef", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxworkflownode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L62", "weight": 1.0}, {"source": "models_bx_models_bxworkflownode", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L62", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L95", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxadvanceapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L128", "weight": 1.0}, {"source": "models_bx_models_bxadvanceapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L128", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapply", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L151", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapply", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L151", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimbursedetail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L189", "weight": 1.0}, {"source": "models_bx_models_bxreimbursedetail", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L189", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseapproval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L210", "weight": 1.0}, {"source": "models_bx_models_bxreimburseapproval", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L210", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxreimburseoffset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L233", "weight": 1.0}, {"source": "models_bx_models_bxreimburseoffset", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L233", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "target": "models_bx_models_bxattachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L251", "weight": 1.0}, {"source": "models_bx_models_bxattachment", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L251", "weight": 1.0}, {"source": "models_bx_models_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_models_bx_models_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3a44f487c6a0161978da6614603a2a5b6a36ca68e56dab3bd8f0d084ae35b4ab.json b/backend/graphify-out/cache/ast/3a44f487c6a0161978da6614603a2a5b6a36ca68e56dab3bd8f0d084ae35b4ab.json new file mode 100644 index 000000000..5d051cc7c --- /dev/null +++ b/backend/graphify-out/cache/ast/3a44f487c6a0161978da6614603a2a5b6a36ca68e56dab3bd8f0d084ae35b4ab.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": "L41"}, {"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": "L45"}, {"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": "L66"}, {"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": "L80"}, {"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": "L116"}, {"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": "L122"}, {"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": "L151"}, {"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": "L174"}, {"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": "L183"}, {"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": "L191"}, {"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": "L205"}, {"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": "L216"}, {"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": "L231"}, {"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": "L238"}, {"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": "L243"}], "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L66", "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": "L66", "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": "L80", "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": "L80", "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": "L116", "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": "L116", "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": "L122", "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": "L122", "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": "L151", "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": "L151", "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": "L174", "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": "L174", "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": "L183", "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": "L183", "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": "L191", "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": "L191", "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": "L205", "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": "L205", "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": "L216", "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": "L216", "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": "L231", "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": "L231", "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": "L238", "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": "L238", "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": "L243", "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": "L243", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/3ee9c2a5ddb7640cf5d53e7dcd6dd45c8a85a4c4ab7b074f93267f2f731a8b95.json b/backend/graphify-out/cache/ast/3ee9c2a5ddb7640cf5d53e7dcd6dd45c8a85a4c4ab7b074f93267f2f731a8b95.json new file mode 100644 index 000000000..96c01f30b --- /dev/null +++ b/backend/graphify-out/cache/ast/3ee9c2a5ddb7640cf5d53e7dcd6dd45c8a85a4c4ab7b074f93267f2f731a8b95.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "label": "base_data.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}, {"id": "pl_base_data_list_carriers", "label": "list_carriers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57"}, {"id": "pl_base_data_create_carrier", "label": "create_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88"}, {"id": "pl_base_data_get_carrier", "label": "get_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113"}, {"id": "pl_base_data_update_carrier", "label": "update_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124"}, {"id": "pl_base_data_delete_carrier", "label": "delete_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143"}, {"id": "pl_base_data_vehicle_to_read", "label": "_vehicle_to_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175"}, {"id": "pl_base_data_vehicle_to_detail", "label": "_vehicle_to_detail()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188"}, {"id": "pl_base_data_list_vehicles", "label": "list_vehicles()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206"}, {"id": "pl_base_data_create_vehicle", "label": "create_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247"}, {"id": "pl_base_data_get_vehicle", "label": "get_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312"}, {"id": "pl_base_data_update_vehicle", "label": "update_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323"}, {"id": "pl_base_data_delete_vehicle", "label": "delete_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L374"}, {"id": "pl_base_data_personnel_to_read", "label": "_personnel_to_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L406"}, {"id": "pl_base_data_personnel_to_detail", "label": "_personnel_to_detail()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L415"}, {"id": "pl_base_data_list_personnel", "label": "list_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L429"}, {"id": "pl_base_data_create_personnel", "label": "create_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L461"}, {"id": "pl_base_data_get_personnel", "label": "get_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L503"}, {"id": "pl_base_data_update_personnel", "label": "update_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L514"}, {"id": "pl_base_data_delete_personnel", "label": "delete_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L552"}, {"id": "pl_base_data_personnel_to_driver_read", "label": "_personnel_to_driver_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L584"}, {"id": "pl_base_data_list_drivers", "label": "list_drivers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L603"}, {"id": "pl_base_data_create_driver", "label": "create_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L630"}, {"id": "pl_base_data_get_driver", "label": "get_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L655"}, {"id": "pl_base_data_update_driver", "label": "update_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L666"}, {"id": "pl_base_data_delete_driver", "label": "delete_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L691"}, {"id": "pl_base_data_bind_vehicle_driver", "label": "bind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L709"}, {"id": "pl_base_data_unbind_vehicle_driver", "label": "unbind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L739"}, {"id": "pl_base_data_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e API\uff08\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u4eba\u5458\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_services_pl_cert_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_services_pl_personnel_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_carriers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_vehicle_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_vehicle_to_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_vehicles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L374", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L386", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_personnel_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L406", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_personnel_to_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L415", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L429", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L461", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L503", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L514", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L552", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L564", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_personnel_to_driver_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L584", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_drivers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L603", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L630", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L655", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L666", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L691", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_bind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L709", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_unbind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L739", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "pl_base_data_vehicle_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L197", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "pl_base_data_vehicle_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L241", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "pl_base_data_vehicle_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L308", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "pl_base_data_vehicle_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "pl_base_data_vehicle_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L370", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "pl_base_data_personnel_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L418", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "pl_base_data_personnel_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L457", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "pl_base_data_personnel_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L499", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "pl_base_data_personnel_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L510", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "pl_base_data_personnel_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L548", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L626", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L651", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L662", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L687", "weight": 1.0}, {"source": "pl_base_data_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_base_data_list_carriers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L64"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L64"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L70"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L73"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L74"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L75"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L75"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L75"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L76"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L76"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L76"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L80"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L82"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L84"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L93"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L93"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "PlCarrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L95"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L96"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L106"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L107"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L108"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L119"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L131"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "setattr", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L134"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L137"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L138"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L148"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L148"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L149"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L152"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L157"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L157"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L157"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L166"}, {"caller_nid": "pl_base_data_vehicle_to_read", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L180"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "load_vehicle_personnel_summaries", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L191"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L192"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "load_vehicle_personnel_rows", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L193"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "certs_to_read", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L194"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "list_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L195"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "VehicleDetailRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L198"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L199"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L214"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L214"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L215"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L215"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L221"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L224"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L227"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L230"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L230"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L232"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L233"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L233"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L233"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L236"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "load_vehicle_personnel_summaries", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L237"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L241"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L252"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L252"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L255"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L255"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L255"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L263"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "PlVehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L266"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L278"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L279"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "save_vehicle_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L282"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L290"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L299"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L301"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L304"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L307"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L317"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L317"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L318"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L329"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L329"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L330"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L332"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L333"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L334"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L336"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "setattr", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L337"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "save_vehicle_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L343"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L352"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L361"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L363"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L366"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L369"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L380"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L383"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L397"}, {"caller_nid": "pl_base_data_personnel_to_read", "callee": "nearest_expire_date", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L409"}, {"caller_nid": "pl_base_data_personnel_to_read", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L410"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "certs_to_read", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L419"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "list_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L420"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "PersonnelDetailRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L422"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L423"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L435"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L435"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L436"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L436"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L442"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L445"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L446"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L447"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L447"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L447"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L448"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L452"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L453"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L453"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L453"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L454"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L456"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L466"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L466"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "PlPersonnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L468"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L469"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L480"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L481"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L484"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L493"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L495"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L498"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L508"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L508"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L509"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L520"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L520"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L521"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L523"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L524"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L526"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "setattr", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L527"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L533"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L542"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L544"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L547"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L557"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L557"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L558"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L561"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L575"}, {"caller_nid": "pl_base_data_personnel_to_driver_read", "callee": "DriverRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L585"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L608"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L608"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L609"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L609"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L615"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L616"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L617"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L617"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L617"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L618"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L622"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L623"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L623"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L623"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L624"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L626"}, {"caller_nid": "pl_base_data_create_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L635"}, {"caller_nid": "pl_base_data_create_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L635"}, {"caller_nid": "pl_base_data_create_driver", "callee": "PlPersonnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L637"}, {"caller_nid": "pl_base_data_create_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L638"}, {"caller_nid": "pl_base_data_create_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L648"}, {"caller_nid": "pl_base_data_create_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L649"}, {"caller_nid": "pl_base_data_create_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L650"}, {"caller_nid": "pl_base_data_get_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L660"}, {"caller_nid": "pl_base_data_get_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L660"}, {"caller_nid": "pl_base_data_get_driver", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L661"}, {"caller_nid": "pl_base_data_update_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L672"}, {"caller_nid": "pl_base_data_update_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L672"}, {"caller_nid": "pl_base_data_update_driver", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L673"}, {"caller_nid": "pl_base_data_update_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L685"}, {"caller_nid": "pl_base_data_update_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L686"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L696"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L696"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L697"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L700"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L714"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L714"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L717"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L717"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L717"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "PlVehiclePersonnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L723"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L724"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L733"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L734"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L744"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L744"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L746"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L746"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L746"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L756"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L756"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L756"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L766"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/410d532e4da905508d54aef0605ccedac4affdbc73ca7ddc81ff95c4566c4363.json b/backend/graphify-out/cache/ast/410d532e4da905508d54aef0605ccedac4affdbc73ca7ddc81ff95c4566c4363.json new file mode 100644 index 000000000..2b82ad6be --- /dev/null +++ b/backend/graphify-out/cache/ast/410d532e4da905508d54aef0605ccedac4affdbc73ca7ddc81ff95c4566c4363.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": "L23"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23"}, {"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": "L31"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"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": "L41"}, {"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": "L45"}, {"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": "L56"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"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": "L101"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L101"}, {"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": "L146"}, {"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": "L170"}, {"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": "L181"}, {"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": "L208"}, {"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": "L258"}, {"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": "L276"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L276"}, {"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": "L336"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L336"}, {"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": "L372"}, {"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": "L479"}, {"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": "L518"}, {"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": "L540"}, {"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": "L562"}, {"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": "L669"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L669"}, {"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": "L691"}, {"id": "services_pl_plan_service_rationale_382", "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": "L382"}, {"id": "services_pl_plan_service_rationale_528", "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": "L528"}], "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": "L20", "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": "L23", "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": "L23", "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": "L23", "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": "L23", "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": "L31", "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": "L31", "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": "L31", "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": "L41", "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L45", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L170", "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": "L170", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L258", "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": "L258", "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": "L258", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L276", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L336", "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": "L372", "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": "L372", "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": "L372", "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": "L372", "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": "L372", "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": "L372", "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": "L372", "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": "L372", "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": "L479", "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": "L479", "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": "L479", "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": "L479", "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": "L479", "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": "L518", "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": "L518", "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": "L518", "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": "L518", "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": "L518", "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": "L518", "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": "L518", "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": "L518", "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": "L540", "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": "L540", "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": "L540", "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": "L540", "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": "L540", "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": "L540", "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": "L540", "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": "L540", "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": "L562", "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": "L562", "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": "L562", "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": "L562", "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": "L562", "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": "L562", "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": "L562", "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": "L562", "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": "L562", "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": "L669", "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": "L669", "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": "L691", "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": "L691", "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": "L691", "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": "L33", "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": "L42", "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": "L66", "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": "L67", "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": "L69", "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": "L154", "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": "L296", "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": "L310", "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": "L320", "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": "L392", "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": "L413", "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": "L430", "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": "L431", "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": "L529", "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": "L551", "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": "L585", "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": "L587", "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": "L602", "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": "L613", "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": "L618", "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": "L681", "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": "L683", "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": "L692", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_382", "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": "L382", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_528", "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": "L528", "weight": 1.0}], "raw_calls": [{"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": "L70"}, {"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": "L109"}, {"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": "L109"}, {"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": "L121"}, {"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": "L121"}, {"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": "L121"}, {"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": "L128"}, {"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": "L128"}, {"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": "L133"}, {"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": "L133"}, {"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": "L143"}, {"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": "L175"}, {"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": "L195"}, {"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": "L195"}, {"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": "L217"}, {"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": "L217"}, {"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": "L226"}, {"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": "L228"}, {"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": "L233"}, {"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": "L233"}, {"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": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L246"}, {"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": "L247"}, {"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": "L249"}, {"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": "L252"}, {"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": "L254"}, {"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": "L259"}, {"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": "L260"}, {"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": "L262"}, {"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": "L262"}, {"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": "L262"}, {"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": "L263"}, {"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": "L264"}, {"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": "L285"}, {"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": "L285"}, {"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": "L294"}, {"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": "L303"}, {"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": "L303"}, {"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": "L403"}, {"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": "L403"}, {"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": "L432"}, {"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": "L441"}, {"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": "L442"}, {"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": "L443"}, {"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": "L444"}, {"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": "L445"}, {"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": "L489"}, {"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": "L489"}, {"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": "L500"}, {"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": "L500"}, {"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": "L574"}, {"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": "L574"}, {"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": "L583"}, {"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": "L595"}, {"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": "L595"}, {"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": "L617"}, {"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": "L619"}, {"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": "L644"}, {"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": "L646"}, {"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": "L647"}, {"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": "L648"}, {"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": "L671"}, {"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": "L673"}, {"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": "L682"}, {"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": "L685"}, {"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"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/46165dee26046cf86fd483372a83f5c50ffbe11a7889e19d565708280b8f43e6.json b/backend/graphify-out/cache/ast/46165dee26046cf86fd483372a83f5c50ffbe11a7889e19d565708280b8f43e6.json new file mode 100644 index 000000000..183db1a60 --- /dev/null +++ b/backend/graphify-out/cache/ast/46165dee26046cf86fd483372a83f5c50ffbe11a7889e19d565708280b8f43e6.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": "L50"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L50"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L50"}, {"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": "L72"}, {"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": "L77"}, {"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": "L86"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86"}, {"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": "L107"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"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": "L206"}, {"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": "L235"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L235"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L235"}, {"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": "L314"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L314"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L314"}, {"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": "L418"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L418"}, {"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": "L527"}, {"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": "L570"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L570"}, {"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": "L683"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L683"}, {"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": "L719"}, {"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": "L743"}, {"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": "L768"}, {"id": "pl_plan_rationale_51", "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": "L51"}, {"id": "pl_plan_rationale_319", "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": "L319"}, {"id": "pl_plan_rationale_689", "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": "L689"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "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": "L22", "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": "L23", "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": "L35", "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": "L50", "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": "L50", "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": "L50", "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": "L72", "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": "L72", "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": "L72", "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": "L72", "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": "L77", "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": "L77", "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": "L77", "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": "L86", "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": "L86", "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": "L86", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L206", "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": "L206", "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": "L206", "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": "L206", "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": "L235", "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": "L235", "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": "L235", "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": "L235", "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": "L235", "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": "L314", "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": "L314", "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": "L314", "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": "L314", "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": "L314", "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": "L418", "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": "L418", "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": "L418", "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": "L418", "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": "L418", "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": "L527", "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": "L527", "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": "L527", "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": "L527", "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": "L527", "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": "L570", "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": "L570", "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": "L570", "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": "L570", "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": "L570", "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": "L570", "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": "L683", "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": "L683", "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": "L683", "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": "L683", "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": "L683", "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": "L683", "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": "L719", "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": "L719", "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": "L719", "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": "L719", "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": "L719", "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": "L743", "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": "L743", "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": "L743", "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": "L743", "weight": 1.0}, {"source": "pl_plan_archive_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": "L743", "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": "L768", "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": "L768", "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": "L768", "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": "L768", "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": "L799", "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": "L799", "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": "L799", "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": "L799", "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": "L799", "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": "L202", "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": "L243", "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": "L248", "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": "L250", "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": "L322", "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": "L324", "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": "L327", "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": "L438", "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": "L441", "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": "L443", "weight": 1.0}, {"source": "pl_plan_rationale_51", "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": "L51", "weight": 1.0}, {"source": "pl_plan_rationale_319", "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": "L319", "weight": 1.0}, {"source": "pl_plan_rationale_689", "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": "L689", "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": "L52"}, {"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": "L53"}, {"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": "L57"}, {"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": "L57"}, {"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": "L57"}, {"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": "L58"}, {"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": "L59"}, {"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": "L74"}, {"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": "L83"}, {"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": "L88"}, {"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": "L122"}, {"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": "L122"}, {"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": "L123"}, {"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": "L130"}, {"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": "L131"}, {"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": "L132"}, {"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": "L132"}, {"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": "L132"}, {"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": "L137"}, {"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": "L152"}, {"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": "L152"}, {"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": "L152"}, {"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": "L161"}, {"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": "L165"}, {"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": "L165"}, {"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": "L165"}, {"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": "L165"}, {"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": "L171"}, {"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": "L171"}, {"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": "L173"}, {"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": "L180"}, {"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": "L180"}, {"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": "L185"}, {"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": "L186"}, {"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": "L193"}, {"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": "L195"}, {"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": "L196"}, {"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": "L198"}, {"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": "L200"}, {"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": "L211"}, {"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": "L211"}, {"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": "L212"}, {"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": "L212"}, {"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": "L212"}, {"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": "L217"}, {"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": "L217"}, {"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": "L217"}, {"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": "L221"}, {"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": "L240"}, {"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": "L240"}, {"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": "L251"}, {"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": "L290"}, {"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": "L295"}, {"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": "calc_plan_total_amount", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L306"}, {"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": "L308"}, {"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": "L309"}, {"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": "L320"}, {"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": "L321"}, {"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": "L321"}, {"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": "L328"}, {"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": "L361"}, {"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": "L368"}, {"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": "L369"}, {"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": "L373"}, {"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": "L380"}, {"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": "L381"}, {"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": "L390"}, {"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": "L391"}, {"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": "L394"}, {"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": "L404"}, {"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": "L405"}, {"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": "L407"}, {"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": "L426"}, {"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": "L426"}, {"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": "L430"}, {"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": "L430"}, {"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": "L435"}, {"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": "L444"}, {"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": "L476"}, {"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": "L480"}, {"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": "L490"}, {"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": "L497"}, {"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": "L498"}, {"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": "L514"}, {"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": "L516"}, {"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": "L517"}, {"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": "L532"}, {"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": "L532"}, {"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": "L533"}, {"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": "L536"}, {"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": "L536"}, {"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": "L547"}, {"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": "L554"}, {"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": "L556"}, {"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": "L557"}, {"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": "L559"}, {"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": "L576"}, {"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": "L576"}, {"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": "L577"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L581"}, {"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": "L584"}, {"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": "L585"}, {"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": "L593"}, {"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": "L605"}, {"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": "L605"}, {"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": "L612"}, {"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": "L622"}, {"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": "L625"}, {"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": "L633"}, {"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": "L642"}, {"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": "L643"}, {"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": "L645"}, {"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": "L648"}, {"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": "L659"}, {"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": "L669"}, {"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": "L677"}, {"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": "L678"}, {"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": "L690"}, {"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": "L690"}, {"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": "L691"}, {"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": "L698"}, {"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": "L700"}, {"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": "L700"}, {"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": "L708"}, {"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": "L724"}, {"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": "L724"}, {"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": "L725"}, {"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": "L728"}, {"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": "L732"}, {"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": "L733"}, {"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": "L748"}, {"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": "L748"}, {"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": "L749"}, {"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": "L752"}, {"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": "L757"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "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_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": "L773"}, {"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": "L773"}, {"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": "L774"}, {"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": "L779"}, {"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": "L779"}, {"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": "L785"}, {"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": "L785"}, {"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": "L791"}, {"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": "L801"}, {"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": "L801"}, {"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": "L810"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4801e99465eccdca2e3ad8fbe6d79b0fb5c094830ee959e62467316a3a823e73.json b/backend/graphify-out/cache/ast/4801e99465eccdca2e3ad8fbe6d79b0fb5c094830ee959e62467316a3a823e73.json new file mode 100644 index 000000000..6fdd2b7cb --- /dev/null +++ b/backend/graphify-out/cache/ast/4801e99465eccdca2e3ad8fbe6d79b0fb5c094830ee959e62467316a3a823e73.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "label": "pl_cert_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L1"}, {"id": "services_pl_cert_service_list_owner_certs", "label": "list_owner_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14"}, {"id": "plcert", "label": "PlCert", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14"}, {"id": "services_pl_cert_service_certs_to_read", "label": "certs_to_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30"}, {"id": "certread", "label": "CertRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30"}, {"id": "services_pl_cert_service_normalize_cert_row", "label": "_normalize_cert_row()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51"}, {"id": "certrow", "label": "CertRow", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51"}, {"id": "services_pl_cert_service_save_owner_certs", "label": "save_owner_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57"}, {"id": "services_pl_cert_service_nearest_expire_date", "label": "nearest_expire_date()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111"}, {"id": "services_pl_cert_service_resolve_owner_label", "label": "_resolve_owner_label()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129"}, {"id": "services_pl_cert_service_scan_cert_expiry", "label": "scan_cert_expiry()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L156"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L156"}, {"id": "services_pl_cert_service_rationale_67", "label": "\u6309 cert_id upsert\uff1b\u672a\u51fa\u73b0\u5728\u5217\u8868\u4e2d\u7684\u65e7\u8bc1\u8f6f\u5220\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L67"}, {"id": "services_pl_cert_service_rationale_157", "label": "\u626b\u63cf pl_cert \u751f\u6210\u5230\u671f\u63d0\u9192\uff0c\u8fd4\u56de\u65b0\u5efa\u6761\u6570\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L157"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_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_cert_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_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_cert_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_list_owner_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "services_pl_cert_service_list_owner_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "services_pl_cert_service_list_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "services_pl_cert_service_list_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "services_pl_cert_service_list_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "services_pl_cert_service_list_owner_certs", "target": "plcert", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_certs_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30", "weight": 1.0}, {"source": "services_pl_cert_service_certs_to_read", "target": "plcert", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30", "weight": 1.0}, {"source": "services_pl_cert_service_certs_to_read", "target": "certread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_normalize_cert_row", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51", "weight": 1.0}, {"source": "services_pl_cert_service_normalize_cert_row", "target": "certrow", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51", "weight": 1.0}, {"source": "services_pl_cert_service_normalize_cert_row", "target": "certrow", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_save_owner_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "certrow", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_nearest_expire_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111", "weight": 1.0}, {"source": "services_pl_cert_service_nearest_expire_date", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111", "weight": 1.0}, {"source": "services_pl_cert_service_nearest_expire_date", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111", "weight": 1.0}, {"source": "services_pl_cert_service_nearest_expire_date", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111", "weight": 1.0}, {"source": "services_pl_cert_service_nearest_expire_date", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111", "weight": 1.0}, {"source": "services_pl_cert_service_nearest_expire_date", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L111", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_resolve_owner_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129", "weight": 1.0}, {"source": "services_pl_cert_service_resolve_owner_label", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129", "weight": 1.0}, {"source": "services_pl_cert_service_resolve_owner_label", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129", "weight": 1.0}, {"source": "services_pl_cert_service_resolve_owner_label", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129", "weight": 1.0}, {"source": "services_pl_cert_service_resolve_owner_label", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129", "weight": 1.0}, {"source": "services_pl_cert_service_resolve_owner_label", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L129", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_scan_cert_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L156", "weight": 1.0}, {"source": "services_pl_cert_service_scan_cert_expiry", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L156", "weight": 1.0}, {"source": "services_pl_cert_service_scan_cert_expiry", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L156", "weight": 1.0}, {"source": "services_pl_cert_service_scan_cert_expiry", "target": "int", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L156", "weight": 1.0}, {"source": "services_pl_cert_service_certs_to_read", "target": "certread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L32", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "services_pl_cert_service_list_owner_certs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L68", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "services_pl_cert_service_normalize_cert_row", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L73", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "plcert", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_cert_service_scan_cert_expiry", "target": "services_pl_cert_service_resolve_owner_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L185", "weight": 1.0}, {"source": "services_pl_cert_service_rationale_67", "target": "services_pl_cert_service_save_owner_certs", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L67", "weight": 1.0}, {"source": "services_pl_cert_service_rationale_157", "target": "services_pl_cert_service_scan_cert_expiry", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L157", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L18"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L18"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L25"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L25"}, {"caller_nid": "services_pl_cert_service_normalize_cert_row", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L54"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L84"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L87"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L101"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L102"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L103"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L115"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L115"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L115"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L121"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L123"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L134"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L134"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L145"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L158"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L159"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L161"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L174"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L174"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L191"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L192"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L208"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/498f3cc46ec62e87e8d38357a868e8cca1ea67dfa6d5ede652831a2f31bf9759.json b/backend/graphify-out/cache/ast/498f3cc46ec62e87e8d38357a868e8cca1ea67dfa6d5ede652831a2f31bf9759.json new file mode 100644 index 000000000..ad6abcf7f --- /dev/null +++ b/backend/graphify-out/cache/ast/498f3cc46ec62e87e8d38357a868e8cca1ea67dfa6d5ede652831a2f31bf9759.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": "L330"}, {"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": "L357"}, {"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": "L416"}, {"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": "L435"}, {"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": "L464"}, {"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": "L495"}, {"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": "L515"}, {"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": "L542"}, {"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": "L574"}, {"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": "L603"}, {"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": "L628"}, {"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_331", "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": "L331"}, {"id": "models_pl_models_rationale_417", "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": "L417"}, {"id": "models_pl_models_rationale_436", "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": "L436"}, {"id": "models_pl_models_rationale_465", "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": "L465"}, {"id": "models_pl_models_rationale_496", "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": "L496"}, {"id": "models_pl_models_rationale_516", "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": "L516"}, {"id": "models_pl_models_rationale_575", "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": "L575"}, {"id": "models_pl_models_rationale_604", "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": "L604"}, {"id": "models_pl_models_rationale_629", "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": "L629"}], "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": "L330", "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": "L330", "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": "L357", "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": "L357", "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": "L416", "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": "L416", "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": "L435", "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": "L435", "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": "L464", "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": "L464", "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": "L495", "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": "L495", "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": "L515", "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": "L515", "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": "L542", "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": "L542", "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": "L574", "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": "L574", "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": "L603", "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": "L603", "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": "L628", "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": "L628", "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_331", "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": "L331", "weight": 1.0}, {"source": "models_pl_models_rationale_417", "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": "L417", "weight": 1.0}, {"source": "models_pl_models_rationale_436", "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": "L436", "weight": 1.0}, {"source": "models_pl_models_rationale_465", "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": "L465", "weight": 1.0}, {"source": "models_pl_models_rationale_496", "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": "L496", "weight": 1.0}, {"source": "models_pl_models_rationale_516", "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": "L516", "weight": 1.0}, {"source": "models_pl_models_rationale_575", "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": "L575", "weight": 1.0}, {"source": "models_pl_models_rationale_604", "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": "L604", "weight": 1.0}, {"source": "models_pl_models_rationale_629", "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": "L629", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4a8f7dc5a0d3e469c7634fac58eb2ed8c65c1f625c70b94ceda244e9247ea9d5.json b/backend/graphify-out/cache/ast/4a8f7dc5a0d3e469c7634fac58eb2ed8c65c1f625c70b94ceda244e9247ea9d5.json new file mode 100644 index 000000000..cbba68c6d --- /dev/null +++ b/backend/graphify-out/cache/ast/4a8f7dc5a0d3e469c7634fac58eb2ed8c65c1f625c70b94ceda244e9247ea9d5.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_get_inventory_ledger", "label": "get_inventory_ledger()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "pl_inventory_set_warning_threshold", "label": "set_warning_threshold()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76"}, {"id": "inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76"}, {"id": "pl_inventory_list_warnings", "label": "list_warnings()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124"}, {"id": "inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124"}, {"id": "pl_inventory_update_warning", "label": "update_warning()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"id": "inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"id": "pl_inventory_list_transactions", "label": "list_transactions()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "pl_inventory_get_summary", "label": "get_summary()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222"}, {"id": "inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222"}, {"id": "pl_inventory_list_document_reminders", "label": "list_document_reminders()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283"}, {"id": "documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283"}, {"id": "pl_inventory_update_document_reminder", "label": "update_document_reminder()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301"}, {"id": "documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301"}, {"id": "pl_inventory_check_document_expiry", "label": "check_document_expiry()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_inventory_ledger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_set_warning_threshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "inventorywarningthreshold", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "inventorywarningread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "inventorywarningupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "inventorywarningread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_transactions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_document_reminders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "documentreminderread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_document_reminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "documentreminderupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "documentreminderread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_check_document_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337", "weight": 1.0}, {"source": "pl_inventory_check_document_expiry", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L67", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L274", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L54"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L54"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L55"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L61"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L63"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L81"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L81"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L84"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L84"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L98"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L99"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L112"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L114"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L129"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L129"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L130"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L138"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L138"}, {"caller_nid": "pl_inventory_update_warning", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L148"}, {"caller_nid": "pl_inventory_update_warning", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L148"}, {"caller_nid": "pl_inventory_update_warning", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151"}, {"caller_nid": "pl_inventory_update_warning", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151"}, {"caller_nid": "pl_inventory_update_warning", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L161"}, {"caller_nid": "pl_inventory_update_warning", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L167"}, {"caller_nid": "pl_inventory_update_warning", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L170"}, {"caller_nid": "pl_inventory_update_warning", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L171"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L191"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L191"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L192"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L209"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_get_summary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L230"}, {"caller_nid": "pl_inventory_get_summary", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L230"}, {"caller_nid": "pl_inventory_get_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L232"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L253"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L254"}, {"caller_nid": "pl_inventory_get_summary", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L263"}, {"caller_nid": "pl_inventory_get_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L265"}, {"caller_nid": "pl_inventory_get_summary", "callee": "InventorySummaryItem", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L265"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L288"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L288"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L289"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L297"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L297"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L307"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L307"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L310"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L310"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L320"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L326"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L327"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L339"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L340"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L344"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L359"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L359"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L369"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L370"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L382"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L390"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L390"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L400"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L401"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L413"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L421"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L421"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L431"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L432"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L444"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L447"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4b162582800fb92ea98e92e3a45de4d7d00b36e2714cbcfc872828312924b8f4.json b/backend/graphify-out/cache/ast/4b162582800fb92ea98e92e3a45de4d7d00b36e2714cbcfc872828312924b8f4.json new file mode 100644 index 000000000..bfbe56288 --- /dev/null +++ b/backend/graphify-out/cache/ast/4b162582800fb92ea98e92e3a45de4d7d00b36e2714cbcfc872828312924b8f4.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_freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L28"}, {"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": "L37"}, {"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": "L51"}, {"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": "L55"}, {"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": "L70"}, {"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": "L79"}, {"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": "L96"}, {"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": "L104"}], "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": "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": "L28", "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": "L28", "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": "L37", "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": "L37", "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": "L51", "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": "L51", "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": "L55", "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": "L55", "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": "L70", "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": "L70", "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": "L79", "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": "L79", "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": "L96", "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": "L96", "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": "L104", "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": "L104", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4df027dd2e84c01b23184a75288a8147864ff81cd6e2af3d6c8dd057346e2a97.json b/backend/graphify-out/cache/ast/4df027dd2e84c01b23184a75288a8147864ff81cd6e2af3d6c8dd057346e2a97.json new file mode 100644 index 000000000..bf6ac0587 --- /dev/null +++ b/backend/graphify-out/cache/ast/4df027dd2e84c01b23184a75288a8147864ff81cd6e2af3d6c8dd057346e2a97.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": "L41"}, {"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": "L45"}, {"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": "L66"}, {"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": "L80"}, {"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": "L116"}, {"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": "L122"}, {"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": "L136"}, {"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": "L172"}, {"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": "L201"}, {"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": "L210"}, {"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": "L218"}, {"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": "L229"}, {"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": "L244"}, {"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": "L251"}, {"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": "L256"}], "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L66", "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": "L66", "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": "L80", "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": "L80", "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": "L116", "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": "L116", "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": "L122", "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": "L122", "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": "L136", "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": "L136", "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": "L172", "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": "L172", "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": "L201", "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": "L201", "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": "L210", "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": "L210", "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": "L218", "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": "L218", "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": "L229", "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": "L229", "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": "L244", "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": "L244", "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": "L251", "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": "L251", "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": "L256", "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": "L256", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/4eb955de0265d684e90acb5a7da969fd78da778e3edb751d0a60ec7ef6a261d1.json b/backend/graphify-out/cache/ast/4eb955de0265d684e90acb5a7da969fd78da778e3edb751d0a60ec7ef6a261d1.json new file mode 100644 index 000000000..c89799f0c --- /dev/null +++ b/backend/graphify-out/cache/ast/4eb955de0265d684e90acb5a7da969fd78da778e3edb751d0a60ec7ef6a261d1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_transportbase", "label": "TransportBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38"}, {"id": "pl_transport_transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43"}, {"id": "pl_transport_transportupdate", "label": "TransportUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L60"}, {"id": "pl_transport_transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L84"}, {"id": "pl_transport_transportwithplans", "label": "TransportWithPlans", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L103"}, {"id": "pl_transport_transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L112"}, {"id": "pl_transport_approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L126"}, {"id": "pl_transport_approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L131"}, {"id": "pl_transport_approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L137"}, {"id": "pl_transport_transportlistquery", "label": "TransportListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156"}, {"id": "pl_transport_transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L168"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_transport_transportbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_transport_transportcreate", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "pl_transport_transportarrange", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_transport_transportupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L60", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L84", "weight": 1.0}, {"source": "pl_transport_transportread", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L84", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportwithplans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L103", "weight": 1.0}, {"source": "pl_transport_transportwithplans", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L103", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L112", "weight": 1.0}, {"source": "pl_transport_transportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L112", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L126", "weight": 1.0}, {"source": "pl_transport_approvalsubmit", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L126", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L131", "weight": 1.0}, {"source": "pl_transport_approvalrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L131", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrecordread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L137", "weight": 1.0}, {"source": "pl_transport_approvalrecordread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_transport_transportlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L168", "weight": 1.0}, {"source": "pl_transport_transportlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L168", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/54938783b34ca99dfc6a2150f329bdd8e07e864bd19ec2f1eee0a9a1f91d9dee.json b/backend/graphify-out/cache/ast/54938783b34ca99dfc6a2150f329bdd8e07e864bd19ec2f1eee0a9a1f91d9dee.json new file mode 100644 index 000000000..af99745ac --- /dev/null +++ b/backend/graphify-out/cache/ast/54938783b34ca99dfc6a2150f329bdd8e07e864bd19ec2f1eee0a9a1f91d9dee.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40"}, {"id": "pl_transport_get_vehicle_info", "label": "_get_vehicle_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64"}, {"id": "pl_transport_list_transports", "label": "list_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91"}, {"id": "transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91"}, {"id": "pl_transport_create_transport", "label": "create_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146"}, {"id": "transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146"}, {"id": "transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146"}, {"id": "pl_transport_arrange_transport", "label": "arrange_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218"}, {"id": "transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218"}, {"id": "pl_transport_get_transport", "label": "get_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364"}, {"id": "pl_transport_qrcoderesponse", "label": "QrCodeResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L379"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_generate_qrcode", "label": "generate_qrcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389"}, {"id": "pl_transport_transport_scan_feedback", "label": "transport_scan_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L422"}, {"id": "transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L422"}, {"id": "pl_transport_submit_approval", "label": "submit_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463"}, {"id": "approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463"}, {"id": "pl_transport_process_approval", "label": "process_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508"}, {"id": "approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508"}, {"id": "approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508"}, {"id": "pl_transport_get_transport_approvals", "label": "get_transport_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L570"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L595"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L25", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_vehicle_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_list_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_create_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L146", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_arrange_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_qrcoderesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L379", "weight": 1.0}, {"source": "pl_transport_qrcoderesponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L379", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_transport_scan_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L422", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "transportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L422", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L422", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "approvalsubmit", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L463", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_process_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrecordread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L508", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L570", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L570", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L570", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L570", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "approvalrecordread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L570", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L595", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L595", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L595", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L595", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L595", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L137", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L153", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_get_vehicle_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L236", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L303", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L304", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L408", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_transport_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L42"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L43"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L48"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L51"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L65"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L65"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L76"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L76"}, {"caller_nid": "pl_transport_list_transports", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"caller_nid": "pl_transport_list_transports", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"caller_nid": "pl_transport_list_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L104"}, {"caller_nid": "pl_transport_list_transports", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L111"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L112"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L113"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L114"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L119"}, {"caller_nid": "pl_transport_list_transports", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_list_transports", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135"}, {"caller_nid": "pl_transport_list_transports", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135"}, {"caller_nid": "pl_transport_list_transports", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135"}, {"caller_nid": "pl_transport_list_transports", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135"}, {"caller_nid": "pl_transport_create_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L151"}, {"caller_nid": "pl_transport_create_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L151"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L156"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L182"}, {"caller_nid": "pl_transport_create_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L188"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L195"}, {"caller_nid": "pl_transport_create_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L198"}, {"caller_nid": "pl_transport_create_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L198"}, {"caller_nid": "pl_transport_create_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L207"}, {"caller_nid": "pl_transport_create_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L208"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L224"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L224"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L227"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L227"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L233"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L239"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L239"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L241"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L244"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L252"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L266"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L268"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L268"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L274"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L274"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L283"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L287"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L305"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L309"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L313"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L333"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L334"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L341"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L353"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L354"}, {"caller_nid": "pl_transport_get_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L369"}, {"caller_nid": "pl_transport_get_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L369"}, {"caller_nid": "pl_transport_get_transport", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L370"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L395"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L395"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L396"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L399"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L399"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L406"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L428"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L428"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L436"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L439"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L446"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L451"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L452"}, {"caller_nid": "pl_transport_submit_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L469"}, {"caller_nid": "pl_transport_submit_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L469"}, {"caller_nid": "pl_transport_submit_approval", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L470"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L473"}, {"caller_nid": "pl_transport_submit_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L479"}, {"caller_nid": "pl_transport_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L479"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L481"}, {"caller_nid": "pl_transport_submit_approval", "callee": "PlTransportApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L483"}, {"caller_nid": "pl_transport_submit_approval", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L484"}, {"caller_nid": "pl_transport_submit_approval", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L494"}, {"caller_nid": "pl_transport_submit_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L497"}, {"caller_nid": "pl_transport_submit_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L498"}, {"caller_nid": "pl_transport_process_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L514"}, {"caller_nid": "pl_transport_process_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L514"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L517"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L517"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L526"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L529"}, {"caller_nid": "pl_transport_process_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L536"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L539"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L539"}, {"caller_nid": "pl_transport_process_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L544"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L544"}, {"caller_nid": "pl_transport_process_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L559"}, {"caller_nid": "pl_transport_process_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L560"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L575"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L575"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L578"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L578"}, {"caller_nid": "pl_transport_get_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L597"}, {"caller_nid": "pl_transport_get_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L597"}, {"caller_nid": "pl_transport_get_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L606"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/5c11d8af9ac7ae043f866a4d6f30b7d91ec56f33f64123eb1cd2615e9a9b77cd.json b/backend/graphify-out/cache/ast/5c11d8af9ac7ae043f866a4d6f30b7d91ec56f33f64123eb1cd2615e9a9b77cd.json new file mode 100644 index 000000000..f070466ab --- /dev/null +++ b/backend/graphify-out/cache/ast/5c11d8af9ac7ae043f866a4d6f30b7d91ec56f33f64123eb1cd2615e9a9b77cd.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_transportbase", "label": "TransportBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L37"}, {"id": "pl_transport_transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L42"}, {"id": "pl_transport_transportupdate", "label": "TransportUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L59"}, {"id": "pl_transport_transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L83"}, {"id": "pl_transport_transportwithplans", "label": "TransportWithPlans", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L102"}, {"id": "pl_transport_transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L111"}, {"id": "pl_transport_approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L125"}, {"id": "pl_transport_approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L130"}, {"id": "pl_transport_approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L136"}, {"id": "pl_transport_transportlistquery", "label": "TransportListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155"}, {"id": "pl_transport_transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L167"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_transport_transportbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L37", "weight": 1.0}, {"source": "pl_transport_transportcreate", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L37", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L42", "weight": 1.0}, {"source": "pl_transport_transportarrange", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L59", "weight": 1.0}, {"source": "pl_transport_transportupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L59", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L83", "weight": 1.0}, {"source": "pl_transport_transportread", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L83", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportwithplans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_transport_transportwithplans", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L102", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L111", "weight": 1.0}, {"source": "pl_transport_transportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L111", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L125", "weight": 1.0}, {"source": "pl_transport_approvalsubmit", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L125", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L130", "weight": 1.0}, {"source": "pl_transport_approvalrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L130", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrecordread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L136", "weight": 1.0}, {"source": "pl_transport_approvalrecordread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L136", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_transport_transportlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L167", "weight": 1.0}, {"source": "pl_transport_transportlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L167", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/609c239c76aeec075d5a61c73f4d82a9a4774f93def5426a5b321625fc94b8d1.json b/backend/graphify-out/cache/ast/609c239c76aeec075d5a61c73f4d82a9a4774f93def5426a5b321625fc94b8d1.json new file mode 100644 index 000000000..4b2ffd4fc --- /dev/null +++ b/backend/graphify-out/cache/ast/609c239c76aeec075d5a61c73f4d82a9a4774f93def5426a5b321625fc94b8d1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "label": "main.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L1"}, {"id": "app_main_lifespan", "label": "lifespan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L35"}, {"id": "fastapi", "label": "FastAPI", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L35"}, {"id": "app_main_error_json", "label": "_error_json()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82"}, {"id": "jsonresponse", "label": "JSONResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82"}, {"id": "app_main_sqlalchemy_exception_handler", "label": "sqlalchemy_exception_handler()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95"}, {"id": "request", "label": "Request", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95"}, {"id": "sqlalchemyerror", "label": "SQLAlchemyError", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95"}, {"id": "app_main_unhandled_exception_handler", "label": "unhandled_exception_handler()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106"}, {"id": "exception", "label": "Exception", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106"}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L129"}, {"id": "app_main_root", "label": "root()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L151"}, {"id": "app_main_health_check", "label": "health_check()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L156"}, {"id": "app_main_rationale_96", "label": "\u6570\u636e\u5e93\u5f02\u5e38\uff1a\u8fd4\u56de JSON \u5e76\u4fdd\u7559 CORS \u5934\uff0c\u907f\u514d\u6d4f\u89c8\u5668\u53ea\u62a5\u8de8\u57df\u9519\u8bef", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L96"}, {"id": "app_main_rationale_107", "label": "\u672a\u6355\u83b7\u5f02\u5e38\uff1a\u7edf\u4e00 JSON 500\uff0c\u786e\u4fdd\u8de8\u57df\u573a\u666f\u4e0b\u4ecd\u6709 Access-Control-Allow-Origin", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L107"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "contextlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi_middleware_cors", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "fastapi_responses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "sqlalchemy_exc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_api_request_log_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_core_api_crypto_middleware", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_bx_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_db_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_models_pl_models", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_api", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_api_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L30", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_api_pl_public_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L31", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_lifespan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L35", "weight": 1.0}, {"source": "app_main_lifespan", "target": "fastapi", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L35", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_error_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82", "weight": 1.0}, {"source": "app_main_error_json", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82", "weight": 1.0}, {"source": "app_main_error_json", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82", "weight": 1.0}, {"source": "app_main_error_json", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82", "weight": 1.0}, {"source": "app_main_error_json", "target": "jsonresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L82", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_sqlalchemy_exception_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "request", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "sqlalchemyerror", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_unhandled_exception_handler", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "request", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "exception", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L106", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_mask_secret", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L129", "weight": 1.0}, {"source": "app_main_mask_secret", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L129", "weight": 1.0}, {"source": "app_main_mask_secret", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L129", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L151", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_main_py", "target": "app_main_health_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L156", "weight": 1.0}, {"source": "app_main_error_json", "target": "jsonresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L83", "weight": 1.0}, {"source": "app_main_sqlalchemy_exception_handler", "target": "app_main_error_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L102", "weight": 1.0}, {"source": "app_main_unhandled_exception_handler", "target": "app_main_error_json", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L113", "weight": 1.0}, {"source": "app_main_rationale_96", "target": "app_main_sqlalchemy_exception_handler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L96", "weight": 1.0}, {"source": "app_main_rationale_107", "target": "app_main_unhandled_exception_handler", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L107", "weight": 1.0}], "raw_calls": [{"caller_nid": "app_main_lifespan", "callee": "ensure_initialized", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L39"}, {"caller_nid": "app_main_lifespan", "callee": "init_scheduled_tasks", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L44"}, {"caller_nid": "app_main_lifespan", "callee": "warning", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L46"}, {"caller_nid": "app_main_lifespan", "callee": "shutdown_scheduler", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L53"}, {"caller_nid": "app_main_error_json", "callee": "timestamp", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L89"}, {"caller_nid": "app_main_error_json", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L89"}, {"caller_nid": "app_main_sqlalchemy_exception_handler", "callee": "exception", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L97"}, {"caller_nid": "app_main_unhandled_exception_handler", "callee": "exception", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py", "source_location": "L108"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/61ada8e58ac2de555102b2a3a5ac99ad1e155509e8359bfea7dcf0d2e46af02a.json b/backend/graphify-out/cache/ast/61ada8e58ac2de555102b2a3a5ac99ad1e155509e8359bfea7dcf0d2e46af02a.json new file mode 100644 index 000000000..ebf115791 --- /dev/null +++ b/backend/graphify-out/cache/ast/61ada8e58ac2de555102b2a3a5ac99ad1e155509e8359bfea7dcf0d2e46af02a.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_pldriver", "label": "PlDriver", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L74"}, {"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": "L100"}, {"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": "L125"}, {"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": "L202"}, {"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": "L249"}, {"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": "L276"}, {"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": "L334"}, {"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": "L353"}, {"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": "L382"}, {"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": "L413"}, {"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": "L433"}, {"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": "L460"}, {"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": "L492"}, {"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": "L521"}, {"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": "L546"}, {"id": "models_pl_models_rationale_101", "label": "\u8f66\u8f86-\u53f8\u673a\u5173\u8054\u8868 pl_vehicle_driver", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L101"}, {"id": "models_pl_models_rationale_203", "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": "L203"}, {"id": "models_pl_models_rationale_250", "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": "L250"}, {"id": "models_pl_models_rationale_335", "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": "L335"}, {"id": "models_pl_models_rationale_354", "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": "L354"}, {"id": "models_pl_models_rationale_383", "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": "L383"}, {"id": "models_pl_models_rationale_414", "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": "L414"}, {"id": "models_pl_models_rationale_434", "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": "L434"}, {"id": "models_pl_models_rationale_493", "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": "L493"}, {"id": "models_pl_models_rationale_522", "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": "L522"}, {"id": "models_pl_models_rationale_547", "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": "L547"}], "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_pldriver", "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_pldriver", "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_plvehicledriver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L100", "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": "L100", "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": "L125", "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": "L125", "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": "L202", "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": "L202", "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": "L249", "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": "L249", "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": "L276", "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": "L276", "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": "L334", "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": "L334", "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": "L353", "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": "L353", "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": "L382", "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": "L382", "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": "L413", "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": "L413", "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": "L433", "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": "L433", "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": "L460", "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": "L460", "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": "L492", "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": "L492", "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": "L521", "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": "L521", "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": "L546", "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": "L546", "weight": 1.0}, {"source": "models_pl_models_rationale_101", "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": "L101", "weight": 1.0}, {"source": "models_pl_models_rationale_203", "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": "L203", "weight": 1.0}, {"source": "models_pl_models_rationale_250", "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": "L250", "weight": 1.0}, {"source": "models_pl_models_rationale_335", "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": "L335", "weight": 1.0}, {"source": "models_pl_models_rationale_354", "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": "L354", "weight": 1.0}, {"source": "models_pl_models_rationale_383", "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": "L383", "weight": 1.0}, {"source": "models_pl_models_rationale_414", "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": "L414", "weight": 1.0}, {"source": "models_pl_models_rationale_434", "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": "L434", "weight": 1.0}, {"source": "models_pl_models_rationale_493", "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": "L493", "weight": 1.0}, {"source": "models_pl_models_rationale_522", "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": "L522", "weight": 1.0}, {"source": "models_pl_models_rationale_547", "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": "L547", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/6670945765513bbfceb4963ed2badaf7938afa410908b38e8883ab391c2c0a58.json b/backend/graphify-out/cache/ast/6670945765513bbfceb4963ed2badaf7938afa410908b38e8883ab391c2c0a58.json new file mode 100644 index 000000000..8e4aba37a --- /dev/null +++ b/backend/graphify-out/cache/ast/6670945765513bbfceb4963ed2badaf7938afa410908b38e8883ab391c2c0a58.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_inventoryread", "label": "InventoryRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_inventory_inventorytransactionread", "label": "InventoryTransactionRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36"}, {"id": "pl_inventory_inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57"}, {"id": "pl_inventory_inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72"}, {"id": "pl_inventory_inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78"}, {"id": "pl_inventory_documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90"}, {"id": "pl_inventory_documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L104"}, {"id": "pl_inventory_inventoryledgerquery", "label": "InventoryLedgerQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L115"}, {"id": "pl_inventory_inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L122"}, {"id": "pl_inventory_inventorytransactionquery", "label": "InventoryTransactionQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L127"}, {"id": "pl_inventory_inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L137"}, {"id": "pl_inventory_inventorysummaryquery", "label": "InventorySummaryQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L142"}, {"id": "pl_inventory_inventorysummaryitem", "label": "InventorySummaryItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L150"}, {"id": "pl_inventory_inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L159"}, {"id": "pl_inventory_transportstatsquery", "label": "TransportStatsQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163"}, {"id": "pl_inventory_transportstatsitem", "label": "TransportStatsItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L170"}, {"id": "pl_inventory_transportstatsresponse", "label": "TransportStatsResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L177"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_inventory_inventoryread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_inventory_inventorywarningread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "pl_inventory_inventorywarningupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningthreshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "pl_inventory_inventorywarningthreshold", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_documentreminderread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_inventory_documentreminderread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_documentreminderupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L104", "weight": 1.0}, {"source": "pl_inventory_documentreminderupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L104", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryledgerquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L115", "weight": 1.0}, {"source": "pl_inventory_inventoryledgerquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L115", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryledgerresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L122", "weight": 1.0}, {"source": "pl_inventory_inventoryledgerresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L122", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L137", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L137", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L150", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L150", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L159", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L159", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163", "weight": 1.0}, {"source": "pl_inventory_transportstatsquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L170", "weight": 1.0}, {"source": "pl_inventory_transportstatsitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L170", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L177", "weight": 1.0}, {"source": "pl_inventory_transportstatsresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L177", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/672b36e74dde86e40747d4b531c242c945213aba17f8e29824e0e0a92e69e4bb.json b/backend/graphify-out/cache/ast/672b36e74dde86e40747d4b531c242c945213aba17f8e29824e0e0a92e69e4bb.json new file mode 100644 index 000000000..901dda5c8 --- /dev/null +++ b/backend/graphify-out/cache/ast/672b36e74dde86e40747d4b531c242c945213aba17f8e29824e0e0a92e69e4bb.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}, {"id": "pl_init_carrierbase", "label": "CarrierBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L150"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_init_carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L158"}, {"id": "pl_init_carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L162"}, {"id": "pl_init_carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L171"}, {"id": "pl_init_vehiclebase", "label": "VehicleBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L189"}, {"id": "pl_init_vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L201"}, {"id": "pl_init_vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L205"}, {"id": "pl_init_vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L218"}, {"id": "pl_init_driverbase", "label": "DriverBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L236"}, {"id": "pl_init_drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L249"}, {"id": "pl_init_driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L253"}, {"id": "pl_init_driverread", "label": "DriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L267"}, {"id": "pl_init_vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L285"}, {"id": "pl_init_vehicledriverread", "label": "VehicleDriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L292"}, {"id": "pl_init_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - Pydantic Schema", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_freight", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carrierbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L150", "weight": 1.0}, {"source": "pl_init_carrierbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L150", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carriercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L158", "weight": 1.0}, {"source": "pl_init_carriercreate", "target": "pl_init_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L158", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carrierupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L162", "weight": 1.0}, {"source": "pl_init_carrierupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L162", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_carrierread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_init_carrierread", "target": "pl_init_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L171", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehiclebase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L189", "weight": 1.0}, {"source": "pl_init_vehiclebase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L189", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehiclecreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L201", "weight": 1.0}, {"source": "pl_init_vehiclecreate", "target": "pl_init_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L201", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicleupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L205", "weight": 1.0}, {"source": "pl_init_vehicleupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L205", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicleread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_init_vehicleread", "target": "pl_init_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L218", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_driverbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L236", "weight": 1.0}, {"source": "pl_init_driverbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L236", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_drivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L249", "weight": 1.0}, {"source": "pl_init_drivercreate", "target": "pl_init_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L249", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_driverupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L253", "weight": 1.0}, {"source": "pl_init_driverupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L253", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_driverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_init_driverread", "target": "pl_init_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L267", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicledrivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L285", "weight": 1.0}, {"source": "pl_init_vehicledrivercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L285", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "pl_init_vehicledriverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L292", "weight": 1.0}, {"source": "pl_init_vehicledriverread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L292", "weight": 1.0}, {"source": "pl_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/6a842b9ec4704427cee35ea04d867d866e18850a4ad1f6502220c2edd2217263.json b/backend/graphify-out/cache/ast/6a842b9ec4704427cee35ea04d867d866e18850a4ad1f6502220c2edd2217263.json new file mode 100644 index 000000000..1fa66c4f8 --- /dev/null +++ b/backend/graphify-out/cache/ast/6a842b9ec4704427cee35ea04d867d866e18850a4ad1f6502220c2edd2217263.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "label": "public_transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L1"}, {"id": "pl_public_transport_get_transport_by_token", "label": "_get_transport_by_token()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "pl_public_transport_parse_feedback_images", "label": "_parse_feedback_images()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38"}, {"id": "pl_public_transport_format_plan_date", "label": "_format_plan_date()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L50"}, {"id": "pl_public_transport_build_public_page", "label": "_build_public_page()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60"}, {"id": "publictransportpageread", "label": "PublicTransportPageRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60"}, {"id": "pl_public_transport_get_public_transport", "label": "get_public_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L119"}, {"id": "pl_public_transport_save_public_feedback", "label": "save_public_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L126"}, {"id": "publictransportfeedback", "label": "PublicTransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L126"}, {"id": "pl_public_transport_format_file_size", "label": "_format_file_size()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L147"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L147"}, {"id": "pl_public_transport_upload_public_attachment", "label": "upload_public_attachment()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156"}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_storage", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_attachment_biz", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_response", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_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/public_transport.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_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/public_transport.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_get_transport_by_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_parse_feedback_images", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_public_transport_parse_feedback_images", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_public_transport_parse_feedback_images", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_format_plan_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L50", "weight": 1.0}, {"source": "pl_public_transport_format_plan_date", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L50", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_build_public_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "publictransportpageread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_get_public_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L119", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L119", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L119", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_save_public_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L126", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L126", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "publictransportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L126", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L126", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_format_file_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L147", "weight": 1.0}, {"source": "pl_public_transport_format_file_size", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L147", "weight": 1.0}, {"source": "pl_public_transport_format_file_size", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_upload_public_attachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "publictransportpageread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L96", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_format_plan_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L98", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_parse_feedback_images", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L109", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L120", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L131", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L132", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L163", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_format_file_size", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L198", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L26"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L26"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "loads", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L42"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L47"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L47"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L47"}, {"caller_nid": "pl_public_transport_format_plan_date", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L54"}, {"caller_nid": "pl_public_transport_format_plan_date", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L56"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L62"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L62"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L62"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L67"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L74"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L74"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L80"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L80"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L82"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L82"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "PublicTransportPlanProductRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L87"}, {"caller_nid": "pl_public_transport_get_public_transport", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122"}, {"caller_nid": "pl_public_transport_get_public_transport", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L134"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L137"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L142"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L143"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L144"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L165"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L167"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "resolve_upload_folder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L170"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "read", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L171"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "upload_file", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L172"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L173"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L174"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "create_oss", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L179"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "lstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L184"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "splitext", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L184"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L191"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L192"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L203"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L204"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/6b37319ea54f4fbc4928777d5e9a424d96df00eae4e10ac0fa01c3bdcf846a36.json b/backend/graphify-out/cache/ast/6b37319ea54f4fbc4928777d5e9a424d96df00eae4e10ac0fa01c3bdcf846a36.json new file mode 100644 index 000000000..27ffe5acc --- /dev/null +++ b/backend/graphify-out/cache/ast/6b37319ea54f4fbc4928777d5e9a424d96df00eae4e10ac0fa01c3bdcf846a36.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}, {"id": "pl_init_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - Pydantic Schema", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L41", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_freight", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L54", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L66", "weight": 1.0}, {"source": "pl_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/737c51c0f87a67b6a5b07374da0c6b55b02fd68a798f0538ad9cb6c448e3c4e7.json b/backend/graphify-out/cache/ast/737c51c0f87a67b6a5b07374da0c6b55b02fd68a798f0538ad9cb6c448e3c4e7.json new file mode 100644 index 000000000..e444b8024 --- /dev/null +++ b/backend/graphify-out/cache/ast/737c51c0f87a67b6a5b07374da0c6b55b02fd68a798f0538ad9cb6c448e3c4e7.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "label": "pl_dibang_bridge_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L1"}, {"id": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "label": "DibangInventoryLinkResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L27"}, {"id": "services_pl_dibang_bridge_service_resolve_partner_company", "label": "resolve_partner_company()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36"}, {"id": "services_pl_dibang_bridge_service_month_range", "label": "_month_range()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44"}, {"id": "services_pl_dibang_bridge_service_plan_type_to_business_type", "label": "_plan_type_to_business_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51"}, {"id": "services_pl_dibang_bridge_service_product_quantity", "label": "_product_quantity()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59"}, {"id": "services_pl_dibang_bridge_service_generate_batch_no", "label": "_generate_batch_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66"}, {"id": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "label": "_ensure_vehicle_exists()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86"}, {"id": "services_pl_dibang_bridge_service_find_monthly_db_plan", "label": "find_monthly_db_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112"}, {"id": "dbpurchaseplan", "label": "DbPurchasePlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112"}, {"id": "services_pl_dibang_bridge_service_create_db_plan", "label": "_create_db_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141"}, {"id": "services_pl_dibang_bridge_service_create_db_inventory", "label": "_create_db_inventory()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182"}, {"id": "dbinboundoutbound", "label": "DbInboundOutbound", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182"}, {"id": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "label": "_inventory_has_weighing_slip()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L225"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L225"}, {"id": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "label": "revoke_regeneratable_dibang_for_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L238"}, {"id": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "label": "sync_dibang_for_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312"}, {"id": "services_pl_dibang_bridge_service_rationale_245", "label": "\u518d\u6b21\u52fe\u9009\u5730\u78c5\u5b89\u6392\u524d\uff1a\u8f6f\u5220\u672c\u8fd0\u8f93\u5355\u6b64\u524d\u751f\u6210\u7684\u3001\u4ecd\u53ef\u4f5c\u5e9f\u7684\u51fa\u5165\u5e93\u5355\u53ca\u5173\u8054\u3002 - \u4e0d\u5220\u9664\u5730\u78c5\u6708\u8ba1\u5212\uff08\u53ef\u80fd\u88ab\u5176\u4ed6\u4e1a\u52a1\u590d\u7528\uff09 - \u82e5\u51fa\u5165\u5e93\u5355\u5df2\u5b8c\u6210\u7684/\u5df2", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L245"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "calendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_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_dibang_bridge_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_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_dibang_bridge_service.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_inventory_id", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_mappers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_plan_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_product_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_resolve_partner_company", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_resolve_partner_company", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_resolve_partner_company", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_resolve_partner_company", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_month_range", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_month_range", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_month_range", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_month_range", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_plan_type_to_business_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_plan_type_to_business_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_plan_type_to_business_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_product_quantity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_product_quantity", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_product_quantity", "target": "float", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_generate_batch_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_generate_batch_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_generate_batch_no", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_generate_batch_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_find_monthly_db_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "dbpurchaseplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_create_db_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "dbpurchaseplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_create_db_inventory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "dbpurchaseplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "dbinboundoutbound", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L225", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L225", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L238", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L238", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L238", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L238", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L238", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L312", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "services_pl_dibang_bridge_service_month_range", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L121", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "dbpurchaseplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L154", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "services_pl_dibang_bridge_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L162", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L195", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "dbinboundoutbound", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L199", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "services_pl_dibang_bridge_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L205", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "services_pl_dibang_bridge_service_generate_batch_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L207", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "target": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L283", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_plan_type_to_business_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L322", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_resolve_partner_company", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L326", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L332", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_month_range", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L336", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L341", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_find_monthly_db_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L354", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_create_db_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L364", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_create_db_inventory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L377", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L405", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_rationale_245", "target": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L245", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_dibang_bridge_service_resolve_partner_company", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L38"}, {"caller_nid": "services_pl_dibang_bridge_service_resolve_partner_company", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L40"}, {"caller_nid": "services_pl_dibang_bridge_service_month_range", "callee": "replace", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L45"}, {"caller_nid": "services_pl_dibang_bridge_service_month_range", "callee": "monthrange", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L46"}, {"caller_nid": "services_pl_dibang_bridge_service_month_range", "callee": "replace", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L47"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L68"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L72"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "compile", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L77"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "match", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L80"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "group", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L82"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L87"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L91"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L91"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L101"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "DbVehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L102"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L103"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L109"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L122"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L123"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L125"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "resolve_crm_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L153"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L155"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "generate_plan_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L157"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L162"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L163"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "default_execution_status", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L166"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "apply_product_snapshot_to_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L176"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L177"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L178"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "resolve_crm_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L197"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "next_inbound_outbound_id", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L200"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L205"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L206"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L208"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "apply_product_snapshot_to_inventory", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L215"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L216"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L217"}, {"caller_nid": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L227"}, {"caller_nid": "services_pl_dibang_bridge_service_inventory_has_weighing_slip", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L227"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L251"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L265"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L265"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L279"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L281"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L284"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L287"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L289"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L295"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L295"}, {"caller_nid": "services_pl_dibang_bridge_service_revoke_regeneratable_dibang_for_transport", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L309"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L328"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "parse_date_str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L334"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L335"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L338"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L352"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "PlTransportDbLink", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L390"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L391"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L402"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L404"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/776ba393e395c30a69f68a2a6142985483ae128389aff6ba926056bf65798d9c.json b/backend/graphify-out/cache/ast/776ba393e395c30a69f68a2a6142985483ae128389aff6ba926056bf65798d9c.json new file mode 100644 index 000000000..c21ba3823 --- /dev/null +++ b/backend/graphify-out/cache/ast/776ba393e395c30a69f68a2a6142985483ae128389aff6ba926056bf65798d9c.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": "L47"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L47"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L47"}, {"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": "L72"}, {"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": "L77"}, {"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": "L86"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L86"}, {"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": "L107"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L107"}, {"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": "L171"}, {"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": "L200"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L200"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L200"}, {"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": "L279"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L279"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L279"}, {"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": "L381"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L381"}, {"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": "L490"}, {"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": "L519"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L519"}, {"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": "L581"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L581"}, {"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": "L617"}, {"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": "L641"}, {"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": "L666"}, {"id": "pl_plan_rationale_48", "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": "L48"}, {"id": "pl_plan_rationale_284", "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": "L284"}, {"id": "pl_plan_rationale_587", "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": "L587"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "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": "L22", "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": "L23", "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": "L34", "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": "L47", "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": "L47", "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": "L47", "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": "L72", "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": "L72", "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": "L72", "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": "L72", "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": "L77", "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": "L77", "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": "L77", "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": "L86", "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": "L86", "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": "L86", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L107", "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": "L171", "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": "L171", "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": "L171", "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": "L171", "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": "L200", "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": "L200", "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": "L200", "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": "L200", "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": "L200", "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": "L279", "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": "L279", "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": "L279", "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": "L279", "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": "L279", "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": "L381", "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": "L381", "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": "L381", "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": "L381", "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": "L381", "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": "L490", "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": "L490", "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": "L490", "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": "L490", "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": "L490", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L581", "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": "L581", "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": "L581", "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": "L581", "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": "L581", "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": "L581", "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": "L617", "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": "L617", "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": "L617", "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": "L617", "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": "L617", "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": "L641", "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": "L641", "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": "L641", "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": "L641", "weight": 1.0}, {"source": "pl_plan_archive_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": "L641", "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": "L666", "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": "L666", "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": "L666", "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": "L666", "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": "L697", "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": "L697", "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": "L697", "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": "L697", "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": "L697", "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": "L167", "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": "L208", "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": "L213", "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": "L215", "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": "L287", "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": "L289", "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": "L292", "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": "L401", "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": "L404", "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": "L406", "weight": 1.0}, {"source": "pl_plan_rationale_48", "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": "L48", "weight": 1.0}, {"source": "pl_plan_rationale_284", "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": "L284", "weight": 1.0}, {"source": "pl_plan_rationale_587", "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": "L587", "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": "L49"}, {"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": "L50"}, {"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": "L54"}, {"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": "L54"}, {"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": "L54"}, {"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": "L56"}, {"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": "L59"}, {"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": "L74"}, {"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": "L83"}, {"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": "L88"}, {"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": "L122"}, {"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": "L122"}, {"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": "L123"}, {"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": "L130"}, {"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": "L131"}, {"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": "L132"}, {"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": "L132"}, {"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": "L132"}, {"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": "L137"}, {"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": "L152"}, {"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": "L152"}, {"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": "L152"}, {"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": "L161"}, {"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": "L165"}, {"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": "L165"}, {"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": "L165"}, {"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": "L165"}, {"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": "L176"}, {"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": "L176"}, {"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": "L177"}, {"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": "L177"}, {"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": "L177"}, {"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": "L182"}, {"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": "L182"}, {"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": "L182"}, {"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": "L186"}, {"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": "L205"}, {"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": "L205"}, {"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": "L216"}, {"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": "L255"}, {"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": "L260"}, {"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": "L269"}, {"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": "L271"}, {"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": "L273"}, {"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": "L274"}, {"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": "L285"}, {"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": "L286"}, {"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": "L286"}, {"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": "L293"}, {"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": "L326"}, {"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": "L333"}, {"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": "L334"}, {"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": "L338"}, {"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": "L345"}, {"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": "L346"}, {"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": "L355"}, {"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": "L356"}, {"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": "L359"}, {"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": "L367"}, {"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": "L368"}, {"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": "L370"}, {"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": "L389"}, {"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": "L389"}, {"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": "L393"}, {"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": "L393"}, {"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": "L398"}, {"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": "L407"}, {"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": "L439"}, {"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": "L443"}, {"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": "L453"}, {"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": "L460"}, {"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": "L461"}, {"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": "L477"}, {"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": "L479"}, {"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": "L480"}, {"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": "L495"}, {"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": "L495"}, {"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": "L496"}, {"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": "L499"}, {"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": "L499"}, {"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": "L508"}, {"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": "L525"}, {"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": "L525"}, {"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": "L526"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L530"}, {"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": "L533"}, {"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": "L534"}, {"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": "L540"}, {"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": "L540"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "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_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L548"}, {"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": "L572"}, {"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": "L575"}, {"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": "L576"}, {"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": "L588"}, {"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": "L588"}, {"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": "L589"}, {"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": "L596"}, {"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": "L598"}, {"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": "L598"}, {"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": "L606"}, {"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": "L622"}, {"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": "L622"}, {"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": "L623"}, {"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": "L626"}, {"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": "L630"}, {"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": "L631"}, {"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": "L646"}, {"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": "L646"}, {"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": "L647"}, {"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": "L650"}, {"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": "L655"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L656"}, {"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": "L671"}, {"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": "L671"}, {"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": "L672"}, {"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": "L677"}, {"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": "L677"}, {"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": "L683"}, {"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": "L683"}, {"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": "L689"}, {"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": "L699"}, {"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": "L699"}, {"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": "L708"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/78e9701e92565fe1a8420647aeccf055b72e5e5cb405ad88e3b835efeeef9df3.json b/backend/graphify-out/cache/ast/78e9701e92565fe1a8420647aeccf055b72e5e5cb405ad88e3b835efeeef9df3.json new file mode 100644 index 000000000..8732d4c03 --- /dev/null +++ b/backend/graphify-out/cache/ast/78e9701e92565fe1a8420647aeccf055b72e5e5cb405ad88e3b835efeeef9df3.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": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L34"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L34"}, {"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": "L59"}, {"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": "L68"}, {"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": "L77"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L77"}, {"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": "L98"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"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": "L167"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L167"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L167"}, {"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": "L259"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L259"}, {"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": "L361"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L361"}, {"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": "L390"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L390"}, {"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": "L457"}, {"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": "L481"}, {"id": "pl_plan_rationale_35", "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": "L35"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L20", "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": "L21", "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": "L34", "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": "L34", "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": "L34", "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": "L59", "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": "L59", "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": "L59", "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": "L59", "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": "L68", "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": "L68", "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": "L68", "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": "L77", "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": "L77", "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": "L77", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L167", "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": "L167", "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": "L167", "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": "L167", "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": "L167", "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": "L259", "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": "L259", "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": "L259", "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": "L259", "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": "L259", "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": "L361", "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": "L361", "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": "L361", "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": "L361", "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": "L361", "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": "L390", "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": "L390", "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": "L390", "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": "L390", "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": "L390", "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": "L390", "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": "L457", "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": "L457", "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": "L457", "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": "L457", "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": "L457", "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": "L481", "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": "L481", "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": "L481", "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": "L481", "weight": 1.0}, {"source": "pl_plan_archive_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": "L481", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L158", "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": "L175", "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": "L180", "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": "L182", "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": "L279", "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": "L282", "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": "L284", "weight": 1.0}, {"source": "pl_plan_rationale_35", "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": "L35", "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": "L36"}, {"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": "L37"}, {"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": "L41"}, {"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": "L41"}, {"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": "L41"}, {"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": "L43"}, {"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": "L46"}, {"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": "L74"}, {"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": "L79"}, {"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": "L113"}, {"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": "L113"}, {"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": "L114"}, {"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": "L121"}, {"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": "L122"}, {"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": "L123"}, {"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": "L123"}, {"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": "L123"}, {"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": "L128"}, {"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": "L143"}, {"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": "L143"}, {"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": "L143"}, {"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": "L152"}, {"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": "L156"}, {"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": "L156"}, {"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": "L156"}, {"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": "L156"}, {"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": "L172"}, {"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": "L172"}, {"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": "L183"}, {"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": "L216"}, {"caller_nid": "pl_plan_create_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L221"}, {"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": "L222"}, {"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": "L246"}, {"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": "L248"}, {"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": "L249"}, {"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": "L267"}, {"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": "L267"}, {"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": "L271"}, {"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": "L271"}, {"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": "L276"}, {"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": "L285"}, {"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": "L317"}, {"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": "L321"}, {"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": "L331"}, {"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": "L332"}, {"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": "L348"}, {"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": "L350"}, {"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": "L351"}, {"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": "L366"}, {"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": "L366"}, {"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": "L367"}, {"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": "L370"}, {"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": "L370"}, {"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": "L379"}, {"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": "L396"}, {"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": "L396"}, {"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": "L397"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L401"}, {"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": "L404"}, {"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": "L405"}, {"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": "L411"}, {"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": "L411"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L418"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L419"}, {"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": "L443"}, {"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": "L446"}, {"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": "L447"}, {"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": "L462"}, {"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": "L462"}, {"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": "L463"}, {"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": "L466"}, {"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": "L470"}, {"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": "L471"}, {"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": "L486"}, {"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": "L486"}, {"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": "L487"}, {"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": "L490"}, {"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": "L495"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L496"}, {"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": "L507"}, {"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": "L507"}, {"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": "L516"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/7faeeb0044750cb883da23519822ae8723f177e3dcec8cbf50fd5d31e380daa6.json b/backend/graphify-out/cache/ast/7faeeb0044750cb883da23519822ae8723f177e3dcec8cbf50fd5d31e380daa6.json new file mode 100644 index 000000000..9f4b5f453 --- /dev/null +++ b/backend/graphify-out/cache/ast/7faeeb0044750cb883da23519822ae8723f177e3dcec8cbf50fd5d31e380daa6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"id": "pl_transport_get_vehicle_info", "label": "_get_vehicle_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L69"}, {"id": "pl_transport_ensure_driver_access_token", "label": "_ensure_driver_access_token()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "pl_transport_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L98"}, {"id": "pl_transport_build_arrange_result", "label": "_build_arrange_result()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"id": "transportinventorylinkread", "label": "TransportInventoryLinkRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"id": "transportarrangeresult", "label": "TransportArrangeResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"id": "pl_transport_list_transports", "label": "list_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121"}, {"id": "transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121"}, {"id": "pl_transport_create_transport", "label": "create_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176"}, {"id": "transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176"}, {"id": "transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176"}, {"id": "pl_transport_arrange_transport", "label": "arrange_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248"}, {"id": "transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248"}, {"id": "pl_transport_get_transport", "label": "get_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L425"}, {"id": "pl_transport_qrcoderesponse", "label": "QrCodeResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L440"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_generate_qrcode", "label": "generate_qrcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450"}, {"id": "pl_transport_transport_scan_feedback", "label": "transport_scan_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L483"}, {"id": "transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L483"}, {"id": "pl_transport_submit_approval", "label": "submit_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524"}, {"id": "approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524"}, {"id": "pl_transport_process_approval", "label": "process_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569"}, {"id": "approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569"}, {"id": "approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569"}, {"id": "pl_transport_get_transport_approvals", "label": "get_transport_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L631"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "secrets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_vehicle_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L69", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L69", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_ensure_driver_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_ensure_driver_access_token", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_ensure_driver_access_token", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_build_driver_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L98", "weight": 1.0}, {"source": "pl_transport_build_driver_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L98", "weight": 1.0}, {"source": "pl_transport_build_driver_url", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L98", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_build_arrange_result", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "transportinventorylinkread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "transportarrangeresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_list_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_create_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_arrange_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrangeresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L248", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L425", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L425", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L425", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L425", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L425", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_qrcoderesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L440", "weight": 1.0}, {"source": "pl_transport_qrcoderesponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L440", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_transport_scan_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L483", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "transportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L483", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L483", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "approvalsubmit", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L524", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_process_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrecordread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L569", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L631", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L631", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L631", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L631", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "approvalrecordread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L631", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L656", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L656", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L656", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L656", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L656", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "pl_transport_build_driver_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L110", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L167", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L183", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L185", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_get_vehicle_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L266", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L333", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L334", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_ensure_driver_access_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L383", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportinventorylinkread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L400", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_build_arrange_result", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L416", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L469", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_transport_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L47"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L48"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L51"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L51"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L51"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L53"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L56"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L81"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L81"}, {"caller_nid": "pl_transport_ensure_driver_access_token", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L91"}, {"caller_nid": "pl_transport_ensure_driver_access_token", "callee": "token_urlsafe", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L93"}, {"caller_nid": "pl_transport_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L99"}, {"caller_nid": "pl_transport_build_arrange_result", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L108"}, {"caller_nid": "pl_transport_list_transports", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_list_transports", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_list_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L141"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L142"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L143"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L149"}, {"caller_nid": "pl_transport_list_transports", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L163"}, {"caller_nid": "pl_transport_list_transports", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L165"}, {"caller_nid": "pl_transport_list_transports", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L165"}, {"caller_nid": "pl_transport_list_transports", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L165"}, {"caller_nid": "pl_transport_list_transports", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L165"}, {"caller_nid": "pl_transport_create_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L181"}, {"caller_nid": "pl_transport_create_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L181"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L186"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L212"}, {"caller_nid": "pl_transport_create_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L218"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L225"}, {"caller_nid": "pl_transport_create_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L228"}, {"caller_nid": "pl_transport_create_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L228"}, {"caller_nid": "pl_transport_create_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L237"}, {"caller_nid": "pl_transport_create_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L238"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L254"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L254"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L257"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L257"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L263"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L269"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L269"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L271"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L274"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L282"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L296"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L298"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L298"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L304"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L304"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L313"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L317"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L335"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L339"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L343"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L361"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L363"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L371"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L388"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "sync_dibang_for_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L390"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L411"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L412"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L414"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L415"}, {"caller_nid": "pl_transport_get_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430"}, {"caller_nid": "pl_transport_get_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430"}, {"caller_nid": "pl_transport_get_transport", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L456"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L456"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L457"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L460"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L460"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L467"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L489"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L489"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L497"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L500"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L507"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L512"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L513"}, {"caller_nid": "pl_transport_submit_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L530"}, {"caller_nid": "pl_transport_submit_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L530"}, {"caller_nid": "pl_transport_submit_approval", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L531"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L534"}, {"caller_nid": "pl_transport_submit_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540"}, {"caller_nid": "pl_transport_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L542"}, {"caller_nid": "pl_transport_submit_approval", "callee": "PlTransportApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L544"}, {"caller_nid": "pl_transport_submit_approval", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L545"}, {"caller_nid": "pl_transport_submit_approval", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L555"}, {"caller_nid": "pl_transport_submit_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L558"}, {"caller_nid": "pl_transport_submit_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L559"}, {"caller_nid": "pl_transport_process_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L575"}, {"caller_nid": "pl_transport_process_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L575"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L578"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L578"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L587"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590"}, {"caller_nid": "pl_transport_process_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L597"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L600"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L600"}, {"caller_nid": "pl_transport_process_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L605"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L605"}, {"caller_nid": "pl_transport_process_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L620"}, {"caller_nid": "pl_transport_process_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L621"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L636"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L636"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L639"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L639"}, {"caller_nid": "pl_transport_get_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L658"}, {"caller_nid": "pl_transport_get_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L658"}, {"caller_nid": "pl_transport_get_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L667"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/820ada4853d96cff6a56bd1a78a565c2b2fb6f550659ed7230aa4ddeeba00268.json b/backend/graphify-out/cache/ast/820ada4853d96cff6a56bd1a78a565c2b2fb6f550659ed7230aa4ddeeba00268.json new file mode 100644 index 000000000..d25224975 --- /dev/null +++ b/backend/graphify-out/cache/ast/820ada4853d96cff6a56bd1a78a565c2b2fb6f550659ed7230aa4ddeeba00268.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_reimburseservice", "label": "ReimburseService", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37"}, {"id": "bx_reimburse_reimburseservice_tenant_no", "label": "._tenant_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39"}, {"id": "bx_reimburse_reimburseservice_get_by_id", "label": ".get_by_id()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43"}, {"id": "bxreimburseapply", "label": "BxReimburseApply", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43"}, {"id": "bx_reimburse_reimburseservice_get_paged", "label": ".get_paged()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47"}, {"id": "bx_reimburse_reimburseservice_soft_delete", "label": ".soft_delete()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57"}, {"id": "bx_reimburse_reimburseservice_workflow_nodes", "label": "._workflow_nodes()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64"}, {"id": "bxworkflownode", "label": "BxWorkflowNode", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64"}, {"id": "bx_reimburse_reimburseservice_pending_approval", "label": ".pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77"}, {"id": "bx_reimburse_reimburseservice_approved_by_me", "label": ".approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133"}, {"id": "bx_reimburse_reimburseservice_submit", "label": ".submit()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181"}, {"id": "bx_reimburse_reimburseservice_approve", "label": ".approve()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198"}, {"id": "bx_reimburse_reimburseservice_reject", "label": ".reject()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243"}, {"id": "bx_reimburse_reimburseservice_approval_record_dict", "label": "._approval_record_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280"}, {"id": "bxreimburseapproval", "label": "BxReimburseApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280"}, {"id": "bx_reimburse_reimburseservice_latest_approval_per_node", "label": "._latest_approval_per_node()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293"}, {"id": "bx_reimburse_reimburseservice_query_approvals", "label": "._query_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310"}, {"id": "bx_reimburse_reimburseservice_get_approvals", "label": ".get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322"}, {"id": "bx_reimburse_reimburseservice_get_approval_history", "label": ".get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356"}, {"id": "bx_reimburse_reimburseservice_create_with_details", "label": ".create_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L373"}, {"id": "bx_reimburse_reimburseservice_update_with_details", "label": ".update_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437"}, {"id": "bx_reimburse_reimburseservice_get_details", "label": ".get_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497"}, {"id": "bxreimbursedetail", "label": "BxReimburseDetail", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497"}, {"id": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "label": ".out_rows_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510"}, {"id": "reimburseapplyout", "label": "ReimburseApplyOut", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510"}, {"id": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "label": ".out_one_with_attachment_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527"}, {"id": "bx_reimburse_reimburseservice_build_apply_out_with_details", "label": ".build_apply_out_with_details()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L533"}, {"id": "bx_reimburse_reimburseservice_global_status_counts", "label": ".global_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542"}, {"id": "bx_reimburse_reimburseservice_my_apply_stats", "label": ".my_apply_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L552"}, {"id": "bx_reimburse_reimburseservice_pending_approval_stats", "label": ".pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614"}, {"id": "bx_reimburse_reimburseservice_pay", "label": ".pay()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645"}, {"id": "bx_reimburse_reimburseservice_offset", "label": ".offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668"}, {"id": "bx_reimburse_reimburseservice_batch_offset", "label": ".batch_offset()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699"}, {"id": "bx_reimburse_reimburseservice_finance_payment_stats", "label": ".finance_payment_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L754"}, {"id": "bx_reimburse_rationale_296", "label": "\u540c\u4e00\u8282\u70b9\u591a\u6b21\u5ba1\u6279\u65f6\uff0c\u53d6 approval_time \u6700\u65b0\u7684\u4e00\u6761\u4f5c\u4e3a\u5f53\u524d\u8282\u70b9\u72b6\u6001\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L296"}, {"id": "bx_reimburse_rationale_357", "label": "\u8fd4\u56de\u5168\u90e8\u5ba1\u6279\u52a8\u4f5c\uff0c\u6309\u65f6\u95f4\u6b63\u5e8f\u6392\u5217\uff0c\u7528\u4e8e\u5c55\u793a\u5b8c\u6574\u5ba1\u6279\u5386\u53f2\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L357"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_exc", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_approval_cycle", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_attachment", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_services_bx_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L25", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L32", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_bx_reimburse_py", "target": "bx_reimburse_reimburseservice", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L37", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_tenant_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L39", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_by_id", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L43", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_paged", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_paged", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L47", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_soft_delete", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L57", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_workflow_nodes", "target": "bxworkflownode", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L64", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L77", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approved_by_me", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L133", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_submit", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L181", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approve", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L198", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_reject", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L243", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "bxreimburseapproval", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approval_record_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L280", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_latest_approval_per_node", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_query_approvals", "target": "bxreimburseapproval", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L310", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approvals", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L322", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L356", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_create_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L373", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L373", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L373", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L373", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_update_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L437", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_get_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_details", "target": "bxreimbursedetail", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L497", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L510", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L527", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_build_apply_out_with_details", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L533", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L533", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L533", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bxreimburseapply", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L533", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "reimburseapplyout", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L533", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_global_status_counts", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_global_status_counts", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L542", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_my_apply_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L552", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L552", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L552", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_my_apply_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L552", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pending_approval_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L614", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_pay", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "float", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L645", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L668", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_batch_offset", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "float", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bxreimburseapply", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L699", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice", "target": "bx_reimburse_reimburseservice_finance_payment_stats", "relation": "method", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L754", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L754", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_finance_payment_stats", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L754", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_soft_delete", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L58", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pending_approval", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L123", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approved_by_me", "target": "bx_reimburse_reimburseservice_offset", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L182", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L183", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_submit", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L191", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L201", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L202", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L205", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_approve", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L218", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L246", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L247", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L250", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_reject", "target": "bxreimburseapproval", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L258", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L323", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_workflow_nodes", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L329", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_query_approvals", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L332", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L334", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approvals", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L339", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L358", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_get_approval_history", "target": "bx_reimburse_reimburseservice_approval_record_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L370", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L380", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimburseapply", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L392", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_create_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L421", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L445", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L446", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_update_with_details", "target": "bxreimbursedetail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L471", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "target": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L530", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_out_one_with_attachment_counts", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L536", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_build_apply_out_with_details", "target": "bx_reimburse_reimburseservice_get_details", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L537", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L652", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_pay", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L653", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L676", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L677", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_tenant_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L707", "weight": 1.0}, {"source": "bx_reimburse_reimburseservice_batch_offset", "target": "bx_reimburse_reimburseservice_get_by_id", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L708", "weight": 1.0}, {"source": "bx_reimburse_rationale_296", "target": "bx_reimburse_reimburseservice_latest_approval_per_node", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L296", "weight": 1.0}, {"source": "bx_reimburse_rationale_357", "target": "bx_reimburse_reimburseservice_get_approval_history", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L357", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"caller_nid": "bx_reimburse_reimburseservice_tenant_no", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L40"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L66"}, {"caller_nid": "bx_reimburse_reimburseservice_workflow_nodes", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L66"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L88"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L88"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L91"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L107"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L108"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L109"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L114"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L120"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L123"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L123"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L123"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L123"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L125"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L144"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "distinct", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L144"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L144"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L154"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L160"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L161"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L162"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L171"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_reimburseservice_approved_by_me", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L173"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L188"}, {"caller_nid": "bx_reimburse_reimburseservice_submit", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L194"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L219"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L227"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L232"}, {"caller_nid": "bx_reimburse_reimburseservice_approve", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L239"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L259"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L267"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L272"}, {"caller_nid": "bx_reimburse_reimburseservice_reject", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L276"}, {"caller_nid": "bx_reimburse_reimburseservice_latest_approval_per_node", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L299"}, {"caller_nid": "bx_reimburse_reimburseservice_query_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L312"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "filter_current_cycle_approvals", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L333"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L337"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L339"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approvals", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L341"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367"}, {"caller_nid": "bx_reimburse_reimburseservice_get_approval_history", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L367"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L382"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "parse_reimburse_date", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L383"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L383"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L384"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "resolve_reimburse_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L389"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L393"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L398"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L399"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L407"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L409"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L412"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "RuntimeError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L418"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L422"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L427"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L432"}, {"caller_nid": "bx_reimburse_reimburseservice_create_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L433"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "parse_reimburse_date", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L452"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "pop", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L452"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L454"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L461"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L461"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L467"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L472"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L477"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L482"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L483"}, {"caller_nid": "bx_reimburse_reimburseservice_update_with_details", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L493"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L499"}, {"caller_nid": "bx_reimburse_reimburseservice_get_details", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L499"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "count_invoice_attach_by_biz_ids", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L516"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L521"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L522"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L523"}, {"caller_nid": "bx_reimburse_reimburseservice_out_rows_with_attachment_counts", "callee": "model_copy", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L523"}, {"caller_nid": "bx_reimburse_reimburseservice_build_apply_out_with_details", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L538"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "group_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L544"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L544"}, {"caller_nid": "bx_reimburse_reimburseservice_global_status_counts", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L544"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L553"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L556"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L561"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L563"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L570"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L570"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L570"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L570"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L572"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L577"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L577"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L577"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L577"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L584"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L584"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L584"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L585"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L589"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L591"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L591"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L591"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_my_apply_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L597"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "subquery", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L615"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L616"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L616"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L619"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L633"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L633"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L633"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L633"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L634"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L636"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L636"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L636"}, {"caller_nid": "bx_reimburse_reimburseservice_pending_approval_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L636"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L659"}, {"caller_nid": "bx_reimburse_reimburseservice_pay", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L664"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L684"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L685"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L694"}, {"caller_nid": "bx_reimburse_reimburseservice_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L695"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "BxReimburseOffset", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L722"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L723"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L732"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L740"}, {"caller_nid": "bx_reimburse_reimburseservice_batch_offset", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L750"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L755"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L757"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L757"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L757"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L757"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L763"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L765"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L765"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L765"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L765"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L767"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "and_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L769"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L771"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L772"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L776"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "select_from", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L776"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L776"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L776"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "current_month_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L778"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L780"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L780"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L780"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L786"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L786"}, {"caller_nid": "bx_reimburse_reimburseservice_finance_payment_stats", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py", "source_location": "L786"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/828ecf5fc0fb3cc90caf7a9d18bb49fbd84ce1c04abf7c4c8ad79b5a1f17be46.json b/backend/graphify-out/cache/ast/828ecf5fc0fb3cc90caf7a9d18bb49fbd84ce1c04abf7c4c8ad79b5a1f17be46.json new file mode 100644 index 000000000..4c2a1923e --- /dev/null +++ b/backend/graphify-out/cache/ast/828ecf5fc0fb3cc90caf7a9d18bb49fbd84ce1c04abf7c4c8ad79b5a1f17be46.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "label": "bx_codegen.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L1"}, {"id": "utils_bx_codegen_generate_apply_code", "label": "generate_apply_code()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15"}, {"id": "utils_bx_codegen_parse_reimburse_date", "label": "parse_reimburse_date()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40"}, {"id": "utils_bx_codegen_format_reimburse_title", "label": "format_reimburse_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53"}, {"id": "utils_bx_codegen_is_auto_reimburse_title", "label": "is_auto_reimburse_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L57"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L57"}, {"id": "utils_bx_codegen_preview_reimburse_title_seq", "label": "preview_reimburse_title_seq()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L61"}, {"id": "utils_bx_codegen_allocate_reimburse_title_seq", "label": "allocate_reimburse_title_seq()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L76"}, {"id": "utils_bx_codegen_generate_title", "label": "generate_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95"}, {"id": "utils_bx_codegen_resolve_reimburse_title", "label": "resolve_reimburse_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107"}, {"id": "utils_bx_codegen_rationale_1", "label": "\u62a5\u9500\u5355\u53f7/\u6807\u9898\u751f\u6210\uff08\u4ece bx-backend \u8fc1\u79fb\uff0c\u589e\u52a0 tenant_no \u9694\u79bb\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L1"}, {"id": "utils_bx_codegen_rationale_16", "label": "\u751f\u6210\u987a\u5e8f\u5355\u53f7\uff1a{prefix}{YYYYMMDD}{3\u4f4d\u5e8f\u53f7}\u3002 prefix \u793a\u4f8b\uff1aBYJ\uff08\u5907\u7528\u91d1\uff09\u3001BX\uff08\u62a5\u9500\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L16"}, {"id": "utils_bx_codegen_rationale_77", "label": "\u5206\u914d\u540c\u79df\u6237\u3001\u540c\u62a5\u9500\u65e5\u671f\u4e0b\u7684\u6807\u9898\u5e8f\u53f7\uff08MAX+1\uff09\u3002 \u914d\u5408 uk_tenant_reimburse_date_title_seq \u552f\u4e00\u7ea6\u675f\uff0c\u5e76\u53d1\u51b2\u7a81\u65f6\u7531\u4e0a", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L77"}, {"id": "utils_bx_codegen_rationale_101", "label": "\u9884\u89c8\u7528\u6807\u9898\u751f\u6210\uff08\u63d0\u4ea4\u65f6\u4ecd\u4f1a\u5728\u670d\u52a1\u7aef\u91cd\u65b0\u5206\u914d\u5e8f\u53f7\u4ee5\u4fdd\u8bc1\u5e76\u53d1\u5b89\u5168\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L101"}, {"id": "utils_bx_codegen_rationale_114", "label": "\u786e\u5b9a\u6700\u7ec8\u6807\u9898\u4e0e title_seq\u3002 - \u672a\u586b\u6807\u9898\u6216\u4ecd\u4e3a\u81ea\u52a8\u6807\u9898\u683c\u5f0f\u65f6\uff1a\u6309\u62a5\u9500\u65e5\u671f\u91cd\u65b0\u5206\u914d\u5e8f\u53f7\u5e76\u751f\u6210\u6807\u9898\u3002 - \u81ea\u5b9a\u4e49\u6807\u9898\uff1atitle_seq", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L114"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_generate_apply_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15", "weight": 1.0}, {"source": "utils_bx_codegen_generate_apply_code", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_parse_reimburse_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40", "weight": 1.0}, {"source": "utils_bx_codegen_parse_reimburse_date", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40", "weight": 1.0}, {"source": "utils_bx_codegen_parse_reimburse_date", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40", "weight": 1.0}, {"source": "utils_bx_codegen_parse_reimburse_date", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40", "weight": 1.0}, {"source": "utils_bx_codegen_parse_reimburse_date", "target": "date", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L40", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_format_reimburse_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53", "weight": 1.0}, {"source": "utils_bx_codegen_format_reimburse_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53", "weight": 1.0}, {"source": "utils_bx_codegen_format_reimburse_title", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53", "weight": 1.0}, {"source": "utils_bx_codegen_format_reimburse_title", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53", "weight": 1.0}, {"source": "utils_bx_codegen_format_reimburse_title", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L53", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_is_auto_reimburse_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L57", "weight": 1.0}, {"source": "utils_bx_codegen_is_auto_reimburse_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L57", "weight": 1.0}, {"source": "utils_bx_codegen_is_auto_reimburse_title", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_preview_reimburse_title_seq", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L61", "weight": 1.0}, {"source": "utils_bx_codegen_preview_reimburse_title_seq", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L61", "weight": 1.0}, {"source": "utils_bx_codegen_preview_reimburse_title_seq", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L61", "weight": 1.0}, {"source": "utils_bx_codegen_preview_reimburse_title_seq", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L61", "weight": 1.0}, {"source": "utils_bx_codegen_preview_reimburse_title_seq", "target": "int", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_allocate_reimburse_title_seq", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L76", "weight": 1.0}, {"source": "utils_bx_codegen_allocate_reimburse_title_seq", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L76", "weight": 1.0}, {"source": "utils_bx_codegen_allocate_reimburse_title_seq", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L76", "weight": 1.0}, {"source": "utils_bx_codegen_allocate_reimburse_title_seq", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L76", "weight": 1.0}, {"source": "utils_bx_codegen_allocate_reimburse_title_seq", "target": "int", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_generate_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "datetime", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "target": "utils_bx_codegen_resolve_reimburse_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L107", "weight": 1.0}, {"source": "utils_bx_codegen_parse_reimburse_date", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L42", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "utils_bx_codegen_parse_reimburse_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L102", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "utils_bx_codegen_preview_reimburse_title_seq", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L103", "weight": 1.0}, {"source": "utils_bx_codegen_generate_title", "target": "utils_bx_codegen_format_reimburse_title", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L104", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "utils_bx_codegen_is_auto_reimburse_title", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L120", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "utils_bx_codegen_allocate_reimburse_title_seq", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L123", "weight": 1.0}, {"source": "utils_bx_codegen_resolve_reimburse_title", "target": "utils_bx_codegen_format_reimburse_title", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L124", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_utils_bx_codegen_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L1", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_16", "target": "utils_bx_codegen_generate_apply_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L16", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_77", "target": "utils_bx_codegen_allocate_reimburse_title_seq", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L77", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_101", "target": "utils_bx_codegen_generate_title", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L101", "weight": 1.0}, {"source": "utils_bx_codegen_rationale_114", "target": "utils_bx_codegen_resolve_reimburse_title", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L114", "weight": 1.0}], "raw_calls": [{"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L20"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L20"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L23"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "execute", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L23"}, {"caller_nid": "utils_bx_codegen_generate_apply_code", "callee": "text", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L24"}, {"caller_nid": "utils_bx_codegen_parse_reimburse_date", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L42"}, {"caller_nid": "utils_bx_codegen_parse_reimburse_date", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L47"}, {"caller_nid": "utils_bx_codegen_parse_reimburse_date", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L49"}, {"caller_nid": "utils_bx_codegen_parse_reimburse_date", "callee": "strptime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L50"}, {"caller_nid": "utils_bx_codegen_format_reimburse_title", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L54"}, {"caller_nid": "utils_bx_codegen_is_auto_reimburse_title", "callee": "search", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L58"}, {"caller_nid": "utils_bx_codegen_is_auto_reimburse_title", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L58"}, {"caller_nid": "utils_bx_codegen_preview_reimburse_title_seq", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L64"}, {"caller_nid": "utils_bx_codegen_preview_reimburse_title_seq", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L64"}, {"caller_nid": "utils_bx_codegen_preview_reimburse_title_seq", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L69"}, {"caller_nid": "utils_bx_codegen_allocate_reimburse_title_seq", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L82"}, {"caller_nid": "utils_bx_codegen_allocate_reimburse_title_seq", "callee": "with_for_update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L82"}, {"caller_nid": "utils_bx_codegen_allocate_reimburse_title_seq", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L82"}, {"caller_nid": "utils_bx_codegen_allocate_reimburse_title_seq", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L87"}, {"caller_nid": "utils_bx_codegen_resolve_reimburse_title", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py", "source_location": "L119"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/841a584ed7f84ae9d67b3c413a22be972e9620341b9f548d4c8eed742685fa59.json b/backend/graphify-out/cache/ast/841a584ed7f84ae9d67b3c413a22be972e9620341b9f548d4c8eed742685fa59.json new file mode 100644 index 000000000..b7ac86f40 --- /dev/null +++ b/backend/graphify-out/cache/ast/841a584ed7f84ae9d67b3c413a22be972e9620341b9f548d4c8eed742685fa59.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": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"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": "L64"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"id": "freightsettlementlistresponse", "label": "FreightSettlementListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"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": "L97"}, {"id": "freightsettlementcreate", "label": "FreightSettlementCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L97"}, {"id": "freightsettlementread", "label": "FreightSettlementRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L97"}, {"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": "L157"}, {"id": "freightsettlementwithtransports", "label": "FreightSettlementWithTransports", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L157"}, {"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": "L194"}, {"id": "freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L194"}, {"id": "pl_freight_submit_settlement", "label": "submit_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219"}, {"id": "pl_freight_approve_settlement", "label": "approve_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L243"}, {"id": "pl_freight_create_voucher", "label": "create_voucher()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"id": "remittancevouchercreate", "label": "RemittanceVoucherCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"id": "remittancevoucherread", "label": "RemittanceVoucherRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"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": "L296"}, {"id": "plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L321"}], "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": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L4", "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": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L7", "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": "L8", "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": "L10", "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": "L11", "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": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L13", "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": "L14", "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": "L20", "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": "L34", "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": "L34", "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": "L34", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L97", "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": "L97", "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": "L97", "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": "L97", "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": "L97", "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": "L157", "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": "L157", "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": "L157", "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": "L157", "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": "L157", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_submit_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_approve_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_create_voucher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "target": "remittancevouchercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "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": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "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": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "target": "remittancevoucherread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L321", "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": "L321", "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": "L321", "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": "L321", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L321", "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": "L88", "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": "L120", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "plfreightsettlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L122", "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": "L36"}, {"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": "L37"}, {"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": "L40"}, {"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": "L40"}, {"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": "L40"}, {"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": "L42"}, {"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": "L45"}, {"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": "L72"}, {"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": "L72"}, {"caller_nid": "pl_freight_list_settlements", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L73"}, {"caller_nid": "pl_freight_list_settlements", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L82"}, {"caller_nid": "pl_freight_list_settlements", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L84"}, {"caller_nid": "pl_freight_list_settlements", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"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": "L102"}, {"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": "L102"}, {"caller_nid": "pl_freight_create_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L106"}, {"caller_nid": "pl_freight_create_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L108"}, {"caller_nid": "pl_freight_create_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L116"}, {"caller_nid": "pl_freight_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L123"}, {"caller_nid": "pl_freight_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L131"}, {"caller_nid": "pl_freight_create_settlement", "callee": "PlFreightSettlementTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L135"}, {"caller_nid": "pl_freight_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L136"}, {"caller_nid": "pl_freight_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L144"}, {"caller_nid": "pl_freight_create_settlement", "callee": "commit", "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_create_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L147"}, {"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": "L162"}, {"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": "L162"}, {"caller_nid": "pl_freight_get_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L164"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L168"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L178"}, {"caller_nid": "pl_freight_get_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L179"}, {"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": "L183"}, {"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": "L200"}, {"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": "L200"}, {"caller_nid": "pl_freight_update_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L201"}, {"caller_nid": "pl_freight_update_settlement", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L203"}, {"caller_nid": "pl_freight_update_settlement", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L204"}, {"caller_nid": "pl_freight_update_settlement", "callee": "commit", "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_update_settlement", "callee": "refresh", "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_submit_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": "L224"}, {"caller_nid": "pl_freight_submit_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": "L224"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L225"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L228"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L233"}, {"caller_nid": "pl_freight_approve_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": "L248"}, {"caller_nid": "pl_freight_approve_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": "L248"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L249"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L252"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "commit", "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_approve_settlement", "callee": "refresh", "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_create_voucher", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L272"}, {"caller_nid": "pl_freight_create_voucher", "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": "L272"}, {"caller_nid": "pl_freight_create_voucher", "callee": "PlRemittanceVoucher", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L274"}, {"caller_nid": "pl_freight_create_voucher", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L275"}, {"caller_nid": "pl_freight_create_voucher", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L280"}, {"caller_nid": "pl_freight_create_voucher", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L285"}, {"caller_nid": "pl_freight_create_voucher", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L286"}, {"caller_nid": "pl_freight_create_voucher", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L287"}, {"caller_nid": "pl_freight_create_voucher", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L289"}, {"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": "L301"}, {"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": "L301"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L304"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L304"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L310"}, {"caller_nid": "pl_freight_get_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L323"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L323"}, {"caller_nid": "pl_freight_get_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L332"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/84807c0223657bce9a18d9ae5f923a78198ae4ba500dc56994dcf8388bb5de84.json b/backend/graphify-out/cache/ast/84807c0223657bce9a18d9ae5f923a78198ae4ba500dc56994dcf8388bb5de84.json new file mode 100644 index 000000000..d4cdccdfe --- /dev/null +++ b/backend/graphify-out/cache/ast/84807c0223657bce9a18d9ae5f923a78198ae4ba500dc56994dcf8388bb5de84.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": "L23"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23"}, {"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": "L31"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"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": "L41"}, {"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": "L45"}, {"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": "L56"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"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": "L101"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L101"}, {"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": "L146"}, {"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": "L170"}, {"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": "L181"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L181"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L181"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L181"}, {"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": "L288"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L288"}, {"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": "L310"}], "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": "L20", "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": "L23", "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": "L23", "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": "L23", "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": "L23", "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": "L31", "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": "L31", "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": "L31", "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": "L41", "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L45", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L170", "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": "L170", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L288", "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": "L288", "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": "L310", "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": "L310", "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": "L310", "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": "L33", "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": "L42", "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": "L66", "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": "L67", "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": "L69", "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": "L154", "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": "L204", "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": "L206", "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": "L221", "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": "L232", "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": "L237", "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": "L300", "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": "L302", "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": "L311", "weight": 1.0}], "raw_calls": [{"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": "L70"}, {"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": "L109"}, {"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": "L109"}, {"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": "L121"}, {"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": "L121"}, {"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": "L121"}, {"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": "L128"}, {"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": "L128"}, {"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": "L133"}, {"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": "L133"}, {"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": "L143"}, {"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": "L175"}, {"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": "L193"}, {"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": "L193"}, {"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": "L202"}, {"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": "L214"}, {"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": "L214"}, {"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": "L236"}, {"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": "L238"}, {"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": "L263"}, {"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": "L265"}, {"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": "L266"}, {"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": "L267"}, {"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": "L290"}, {"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": "L292"}, {"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": "L301"}, {"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": "L304"}, {"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": "L307"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8622674146e399f10e08e5fcc2ba18d92d5bbabda633790029f4a533b46eeeea.json b/backend/graphify-out/cache/ast/8622674146e399f10e08e5fcc2ba18d92d5bbabda633790029f4a533b46eeeea.json new file mode 100644 index 000000000..8ff510675 --- /dev/null +++ b/backend/graphify-out/cache/ast/8622674146e399f10e08e5fcc2ba18d92d5bbabda633790029f4a533b46eeeea.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "label": "product.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1"}, {"id": "crm_product_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L19"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L19"}, {"id": "crm_product_category_row_to_dict", "label": "_category_row_to_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29"}, {"id": "crmproductcategory", "label": "CrmProductCategory", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29"}, {"id": "crm_product_list_categories", "label": "list_categories()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45"}, {"id": "crm_product_build_category_tree", "label": "_build_category_tree()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69"}, {"id": "crm_product_collect_category_with_ancestors", "label": "_collect_category_with_ancestors()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80"}, {"id": "crm_product_list_category_tree", "label": "list_category_tree()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96"}, {"id": "crm_product_get_category", "label": "get_category()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L127"}, {"id": "crm_product_create_category", "label": "create_category()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L139"}, {"id": "crm_product_update_category", "label": "update_category()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L176"}, {"id": "crm_product_soft_delete_category", "label": "soft_delete_category()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L211"}, {"id": "crm_product_category_code_exists", "label": "category_code_exists()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247"}, {"id": "crm_product_product_row_to_dict", "label": "_product_row_to_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L267"}, {"id": "crmproduct", "label": "CrmProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L267"}, {"id": "crm_product_list_products", "label": "list_products()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297"}, {"id": "crm_product_get_product", "label": "get_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340"}, {"id": "crm_product_get_product_by_no", "label": "get_product_by_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L352"}, {"id": "crm_product_generate_product_no", "label": "generate_product_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L365"}, {"id": "crm_product_generate_barcode", "label": "generate_barcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L393"}, {"id": "crm_product_create_product", "label": "create_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421"}, {"id": "crm_product_update_product", "label": "update_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L480"}, {"id": "crm_product_soft_delete_product", "label": "soft_delete_product()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L538"}, {"id": "crm_product_product_no_exists", "label": "product_no_exists()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547"}, {"id": "crm_product_barcode_exists", "label": "barcode_exists()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564"}, {"id": "crm_product_list_product_options", "label": "list_product_options()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581"}, {"id": "crm_product_oss_row_to_dict", "label": "_oss_row_to_dict()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L615"}, {"id": "sysoss", "label": "SysOss", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L615"}, {"id": "crm_product_list_oss_by_biz", "label": "list_oss_by_biz()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633"}, {"id": "crm_product_create_oss", "label": "create_oss()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L649"}, {"id": "crm_product_soft_delete_oss", "label": "soft_delete_oss()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L681"}, {"id": "crm_product_normalize_text", "label": "_normalize_text()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L697"}, {"id": "crm_product_get_quote_item_field", "label": "_get_quote_item_field()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L704"}, {"id": "crm_product_generate_auto_product_no", "label": "generate_auto_product_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L711"}, {"id": "crm_product_resolve_product_id_for_quote_item", "label": "resolve_product_id_for_quote_item()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L727"}, {"id": "crm_product_rationale_1", "label": "CRM \u4ea7\u54c1\u6a21\u5757 CRUD\uff08\u4ea7\u54c1\u5206\u7c7b + \u4ea7\u54c1 + \u9644\u4ef6\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1"}, {"id": "crm_product_rationale_30", "label": "\u5206\u7c7b ORM \u5bf9\u8c61\u8f6c dict\uff08camelCase \u952e\u540d\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L30"}, {"id": "crm_product_rationale_52", "label": "\u83b7\u53d6\u5206\u7c7b\uff08\u6241\u5e73\u5217\u8868\uff0c\u652f\u6301\u540d\u79f0\u6a21\u7cca\u4e0e\u72b6\u6001\u7b5b\u9009\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L52"}, {"id": "crm_product_rationale_72", "label": "\u6309 parentId \u5c06\u6241\u5e73\u5206\u7c7b\u5217\u8868\u7ec4\u88c5\u4e3a\u5d4c\u5957\u6811", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L72"}, {"id": "crm_product_rationale_83", "label": "\u4fdd\u7559\u5339\u914d\u8282\u70b9\u53ca\u5176\u5168\u90e8\u4e0a\u7ea7\uff0c\u4f9b\u68c0\u7d22\u540e\u4ecd\u80fd\u6b63\u786e\u7ec4\u6811\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L83"}, {"id": "crm_product_rationale_103", "label": "\u83b7\u53d6\u4ea7\u54c1\u5206\u7c7b\u6811\uff08\u5d4c\u5957 children\uff0c\u4f9b\u6811\u5f62\u8868\u683c/\u6811\u9009\u62e9\u5668\u4f7f\u7528\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L103"}, {"id": "crm_product_rationale_268", "label": "\u4ea7\u54c1 ORM \u5bf9\u8c61\u8f6c dict\uff08camelCase \u952e\u540d\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L268"}, {"id": "crm_product_rationale_366", "label": "\u751f\u6210\u4ea7\u54c1\u7f16\u53f7\uff08\u683c\u5f0f\uff1aCP + yyyyMMdd + 3\u4f4d\u5e8f\u53f7\uff0c\u5982 CP20260530001\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L366"}, {"id": "crm_product_rationale_394", "label": "\u751f\u6210\u552f\u4e00\u6761\u7801\uff08\u7eaf\u6570\u5b57\uff1ayyyyMMdd + 6\u4f4d\u5e8f\u53f7\uff0c\u5982 20260606000001\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L394"}, {"id": "crm_product_rationale_712", "label": "Java: generateAutoProductNo \u2014 SXWL + 8\u4f4d\u968f\u673a\u5927\u5199\u5b57\u7b26", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L712"}, {"id": "crm_product_rationale_734", "label": "Java: resolveProductIdForQuoteItem\uff08CrmProduct \u65e0 tax_rate\uff0c\u8df3\u8fc7\u7a0e\u7387\u5339\u914d\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L734"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "app_models_crm_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L19", "weight": 1.0}, {"source": "crm_product_total_pages", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L19", "weight": 1.0}, {"source": "crm_product_total_pages", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L19", "weight": 1.0}, {"source": "crm_product_total_pages", "target": "int", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_category_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29", "weight": 1.0}, {"source": "crm_product_category_row_to_dict", "target": "crmproductcategory", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29", "weight": 1.0}, {"source": "crm_product_category_row_to_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29", "weight": 1.0}, {"source": "crm_product_category_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_list_categories", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L45", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_build_category_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "crm_product_build_category_tree", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "crm_product_build_category_tree", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "crm_product_build_category_tree", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "crm_product_build_category_tree", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "crm_product_build_category_tree", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L69", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_collect_category_with_ancestors", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "weight": 1.0}, {"source": "crm_product_collect_category_with_ancestors", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "weight": 1.0}, {"source": "crm_product_collect_category_with_ancestors", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "weight": 1.0}, {"source": "crm_product_collect_category_with_ancestors", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "weight": 1.0}, {"source": "crm_product_collect_category_with_ancestors", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "weight": 1.0}, {"source": "crm_product_collect_category_with_ancestors", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L80", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_list_category_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L96", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_get_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L127", "weight": 1.0}, {"source": "crm_product_get_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L127", "weight": 1.0}, {"source": "crm_product_get_category", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L127", "weight": 1.0}, {"source": "crm_product_get_category", "target": "crmproductcategory", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L127", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_create_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L139", "weight": 1.0}, {"source": "crm_product_create_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L139", "weight": 1.0}, {"source": "crm_product_create_category", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L139", "weight": 1.0}, {"source": "crm_product_create_category", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L139", "weight": 1.0}, {"source": "crm_product_create_category", "target": "crmproductcategory", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L139", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_update_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L176", "weight": 1.0}, {"source": "crm_product_update_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L176", "weight": 1.0}, {"source": "crm_product_update_category", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L176", "weight": 1.0}, {"source": "crm_product_update_category", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L176", "weight": 1.0}, {"source": "crm_product_update_category", "target": "crmproductcategory", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L176", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_soft_delete_category", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L211", "weight": 1.0}, {"source": "crm_product_soft_delete_category", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L211", "weight": 1.0}, {"source": "crm_product_soft_delete_category", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L211", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_category_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247", "weight": 1.0}, {"source": "crm_product_category_code_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247", "weight": 1.0}, {"source": "crm_product_category_code_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247", "weight": 1.0}, {"source": "crm_product_category_code_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247", "weight": 1.0}, {"source": "crm_product_category_code_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247", "weight": 1.0}, {"source": "crm_product_category_code_exists", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L247", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_product_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L267", "weight": 1.0}, {"source": "crm_product_product_row_to_dict", "target": "crmproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L267", "weight": 1.0}, {"source": "crm_product_product_row_to_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L267", "weight": 1.0}, {"source": "crm_product_product_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L267", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_list_products", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "crm_product_list_products", "target": "int", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L297", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_get_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340", "weight": 1.0}, {"source": "crm_product_get_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340", "weight": 1.0}, {"source": "crm_product_get_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340", "weight": 1.0}, {"source": "crm_product_get_product", "target": "crmproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L340", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_get_product_by_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L352", "weight": 1.0}, {"source": "crm_product_get_product_by_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L352", "weight": 1.0}, {"source": "crm_product_get_product_by_no", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L352", "weight": 1.0}, {"source": "crm_product_get_product_by_no", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L352", "weight": 1.0}, {"source": "crm_product_get_product_by_no", "target": "crmproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L352", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_generate_product_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L365", "weight": 1.0}, {"source": "crm_product_generate_product_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L365", "weight": 1.0}, {"source": "crm_product_generate_product_no", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L365", "weight": 1.0}, {"source": "crm_product_generate_product_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L365", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_generate_barcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L393", "weight": 1.0}, {"source": "crm_product_generate_barcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L393", "weight": 1.0}, {"source": "crm_product_generate_barcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L393", "weight": 1.0}, {"source": "crm_product_generate_barcode", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L393", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_create_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "weight": 1.0}, {"source": "crm_product_create_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "weight": 1.0}, {"source": "crm_product_create_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "weight": 1.0}, {"source": "crm_product_create_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crmproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L421", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_update_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L480", "weight": 1.0}, {"source": "crm_product_update_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L480", "weight": 1.0}, {"source": "crm_product_update_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L480", "weight": 1.0}, {"source": "crm_product_update_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L480", "weight": 1.0}, {"source": "crm_product_update_product", "target": "crmproduct", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L480", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_soft_delete_product", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L538", "weight": 1.0}, {"source": "crm_product_soft_delete_product", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L538", "weight": 1.0}, {"source": "crm_product_soft_delete_product", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L538", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_product_no_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "weight": 1.0}, {"source": "crm_product_product_no_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "weight": 1.0}, {"source": "crm_product_product_no_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "weight": 1.0}, {"source": "crm_product_product_no_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "weight": 1.0}, {"source": "crm_product_product_no_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "weight": 1.0}, {"source": "crm_product_product_no_exists", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L547", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_barcode_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564", "weight": 1.0}, {"source": "crm_product_barcode_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564", "weight": 1.0}, {"source": "crm_product_barcode_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564", "weight": 1.0}, {"source": "crm_product_barcode_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564", "weight": 1.0}, {"source": "crm_product_barcode_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564", "weight": 1.0}, {"source": "crm_product_barcode_exists", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L564", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_list_product_options", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "crm_product_list_product_options", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "crm_product_list_product_options", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "crm_product_list_product_options", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "crm_product_list_product_options", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "crm_product_list_product_options", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "crm_product_list_product_options", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L581", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_oss_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L615", "weight": 1.0}, {"source": "crm_product_oss_row_to_dict", "target": "sysoss", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L615", "weight": 1.0}, {"source": "crm_product_oss_row_to_dict", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L615", "weight": 1.0}, {"source": "crm_product_oss_row_to_dict", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L615", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_list_oss_by_biz", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "any", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L633", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_create_oss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L649", "weight": 1.0}, {"source": "crm_product_create_oss", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L649", "weight": 1.0}, {"source": "crm_product_create_oss", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L649", "weight": 1.0}, {"source": "crm_product_create_oss", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L649", "weight": 1.0}, {"source": "crm_product_create_oss", "target": "sysoss", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L649", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_soft_delete_oss", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L681", "weight": 1.0}, {"source": "crm_product_soft_delete_oss", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L681", "weight": 1.0}, {"source": "crm_product_soft_delete_oss", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L681", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_normalize_text", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L697", "weight": 1.0}, {"source": "crm_product_normalize_text", "target": "any", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L697", "weight": 1.0}, {"source": "crm_product_normalize_text", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L697", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_get_quote_item_field", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L704", "weight": 1.0}, {"source": "crm_product_get_quote_item_field", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L704", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_generate_auto_product_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L711", "weight": 1.0}, {"source": "crm_product_generate_auto_product_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L711", "weight": 1.0}, {"source": "crm_product_generate_auto_product_no", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L711", "weight": 1.0}, {"source": "crm_product_generate_auto_product_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L711", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "target": "crm_product_resolve_product_id_for_quote_item", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L727", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L727", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L727", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L727", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L727", "weight": 1.0}, {"source": "crm_product_list_categories", "target": "crm_product_category_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L66", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "crm_product_list_categories", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L109", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "crm_product_build_category_tree", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L110", "weight": 1.0}, {"source": "crm_product_list_category_tree", "target": "crm_product_collect_category_with_ancestors", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L123", "weight": 1.0}, {"source": "crm_product_create_category", "target": "crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L152", "weight": 1.0}, {"source": "crm_product_create_category", "target": "crmproductcategory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L156", "weight": 1.0}, {"source": "crm_product_update_category", "target": "crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L184", "weight": 1.0}, {"source": "crm_product_soft_delete_category", "target": "crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L213", "weight": 1.0}, {"source": "crm_product_list_products", "target": "crm_product_product_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L337", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crm_product_generate_product_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L431", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crm_product_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L433", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crm_product_generate_barcode", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L435", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crm_product_barcode_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L436", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L443", "weight": 1.0}, {"source": "crm_product_create_product", "target": "crmproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L447", "weight": 1.0}, {"source": "crm_product_update_product", "target": "crm_product_get_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L488", "weight": 1.0}, {"source": "crm_product_update_product", "target": "crm_product_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L516", "weight": 1.0}, {"source": "crm_product_update_product", "target": "crm_product_barcode_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L517", "weight": 1.0}, {"source": "crm_product_update_product", "target": "crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L526", "weight": 1.0}, {"source": "crm_product_soft_delete_product", "target": "crm_product_get_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L540", "weight": 1.0}, {"source": "crm_product_list_oss_by_biz", "target": "crm_product_oss_row_to_dict", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L646", "weight": 1.0}, {"source": "crm_product_create_oss", "target": "sysoss", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L657", "weight": 1.0}, {"source": "crm_product_generate_auto_product_no", "target": "crm_product_product_no_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L722", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "crm_product_get_quote_item_field", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L738", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "crm_product_get_product", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L740", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "crm_product_normalize_text", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L744", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "crm_product_generate_auto_product_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L776", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "crm_product_get_category", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L779", "weight": 1.0}, {"source": "crm_product_resolve_product_id_for_quote_item", "target": "crmproduct", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L783", "weight": 1.0}, {"source": "crm_product_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_crud_crm_product_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L1", "weight": 1.0}, {"source": "crm_product_rationale_30", "target": "crm_product_category_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L30", "weight": 1.0}, {"source": "crm_product_rationale_52", "target": "crm_product_list_categories", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L52", "weight": 1.0}, {"source": "crm_product_rationale_72", "target": "crm_product_build_category_tree", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L72", "weight": 1.0}, {"source": "crm_product_rationale_83", "target": "crm_product_collect_category_with_ancestors", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L83", "weight": 1.0}, {"source": "crm_product_rationale_103", "target": "crm_product_list_category_tree", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L103", "weight": 1.0}, {"source": "crm_product_rationale_268", "target": "crm_product_product_row_to_dict", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L268", "weight": 1.0}, {"source": "crm_product_rationale_366", "target": "crm_product_generate_product_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L366", "weight": 1.0}, {"source": "crm_product_rationale_394", "target": "crm_product_generate_barcode", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L394", "weight": 1.0}, {"source": "crm_product_rationale_712", "target": "crm_product_generate_auto_product_no", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L712", "weight": 1.0}, {"source": "crm_product_rationale_734", "target": "crm_product_resolve_product_id_for_quote_item", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L734", "weight": 1.0}], "raw_calls": [{"caller_nid": "crm_product_total_pages", "callee": "ceil", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L23"}, {"caller_nid": "crm_product_category_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L40"}, {"caller_nid": "crm_product_category_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L41"}, {"caller_nid": "crm_product_list_categories", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L53"}, {"caller_nid": "crm_product_list_categories", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L57"}, {"caller_nid": "crm_product_list_categories", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L59"}, {"caller_nid": "crm_product_list_categories", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L60"}, {"caller_nid": "crm_product_list_categories", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L61"}, {"caller_nid": "crm_product_list_categories", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L62"}, {"caller_nid": "crm_product_list_categories", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L63"}, {"caller_nid": "crm_product_list_categories", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L64"}, {"caller_nid": "crm_product_build_category_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L73"}, {"caller_nid": "crm_product_build_category_tree", "callee": "sort", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L76"}, {"caller_nid": "crm_product_build_category_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L76"}, {"caller_nid": "crm_product_collect_category_with_ancestors", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L84"}, {"caller_nid": "crm_product_collect_category_with_ancestors", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L87"}, {"caller_nid": "crm_product_collect_category_with_ancestors", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L91"}, {"caller_nid": "crm_product_collect_category_with_ancestors", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L92"}, {"caller_nid": "crm_product_collect_category_with_ancestors", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L92"}, {"caller_nid": "crm_product_list_category_tree", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L104"}, {"caller_nid": "crm_product_list_category_tree", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L105"}, {"caller_nid": "crm_product_list_category_tree", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L122"}, {"caller_nid": "crm_product_get_category", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L130"}, {"caller_nid": "crm_product_get_category", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L130"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L147"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L148"}, {"caller_nid": "crm_product_create_category", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L157"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L159"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L160"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L162"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L164"}, {"caller_nid": "crm_product_create_category", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L165"}, {"caller_nid": "crm_product_create_category", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L170"}, {"caller_nid": "crm_product_create_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L171"}, {"caller_nid": "crm_product_create_category", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L172"}, {"caller_nid": "crm_product_update_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L186"}, {"caller_nid": "crm_product_update_category", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L205"}, {"caller_nid": "crm_product_update_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L206"}, {"caller_nid": "crm_product_update_category", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L207"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L215"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L219"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L219"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L228"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L232"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L232"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L241"}, {"caller_nid": "crm_product_soft_delete_category", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L244"}, {"caller_nid": "crm_product_category_code_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L254"}, {"caller_nid": "crm_product_category_code_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L261"}, {"caller_nid": "crm_product_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L292"}, {"caller_nid": "crm_product_product_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L293"}, {"caller_nid": "crm_product_list_products", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L308"}, {"caller_nid": "crm_product_list_products", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L314"}, {"caller_nid": "crm_product_list_products", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L317"}, {"caller_nid": "crm_product_list_products", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L317"}, {"caller_nid": "crm_product_list_products", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L317"}, {"caller_nid": "crm_product_list_products", "callee": "scalar", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L327"}, {"caller_nid": "crm_product_list_products", "callee": "with_entities", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L327"}, {"caller_nid": "crm_product_list_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L327"}, {"caller_nid": "crm_product_list_products", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L327"}, {"caller_nid": "crm_product_list_products", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L332"}, {"caller_nid": "crm_product_list_products", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L332"}, {"caller_nid": "crm_product_list_products", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L332"}, {"caller_nid": "crm_product_list_products", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L332"}, {"caller_nid": "crm_product_get_product", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L343"}, {"caller_nid": "crm_product_get_product", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L343"}, {"caller_nid": "crm_product_get_product_by_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L355"}, {"caller_nid": "crm_product_get_product_by_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L355"}, {"caller_nid": "crm_product_generate_product_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L367"}, {"caller_nid": "crm_product_generate_product_no", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L367"}, {"caller_nid": "crm_product_generate_product_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L372"}, {"caller_nid": "crm_product_generate_product_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L372"}, {"caller_nid": "crm_product_generate_product_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L372"}, {"caller_nid": "crm_product_generate_product_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L374"}, {"caller_nid": "crm_product_generate_product_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L377"}, {"caller_nid": "crm_product_generate_barcode", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L395"}, {"caller_nid": "crm_product_generate_barcode", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L395"}, {"caller_nid": "crm_product_generate_barcode", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L399"}, {"caller_nid": "crm_product_generate_barcode", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L399"}, {"caller_nid": "crm_product_generate_barcode", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L399"}, {"caller_nid": "crm_product_generate_barcode", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L401"}, {"caller_nid": "crm_product_generate_barcode", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L405"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L429"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L433"}, {"caller_nid": "crm_product_create_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L437"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L440"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L441"}, {"caller_nid": "crm_product_create_product", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L448"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L450"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L453"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L454"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L456"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L457"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L458"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L459"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L460"}, {"caller_nid": "crm_product_create_product", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L460"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L461"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L462"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L463"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L464"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L465"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L466"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L468"}, {"caller_nid": "crm_product_create_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L469"}, {"caller_nid": "crm_product_create_product", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L474"}, {"caller_nid": "crm_product_create_product", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L475"}, {"caller_nid": "crm_product_create_product", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L476"}, {"caller_nid": "crm_product_update_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L490"}, {"caller_nid": "crm_product_update_product", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L516"}, {"caller_nid": "crm_product_update_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L518"}, {"caller_nid": "crm_product_update_product", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L532"}, {"caller_nid": "crm_product_update_product", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L533"}, {"caller_nid": "crm_product_update_product", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L534"}, {"caller_nid": "crm_product_soft_delete_product", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L542"}, {"caller_nid": "crm_product_soft_delete_product", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L544"}, {"caller_nid": "crm_product_product_no_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L554"}, {"caller_nid": "crm_product_product_no_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L561"}, {"caller_nid": "crm_product_barcode_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L571"}, {"caller_nid": "crm_product_barcode_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L578"}, {"caller_nid": "crm_product_list_product_options", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L589"}, {"caller_nid": "crm_product_list_product_options", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L596"}, {"caller_nid": "crm_product_list_product_options", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L596"}, {"caller_nid": "crm_product_list_product_options", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L596"}, {"caller_nid": "crm_product_list_product_options", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L599"}, {"caller_nid": "crm_product_list_product_options", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L599"}, {"caller_nid": "crm_product_oss_row_to_dict", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L629"}, {"caller_nid": "crm_product_list_oss_by_biz", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L636"}, {"caller_nid": "crm_product_list_oss_by_biz", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L636"}, {"caller_nid": "crm_product_list_oss_by_biz", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L643"}, {"caller_nid": "crm_product_create_oss", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L658"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L660"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L661"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L662"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L663"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L664"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L665"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L666"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L667"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L668"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L669"}, {"caller_nid": "crm_product_create_oss", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L670"}, {"caller_nid": "crm_product_create_oss", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L675"}, {"caller_nid": "crm_product_create_oss", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L676"}, {"caller_nid": "crm_product_create_oss", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L677"}, {"caller_nid": "crm_product_soft_delete_oss", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L683"}, {"caller_nid": "crm_product_soft_delete_oss", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L683"}, {"caller_nid": "crm_product_soft_delete_oss", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L686"}, {"caller_nid": "crm_product_normalize_text", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L700"}, {"caller_nid": "crm_product_generate_auto_product_no", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L718"}, {"caller_nid": "crm_product_generate_auto_product_no", "callee": "choice", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L719"}, {"caller_nid": "crm_product_generate_auto_product_no", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L724"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L736"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L738"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L746"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L749"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L751"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L752"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L753"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L756"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L756"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L760"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "trim", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L760"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L760"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L761"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "trim", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L761"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L761"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L762"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "trim", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L762"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "coalesce", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L762"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L764"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L784"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L791"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L798"}, {"caller_nid": "crm_product_resolve_product_id_for_quote_item", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py", "source_location": "L799"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8841f06d602235d7d5578ddaac3247c8a3e905cefd46dc365414790990cce4c1.json b/backend/graphify-out/cache/ast/8841f06d602235d7d5578ddaac3247c8a3e905cefd46dc365414790990cce4c1.json new file mode 100644 index 000000000..cbba68c6d --- /dev/null +++ b/backend/graphify-out/cache/ast/8841f06d602235d7d5578ddaac3247c8a3e905cefd46dc365414790990cce4c1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_get_inventory_ledger", "label": "get_inventory_ledger()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "pl_inventory_set_warning_threshold", "label": "set_warning_threshold()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76"}, {"id": "inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76"}, {"id": "pl_inventory_list_warnings", "label": "list_warnings()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124"}, {"id": "inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124"}, {"id": "pl_inventory_update_warning", "label": "update_warning()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"id": "inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"id": "pl_inventory_list_transactions", "label": "list_transactions()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "pl_inventory_get_summary", "label": "get_summary()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222"}, {"id": "inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222"}, {"id": "pl_inventory_list_document_reminders", "label": "list_document_reminders()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283"}, {"id": "documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283"}, {"id": "pl_inventory_update_document_reminder", "label": "update_document_reminder()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301"}, {"id": "documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301"}, {"id": "pl_inventory_check_document_expiry", "label": "check_document_expiry()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_inventory_ledger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_set_warning_threshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "inventorywarningthreshold", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "inventorywarningread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "inventorywarningupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "inventorywarningread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_transactions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_document_reminders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "documentreminderread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_document_reminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "documentreminderupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "documentreminderread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_check_document_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337", "weight": 1.0}, {"source": "pl_inventory_check_document_expiry", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L337", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L67", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L274", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L54"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L54"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L55"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L61"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L63"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L81"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L81"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L84"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L84"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L98"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L99"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L112"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L114"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L129"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L129"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L130"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L138"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L138"}, {"caller_nid": "pl_inventory_update_warning", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L148"}, {"caller_nid": "pl_inventory_update_warning", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L148"}, {"caller_nid": "pl_inventory_update_warning", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151"}, {"caller_nid": "pl_inventory_update_warning", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151"}, {"caller_nid": "pl_inventory_update_warning", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L161"}, {"caller_nid": "pl_inventory_update_warning", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L167"}, {"caller_nid": "pl_inventory_update_warning", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L170"}, {"caller_nid": "pl_inventory_update_warning", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L171"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L191"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L191"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L192"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L209"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_get_summary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L230"}, {"caller_nid": "pl_inventory_get_summary", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L230"}, {"caller_nid": "pl_inventory_get_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L232"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L253"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L254"}, {"caller_nid": "pl_inventory_get_summary", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L263"}, {"caller_nid": "pl_inventory_get_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L265"}, {"caller_nid": "pl_inventory_get_summary", "callee": "InventorySummaryItem", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L265"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L288"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L288"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L289"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L297"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L297"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L307"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L307"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L310"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L310"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L320"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L326"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L327"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L339"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L340"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L344"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L359"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L359"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L369"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L370"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L382"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L390"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L390"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L400"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L401"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L413"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L421"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L421"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L431"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L432"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L444"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L447"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/897df40ba3fa9082db682948c4d08655d656993059957ab8792b7f63ccca6b5e.json b/backend/graphify-out/cache/ast/897df40ba3fa9082db682948c4d08655d656993059957ab8792b7f63ccca6b5e.json new file mode 100644 index 000000000..4cad6d267 --- /dev/null +++ b/backend/graphify-out/cache/ast/897df40ba3fa9082db682948c4d08655d656993059957ab8792b7f63ccca6b5e.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_pltransportapproval", "label": "PlTransportApproval", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L459"}, {"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": "L488"}, {"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": "L519"}, {"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": "L539"}, {"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": "L566"}, {"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": "L598"}, {"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": "L627"}, {"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": "L652"}, {"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\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": "L460"}, {"id": "models_pl_models_rationale_489", "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": "L489"}, {"id": "models_pl_models_rationale_520", "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": "L520"}, {"id": "models_pl_models_rationale_540", "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": "L540"}, {"id": "models_pl_models_rationale_599", "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": "L599"}, {"id": "models_pl_models_rationale_628", "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": "L628"}, {"id": "models_pl_models_rationale_653", "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": "L653"}], "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_pltransportapproval", "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_pltransportapproval", "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_plfreightsettlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py", "source_location": "L488", "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": "L488", "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": "L519", "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": "L519", "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": "L539", "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": "L539", "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": "L566", "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": "L566", "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": "L598", "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": "L598", "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": "L627", "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": "L627", "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": "L652", "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": "L652", "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_pltransportapproval", "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_489", "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": "L489", "weight": 1.0}, {"source": "models_pl_models_rationale_520", "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": "L520", "weight": 1.0}, {"source": "models_pl_models_rationale_540", "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": "L540", "weight": 1.0}, {"source": "models_pl_models_rationale_599", "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": "L599", "weight": 1.0}, {"source": "models_pl_models_rationale_628", "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": "L628", "weight": 1.0}, {"source": "models_pl_models_rationale_653", "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": "L653", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8ba956d05fad953b9d06d27ff866e9f8a30c05af6b3608b272cbac5403b53e41.json b/backend/graphify-out/cache/ast/8ba956d05fad953b9d06d27ff866e9f8a30c05af6b3608b272cbac5403b53e41.json new file mode 100644 index 000000000..fce7011ab --- /dev/null +++ b/backend/graphify-out/cache/ast/8ba956d05fad953b9d06d27ff866e9f8a30c05af6b3608b272cbac5403b53e41.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": "L42"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L42"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L42"}, {"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": "L67"}, {"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": "L72"}, {"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": "L81"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L81"}, {"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": "L102"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"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": "L166"}, {"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": "L195"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L195"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L195"}, {"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": "L274"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L274"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L274"}, {"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": "L373"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L373"}, {"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": "L475"}, {"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": "L504"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L504"}, {"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": "L571"}, {"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": "L595"}, {"id": "pl_plan_rationale_43", "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": "L43"}, {"id": "pl_plan_rationale_279", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u5408\u540c\u4ea7\u54c1 + \u53ef\u9009\u8fd0\u8f93\u5b89\u6392\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L279"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L20", "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": "L21", "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": "L31", "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": "L42", "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": "L42", "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": "L42", "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": "L67", "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": "L67", "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": "L67", "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": "L67", "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": "L72", "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": "L72", "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": "L72", "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": "L81", "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": "L81", "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": "L81", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L166", "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": "L166", "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": "L166", "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": "L166", "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": "L195", "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": "L195", "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": "L195", "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": "L195", "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": "L195", "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": "L274", "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": "L274", "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": "L274", "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": "L274", "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": "L274", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L475", "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": "L475", "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": "L475", "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": "L475", "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": "L475", "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": "L504", "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": "L504", "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": "L504", "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": "L504", "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": "L504", "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": "L504", "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": "L571", "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": "L571", "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": "L571", "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": "L571", "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": "L571", "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": "L595", "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": "L595", "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": "L595", "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": "L595", "weight": 1.0}, {"source": "pl_plan_archive_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": "L595", "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": "L619", "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": "L619", "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": "L619", "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": "L619", "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": "L619", "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": "L162", "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": "L203", "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": "L208", "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": "L210", "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": "L284", "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": "L286", "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": "L289", "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": "L393", "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": "L396", "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": "L398", "weight": 1.0}, {"source": "pl_plan_rationale_43", "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": "L43", "weight": 1.0}, {"source": "pl_plan_rationale_279", "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": "L279", "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": "L44"}, {"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": "L45"}, {"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": "L49"}, {"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": "L49"}, {"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": "L49"}, {"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": "L51"}, {"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": "L54"}, {"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": "L69"}, {"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": "L78"}, {"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": "L83"}, {"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": "L117"}, {"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": "L117"}, {"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": "L118"}, {"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": "L125"}, {"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": "L126"}, {"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": "L127"}, {"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": "L127"}, {"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": "L127"}, {"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": "L132"}, {"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": "L147"}, {"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": "L147"}, {"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": "L147"}, {"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": "L156"}, {"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": "L160"}, {"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": "L160"}, {"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": "L160"}, {"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": "L160"}, {"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": "L171"}, {"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": "L171"}, {"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": "L172"}, {"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": "L172"}, {"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": "L172"}, {"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": "L177"}, {"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": "L177"}, {"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": "L177"}, {"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": "L181"}, {"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": "L200"}, {"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": "L200"}, {"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": "L211"}, {"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": "L250"}, {"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": "L255"}, {"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": "L264"}, {"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": "L266"}, {"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": "L268"}, {"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": "L269"}, {"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": "L282"}, {"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": "L283"}, {"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": "L283"}, {"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": "L290"}, {"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": "L323"}, {"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": "L330"}, {"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": "L331"}, {"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": "L335"}, {"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": "L344"}, {"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": "L345"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "create_transport_for_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L348"}, {"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": "L359"}, {"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": "L360"}, {"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": "L362"}, {"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": "L381"}, {"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": "L381"}, {"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": "L385"}, {"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": "L385"}, {"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": "L390"}, {"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": "L399"}, {"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": "L431"}, {"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": "L435"}, {"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": "L445"}, {"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": "L446"}, {"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": "L462"}, {"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": "L464"}, {"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": "L465"}, {"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": "L480"}, {"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": "L480"}, {"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": "L481"}, {"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": "L484"}, {"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": "L484"}, {"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": "L493"}, {"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": "L510"}, {"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": "L510"}, {"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": "L511"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L515"}, {"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": "L518"}, {"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": "L519"}, {"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": "L525"}, {"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": "L525"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L532"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L533"}, {"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": "L557"}, {"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": "L560"}, {"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": "L561"}, {"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": "L576"}, {"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": "L576"}, {"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": "L577"}, {"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": "L580"}, {"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": "L584"}, {"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": "L585"}, {"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": "L600"}, {"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": "L600"}, {"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": "L601"}, {"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": "L604"}, {"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": "L609"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L610"}, {"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": "L621"}, {"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": "L621"}, {"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": "L630"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8c77757bcf0a2af728db774e8e90953f90fdb8e95efb939650f863630675a3c7.json b/backend/graphify-out/cache/ast/8c77757bcf0a2af728db774e8e90953f90fdb8e95efb939650f863630675a3c7.json new file mode 100644 index 000000000..5bffb5310 --- /dev/null +++ b/backend/graphify-out/cache/ast/8c77757bcf0a2af728db774e8e90953f90fdb8e95efb939650f863630675a3c7.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": "L23"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23"}, {"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": "L31"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"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": "L41"}, {"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": "L45"}, {"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": "L56"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"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": "L101"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L101"}, {"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": "L146"}, {"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": "L170"}, {"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": "L181"}, {"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": "L208"}, {"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": "L258"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L258"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L258"}, {"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": "L298"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L298"}, {"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": "L405"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L405"}, {"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": "L427"}, {"id": "services_pl_plan_service_rationale_266", "label": "\u9884\u9009\u8f66\u8f86\u4fe1\u606f\u5230\u8ba1\u5212\uff0c\u4e0d\u521b\u5efa\u8fd0\u8f93\u5355\uff08\u5b89\u6392\u8fd0\u8f93\u987b\u5355\u72ec\u64cd\u4f5c\uff09\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L266"}], "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": "L20", "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": "L23", "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": "L23", "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": "L23", "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": "L23", "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": "L31", "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": "L31", "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": "L31", "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": "L41", "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L45", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L101", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L146", "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": "L170", "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": "L170", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L181", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L208", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L258", "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": "L298", "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": "L298", "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": "L298", "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": "L298", "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": "L298", "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": "L298", "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": "L298", "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": "L298", "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": "L298", "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": "L405", "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": "L405", "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": "L427", "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": "L427", "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": "L427", "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": "L33", "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": "L42", "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": "L66", "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": "L67", "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": "L69", "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": "L154", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_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": "L279", "weight": 1.0}, {"source": "services_pl_plan_service_apply_vehicle_prefill_to_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": "L282", "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": "L321", "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": "L323", "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": "L338", "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": "L349", "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": "L354", "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": "L417", "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": "L419", "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": "L428", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_266", "target": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L266", "weight": 1.0}], "raw_calls": [{"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": "L70"}, {"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": "L109"}, {"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": "L109"}, {"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": "L121"}, {"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": "L121"}, {"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": "L121"}, {"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": "L128"}, {"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": "L128"}, {"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": "L133"}, {"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": "L133"}, {"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": "L143"}, {"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": "L175"}, {"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": "L195"}, {"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": "L195"}, {"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": "L217"}, {"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": "L217"}, {"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": "L226"}, {"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": "L228"}, {"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": "L233"}, {"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": "L233"}, {"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": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L246"}, {"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": "L247"}, {"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": "L249"}, {"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": "L252"}, {"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": "L254"}, {"caller_nid": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L268"}, {"caller_nid": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L268"}, {"caller_nid": "services_pl_plan_service_apply_vehicle_prefill_to_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"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": "L310"}, {"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": "L310"}, {"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": "L319"}, {"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": "L331"}, {"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": "L331"}, {"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": "L353"}, {"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": "L355"}, {"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": "L380"}, {"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": "L382"}, {"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": "L383"}, {"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": "L384"}, {"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": "L407"}, {"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": "L409"}, {"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": "L418"}, {"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": "L421"}, {"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": "L424"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8d8b06b95e01795dc78a7b42539c6e108a1309ea6ee7ae1c428cc1095055895a.json b/backend/graphify-out/cache/ast/8d8b06b95e01795dc78a7b42539c6e108a1309ea6ee7ae1c428cc1095055895a.json new file mode 100644 index 000000000..5d051cc7c --- /dev/null +++ b/backend/graphify-out/cache/ast/8d8b06b95e01795dc78a7b42539c6e108a1309ea6ee7ae1c428cc1095055895a.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": "L41"}, {"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": "L45"}, {"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": "L66"}, {"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": "L80"}, {"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": "L116"}, {"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": "L122"}, {"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": "L151"}, {"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": "L174"}, {"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": "L183"}, {"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": "L191"}, {"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": "L205"}, {"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": "L216"}, {"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": "L231"}, {"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": "L238"}, {"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": "L243"}], "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L66", "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": "L66", "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": "L80", "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": "L80", "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": "L116", "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": "L116", "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": "L122", "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": "L122", "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": "L151", "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": "L151", "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": "L174", "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": "L174", "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": "L183", "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": "L183", "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": "L191", "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": "L191", "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": "L205", "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": "L205", "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": "L216", "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": "L216", "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": "L231", "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": "L231", "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": "L238", "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": "L238", "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": "L243", "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": "L243", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/8e599d005175e16984aa323c9280e0b530b2e2c5b5078b9f83169c9e31a80170.json b/backend/graphify-out/cache/ast/8e599d005175e16984aa323c9280e0b530b2e2c5b5078b9f83169c9e31a80170.json new file mode 100644 index 000000000..510245246 --- /dev/null +++ b/backend/graphify-out/cache/ast/8e599d005175e16984aa323c9280e0b530b2e2c5b5078b9f83169c9e31a80170.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "label": "public_transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L1"}, {"id": "pl_public_transport_get_transport_by_token", "label": "_get_transport_by_token()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24"}, {"id": "pl_public_transport_parse_feedback_images", "label": "_parse_feedback_images()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38"}, {"id": "pl_public_transport_format_plan_date", "label": "_format_plan_date()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L50"}, {"id": "pl_public_transport_build_public_page", "label": "_build_public_page()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60"}, {"id": "publictransportpageread", "label": "PublicTransportPageRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60"}, {"id": "pl_public_transport_get_public_transport", "label": "get_public_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L115"}, {"id": "pl_public_transport_save_public_feedback", "label": "save_public_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122"}, {"id": "publictransportfeedback", "label": "PublicTransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122"}, {"id": "pl_public_transport_format_file_size", "label": "_format_file_size()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L140"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L140"}, {"id": "pl_public_transport_upload_public_attachment", "label": "upload_public_attachment()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149"}, {"id": "uploadfile", "label": "UploadFile", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_storage", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_attachment_biz", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_core_response", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "app_crud", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_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/public_transport.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_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/public_transport.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_get_transport_by_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "pl_public_transport_get_transport_by_token", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_parse_feedback_images", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_public_transport_parse_feedback_images", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_public_transport_parse_feedback_images", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_format_plan_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L50", "weight": 1.0}, {"source": "pl_public_transport_format_plan_date", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L50", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_build_public_page", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "publictransportpageread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L60", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_get_public_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L115", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L115", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L115", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_save_public_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "publictransportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L122", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_format_file_size", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L140", "weight": 1.0}, {"source": "pl_public_transport_format_file_size", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L140", "weight": 1.0}, {"source": "pl_public_transport_format_file_size", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L140", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_public_transport_py", "target": "pl_public_transport_upload_public_attachment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "uploadfile", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L149", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "publictransportpageread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L96", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_format_plan_date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L98", "weight": 1.0}, {"source": "pl_public_transport_build_public_page", "target": "pl_public_transport_parse_feedback_images", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L109", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L116", "weight": 1.0}, {"source": "pl_public_transport_get_public_transport", "target": "pl_public_transport_build_public_page", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L117", "weight": 1.0}, {"source": "pl_public_transport_save_public_feedback", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L127", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_get_transport_by_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_public_transport_upload_public_attachment", "target": "pl_public_transport_format_file_size", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L188", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L26"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L26"}, {"caller_nid": "pl_public_transport_get_transport_by_token", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L34"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "loads", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L42"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L47"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L47"}, {"caller_nid": "pl_public_transport_parse_feedback_images", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L47"}, {"caller_nid": "pl_public_transport_format_plan_date", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L54"}, {"caller_nid": "pl_public_transport_format_plan_date", "callee": "isoformat", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L56"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L62"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L62"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L62"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L67"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L74"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L74"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L80"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L80"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L82"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L82"}, {"caller_nid": "pl_public_transport_build_public_page", "callee": "PublicTransportPlanProductRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L87"}, {"caller_nid": "pl_public_transport_get_public_transport", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L118"}, {"caller_nid": "pl_public_transport_get_public_transport", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L118"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L130"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L135"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L136"}, {"caller_nid": "pl_public_transport_save_public_feedback", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L137"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L157"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "resolve_upload_folder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L160"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "read", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L161"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "upload_file", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L162"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L163"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "startswith", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L164"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "create_oss", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L169"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "lstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L174"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "splitext", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L174"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L181"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "success_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L182"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L193"}, {"caller_nid": "pl_public_transport_upload_public_attachment", "callee": "error_response", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py", "source_location": "L194"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/95d956000121bb641857096c0884f04c898d07df7decf0e85505e0ba86c5c7ce.json b/backend/graphify-out/cache/ast/95d956000121bb641857096c0884f04c898d07df7decf0e85505e0ba86c5c7ce.json new file mode 100644 index 000000000..e95a4c197 --- /dev/null +++ b/backend/graphify-out/cache/ast/95d956000121bb641857096c0884f04c898d07df7decf0e85505e0ba86c5c7ce.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "label": "pl_dibang_bridge_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L1"}, {"id": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "label": "DibangInventoryLinkResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L27"}, {"id": "services_pl_dibang_bridge_service_resolve_partner_company", "label": "resolve_partner_company()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36"}, {"id": "services_pl_dibang_bridge_service_month_range", "label": "_month_range()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44"}, {"id": "services_pl_dibang_bridge_service_plan_type_to_business_type", "label": "_plan_type_to_business_type()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51"}, {"id": "services_pl_dibang_bridge_service_product_quantity", "label": "_product_quantity()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59"}, {"id": "float", "label": "float", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59"}, {"id": "services_pl_dibang_bridge_service_generate_batch_no", "label": "_generate_batch_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66"}, {"id": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "label": "_ensure_vehicle_exists()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86"}, {"id": "services_pl_dibang_bridge_service_find_monthly_db_plan", "label": "find_monthly_db_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112"}, {"id": "dbpurchaseplan", "label": "DbPurchasePlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112"}, {"id": "services_pl_dibang_bridge_service_create_db_plan", "label": "_create_db_plan()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141"}, {"id": "services_pl_dibang_bridge_service_create_db_inventory", "label": "_create_db_inventory()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182"}, {"id": "dbinboundoutbound", "label": "DbInboundOutbound", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182"}, {"id": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "label": "sync_dibang_for_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "calendar", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_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_dibang_bridge_service.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_models_db_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_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_dibang_bridge_service.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_inventory_id", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_mappers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_plan_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L18", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "app_services_db_product_helpers", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_resolve_partner_company", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_resolve_partner_company", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_resolve_partner_company", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_resolve_partner_company", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_month_range", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_month_range", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_month_range", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_month_range", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L44", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_plan_type_to_business_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_plan_type_to_business_type", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_plan_type_to_business_type", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_product_quantity", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_product_quantity", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_product_quantity", "target": "float", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L59", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_generate_batch_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_generate_batch_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_generate_batch_no", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_generate_batch_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L66", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L86", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_find_monthly_db_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "dbpurchaseplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L112", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_create_db_plan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "dbpurchaseplan", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_create_db_inventory", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "plplanproduct", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "dbpurchaseplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "dbinboundoutbound", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L182", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_dibang_bridge_service_py", "target": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "plplan", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "plplanproduct", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L221", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_find_monthly_db_plan", "target": "services_pl_dibang_bridge_service_month_range", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L121", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "dbpurchaseplan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L154", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_plan", "target": "services_pl_dibang_bridge_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L162", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L195", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "dbinboundoutbound", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L199", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "services_pl_dibang_bridge_service_product_quantity", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L205", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_create_db_inventory", "target": "services_pl_dibang_bridge_service_generate_batch_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L207", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_plan_type_to_business_type", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L231", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_resolve_partner_company", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L235", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "date", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L241", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_month_range", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L245", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_find_monthly_db_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L254", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_create_db_plan", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L264", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_create_db_inventory", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L277", "weight": 1.0}, {"source": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "target": "services_pl_dibang_bridge_service_dibanginventorylinkresult", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L305", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_dibang_bridge_service_resolve_partner_company", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L38"}, {"caller_nid": "services_pl_dibang_bridge_service_resolve_partner_company", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L40"}, {"caller_nid": "services_pl_dibang_bridge_service_month_range", "callee": "replace", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L45"}, {"caller_nid": "services_pl_dibang_bridge_service_month_range", "callee": "monthrange", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L46"}, {"caller_nid": "services_pl_dibang_bridge_service_month_range", "callee": "replace", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L47"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L68"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L72"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "compile", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L77"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "match", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L80"}, {"caller_nid": "services_pl_dibang_bridge_service_generate_batch_no", "callee": "group", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L82"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L87"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L91"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L91"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L101"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "DbVehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L102"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L103"}, {"caller_nid": "services_pl_dibang_bridge_service_ensure_vehicle_exists", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L109"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L122"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L123"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L125"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_dibang_bridge_service_find_monthly_db_plan", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "resolve_crm_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L153"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L155"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "generate_plan_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L157"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L162"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L163"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "default_execution_status", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L166"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "apply_product_snapshot_to_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L176"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L177"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_plan", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L178"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "resolve_crm_product", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L197"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "next_inbound_outbound_id", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L200"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L205"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L206"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L208"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "apply_product_snapshot_to_inventory", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L215"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L216"}, {"caller_nid": "services_pl_dibang_bridge_service_create_db_inventory", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L217"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L237"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "parse_date_str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L243"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L244"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L247"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "ValueError", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L252"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "PlTransportDbLink", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L290"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L291"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L302"}, {"caller_nid": "services_pl_dibang_bridge_service_sync_dibang_for_transport", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py", "source_location": "L304"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/967eff49d7a7065e1727f59b4f24e695e8ac021694691fc9ea7db5ac9b09a4e2.json b/backend/graphify-out/cache/ast/967eff49d7a7065e1727f59b4f24e695e8ac021694691fc9ea7db5ac9b09a4e2.json new file mode 100644 index 000000000..56ad90b24 --- /dev/null +++ b/backend/graphify-out/cache/ast/967eff49d7a7065e1727f59b4f24e695e8ac021694691fc9ea7db5ac9b09a4e2.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_transportbase", "label": "TransportBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38"}, {"id": "pl_transport_transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43"}, {"id": "pl_transport_transportinventorylinkread", "label": "TransportInventoryLinkRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61"}, {"id": "pl_transport_transportupdate", "label": "TransportUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71"}, {"id": "pl_transport_transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95"}, {"id": "pl_transport_transportarrangeresult", "label": "TransportArrangeResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114"}, {"id": "pl_transport_planarrangeinforead", "label": "PlanArrangeInfoRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123"}, {"id": "pl_transport_transportwithplans", "label": "TransportWithPlans", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132"}, {"id": "pl_transport_transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141"}, {"id": "pl_transport_publictransportfeedback", "label": "PublicTransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L150"}, {"id": "pl_transport_publictransportplanproductread", "label": "PublicTransportPlanProductRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156"}, {"id": "pl_transport_publictransportpageread", "label": "PublicTransportPageRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L165"}, {"id": "pl_transport_approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L187"}, {"id": "pl_transport_approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L192"}, {"id": "pl_transport_approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L198"}, {"id": "pl_transport_transportlistquery", "label": "TransportListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L217"}, {"id": "pl_transport_transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L229"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_transport_transportbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_transport_transportcreate", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "pl_transport_transportarrange", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportinventorylinkread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61", "weight": 1.0}, {"source": "pl_transport_transportinventorylinkread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_transport_transportupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_transport_transportread", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrangeresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_transport_transportarrangeresult", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_planarrangeinforead", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123", "weight": 1.0}, {"source": "pl_transport_planarrangeinforead", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportwithplans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132", "weight": 1.0}, {"source": "pl_transport_transportwithplans", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_transport_transportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L150", "weight": 1.0}, {"source": "pl_transport_publictransportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L150", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportplanproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_transport_publictransportplanproductread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportpageread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L165", "weight": 1.0}, {"source": "pl_transport_publictransportpageread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L165", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_approvalsubmit", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L192", "weight": 1.0}, {"source": "pl_transport_approvalrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L192", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrecordread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L198", "weight": 1.0}, {"source": "pl_transport_approvalrecordread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L198", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_transportlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L229", "weight": 1.0}, {"source": "pl_transport_transportlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L229", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/9865972f16ed7bcfce4bb491d459455b82b80966f795b62497be61c1eec5eae6.json b/backend/graphify-out/cache/ast/9865972f16ed7bcfce4bb491d459455b82b80966f795b62497be61c1eec5eae6.json new file mode 100644 index 000000000..4ba93fb6d --- /dev/null +++ b/backend/graphify-out/cache/ast/9865972f16ed7bcfce4bb491d459455b82b80966f795b62497be61c1eec5eae6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39"}, {"id": "pl_transport_get_vehicle_info", "label": "_get_vehicle_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63"}, {"id": "pl_transport_list_transports", "label": "list_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "pl_transport_create_transport", "label": "create_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145"}, {"id": "transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145"}, {"id": "transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145"}, {"id": "pl_transport_arrange_transport", "label": "arrange_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217"}, {"id": "transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217"}, {"id": "pl_transport_get_transport", "label": "get_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331"}, {"id": "pl_transport_qrcoderesponse", "label": "QrCodeResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L346"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_generate_qrcode", "label": "generate_qrcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356"}, {"id": "pl_transport_transport_scan_feedback", "label": "transport_scan_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389"}, {"id": "transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389"}, {"id": "pl_transport_submit_approval", "label": "submit_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430"}, {"id": "approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430"}, {"id": "pl_transport_process_approval", "label": "process_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475"}, {"id": "approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475"}, {"id": "approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475"}, {"id": "pl_transport_get_transport_approvals", "label": "get_transport_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L537"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L562"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_vehicle_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_list_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_create_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_arrange_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_qrcoderesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L346", "weight": 1.0}, {"source": "pl_transport_qrcoderesponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L346", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L356", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_transport_scan_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "transportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L389", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "approvalsubmit", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_process_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrecordread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L475", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L537", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L537", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L537", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L537", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "approvalrecordread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L537", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L562", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L562", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L562", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L562", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L562", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L136", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_get_vehicle_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L235", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L268", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L375", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_transport_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L41"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L42"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L47"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L50"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L75"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L75"}, {"caller_nid": "pl_transport_list_transports", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L102"}, {"caller_nid": "pl_transport_list_transports", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L102"}, {"caller_nid": "pl_transport_list_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"caller_nid": "pl_transport_list_transports", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L110"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L111"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L112"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L113"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L118"}, {"caller_nid": "pl_transport_list_transports", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L132"}, {"caller_nid": "pl_transport_list_transports", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_create_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L150"}, {"caller_nid": "pl_transport_create_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L150"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L155"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L181"}, {"caller_nid": "pl_transport_create_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L186"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L194"}, {"caller_nid": "pl_transport_create_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L197"}, {"caller_nid": "pl_transport_create_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L197"}, {"caller_nid": "pl_transport_create_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L206"}, {"caller_nid": "pl_transport_create_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L207"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L223"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L223"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L226"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L226"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L232"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L238"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L238"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L240"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L243"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L251"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L269"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L273"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L277"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L278"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L278"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L280"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L297"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L300"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L301"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L308"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L320"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L321"}, {"caller_nid": "pl_transport_get_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L336"}, {"caller_nid": "pl_transport_get_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L336"}, {"caller_nid": "pl_transport_get_transport", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L337"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L362"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L362"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L363"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L366"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L366"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L373"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L395"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L395"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L403"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L406"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L413"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L418"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L419"}, {"caller_nid": "pl_transport_submit_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L436"}, {"caller_nid": "pl_transport_submit_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L436"}, {"caller_nid": "pl_transport_submit_approval", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L437"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L440"}, {"caller_nid": "pl_transport_submit_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L446"}, {"caller_nid": "pl_transport_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L446"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L448"}, {"caller_nid": "pl_transport_submit_approval", "callee": "PlTransportApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L450"}, {"caller_nid": "pl_transport_submit_approval", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L451"}, {"caller_nid": "pl_transport_submit_approval", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L461"}, {"caller_nid": "pl_transport_submit_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L464"}, {"caller_nid": "pl_transport_submit_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L465"}, {"caller_nid": "pl_transport_process_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L481"}, {"caller_nid": "pl_transport_process_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L481"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L484"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L484"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L493"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L496"}, {"caller_nid": "pl_transport_process_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L503"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L506"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L506"}, {"caller_nid": "pl_transport_process_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L511"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L511"}, {"caller_nid": "pl_transport_process_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L526"}, {"caller_nid": "pl_transport_process_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L527"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L542"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L542"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L545"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L545"}, {"caller_nid": "pl_transport_get_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L564"}, {"caller_nid": "pl_transport_get_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L564"}, {"caller_nid": "pl_transport_get_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L573"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/98c6a1079fdc4e72d9c494ef4ff5f5916e5bdda008593b938bbd1d1b6b1f8131.json b/backend/graphify-out/cache/ast/98c6a1079fdc4e72d9c494ef4ff5f5916e5bdda008593b938bbd1d1b6b1f8131.json new file mode 100644 index 000000000..cb93f59a4 --- /dev/null +++ b/backend/graphify-out/cache/ast/98c6a1079fdc4e72d9c494ef4ff5f5916e5bdda008593b938bbd1d1b6b1f8131.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": "L330"}, {"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": "L357"}, {"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": "L417"}, {"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": "L439"}, {"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": "L458"}, {"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": "L487"}, {"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": "L518"}, {"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": "L538"}, {"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": "L565"}, {"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": "L597"}, {"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": "L626"}, {"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": "L651"}, {"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_331", "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": "L331"}, {"id": "models_pl_models_rationale_418", "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": "L418"}, {"id": "models_pl_models_rationale_440", "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": "L440"}, {"id": "models_pl_models_rationale_459", "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": "L459"}, {"id": "models_pl_models_rationale_488", "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": "L488"}, {"id": "models_pl_models_rationale_519", "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": "L519"}, {"id": "models_pl_models_rationale_539", "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": "L539"}, {"id": "models_pl_models_rationale_598", "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": "L598"}, {"id": "models_pl_models_rationale_627", "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": "L627"}, {"id": "models_pl_models_rationale_652", "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": "L652"}], "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": "L330", "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": "L330", "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": "L357", "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": "L357", "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": "L417", "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": "L417", "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": "L439", "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": "L439", "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": "L458", "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": "L458", "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": "L487", "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": "L487", "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": "L518", "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": "L518", "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": "L538", "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": "L538", "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": "L565", "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": "L565", "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": "L597", "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": "L597", "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": "L626", "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": "L626", "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": "L651", "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": "L651", "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_331", "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": "L331", "weight": 1.0}, {"source": "models_pl_models_rationale_418", "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": "L418", "weight": 1.0}, {"source": "models_pl_models_rationale_440", "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": "L440", "weight": 1.0}, {"source": "models_pl_models_rationale_459", "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": "L459", "weight": 1.0}, {"source": "models_pl_models_rationale_488", "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": "L488", "weight": 1.0}, {"source": "models_pl_models_rationale_519", "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": "L519", "weight": 1.0}, {"source": "models_pl_models_rationale_539", "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": "L539", "weight": 1.0}, {"source": "models_pl_models_rationale_598", "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": "L598", "weight": 1.0}, {"source": "models_pl_models_rationale_627", "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": "L627", "weight": 1.0}, {"source": "models_pl_models_rationale_652", "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": "L652", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/9f365bc1fa2e3a59975adaff0aa8106f0d616c846528329a8da1462b0dabc3ab.json b/backend/graphify-out/cache/ast/9f365bc1fa2e3a59975adaff0aa8106f0d616c846528329a8da1462b0dabc3ab.json new file mode 100644 index 000000000..0523309a7 --- /dev/null +++ b/backend/graphify-out/cache/ast/9f365bc1fa2e3a59975adaff0aa8106f0d616c846528329a8da1462b0dabc3ab.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": "L48"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L48"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L48"}, {"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": "L70"}, {"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": "L75"}, {"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": "L84"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L84"}, {"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": "L105"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"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": "L204"}, {"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": "L233"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L233"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L233"}, {"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": "L312"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L312"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L312"}, {"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": "L414"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L414"}, {"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": "L523"}, {"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": "L566"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L566"}, {"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": "L628"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L628"}, {"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": "L664"}, {"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": "L688"}, {"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": "L713"}, {"id": "pl_plan_rationale_49", "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": "L49"}, {"id": "pl_plan_rationale_317", "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": "L317"}, {"id": "pl_plan_rationale_634", "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": "L634"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "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": "L22", "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": "L23", "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": "L35", "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": "L48", "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": "L48", "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": "L48", "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": "L70", "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": "L70", "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": "L70", "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": "L70", "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": "L75", "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": "L75", "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": "L75", "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": "L84", "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": "L84", "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": "L84", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L204", "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": "L204", "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": "L204", "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": "L204", "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": "L233", "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": "L233", "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": "L233", "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": "L233", "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": "L233", "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": "L312", "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": "L312", "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": "L312", "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": "L312", "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": "L312", "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": "L414", "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": "L414", "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": "L414", "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": "L414", "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": "L414", "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": "L523", "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": "L523", "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": "L523", "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": "L523", "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": "L523", "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": "L566", "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": "L566", "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": "L566", "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": "L566", "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": "L566", "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": "L566", "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": "L628", "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": "L628", "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": "L628", "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": "L628", "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": "L628", "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": "L628", "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": "L664", "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": "L664", "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": "L664", "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": "L664", "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": "L664", "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": "L688", "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": "L688", "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": "L688", "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": "L688", "weight": 1.0}, {"source": "pl_plan_archive_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": "L688", "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": "L713", "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": "L713", "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": "L713", "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": "L713", "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": "L744", "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": "L744", "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": "L744", "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": "L744", "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": "L744", "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": "L200", "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": "L241", "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": "L246", "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": "L248", "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": "L320", "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": "L322", "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": "L325", "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": "L434", "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": "L437", "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": "L439", "weight": 1.0}, {"source": "pl_plan_rationale_49", "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": "L49", "weight": 1.0}, {"source": "pl_plan_rationale_317", "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": "L317", "weight": 1.0}, {"source": "pl_plan_rationale_634", "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": "L634", "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": "L50"}, {"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": "L51"}, {"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": "L55"}, {"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": "L55"}, {"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": "L55"}, {"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": "L56"}, {"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": "L57"}, {"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": "L72"}, {"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": "L81"}, {"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": "L86"}, {"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": "L120"}, {"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": "L120"}, {"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": "L121"}, {"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": "L128"}, {"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": "L129"}, {"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": "L130"}, {"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": "L130"}, {"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": "L130"}, {"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": "L135"}, {"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": "L150"}, {"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": "L150"}, {"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": "L150"}, {"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": "L159"}, {"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": "L163"}, {"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": "L163"}, {"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": "L163"}, {"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": "L163"}, {"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": "L169"}, {"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": "L169"}, {"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": "L171"}, {"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": "L178"}, {"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": "L178"}, {"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": "L183"}, {"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": "L184"}, {"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": "L191"}, {"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": "L193"}, {"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": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L196"}, {"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": "L198"}, {"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": "L209"}, {"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": "L209"}, {"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": "L210"}, {"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": "L210"}, {"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": "L210"}, {"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": "L215"}, {"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": "L215"}, {"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": "L215"}, {"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": "L219"}, {"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": "L238"}, {"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": "L238"}, {"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": "L249"}, {"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": "L288"}, {"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": "L293"}, {"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": "L302"}, {"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": "L304"}, {"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": "L306"}, {"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": "L307"}, {"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": "L318"}, {"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": "L319"}, {"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": "L319"}, {"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": "L326"}, {"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": "L359"}, {"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": "L366"}, {"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": "L367"}, {"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": "L371"}, {"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": "L378"}, {"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": "L379"}, {"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": "L388"}, {"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": "L389"}, {"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": "L392"}, {"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": "L400"}, {"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": "L401"}, {"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": "L403"}, {"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": "L422"}, {"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": "L422"}, {"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": "L426"}, {"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": "L426"}, {"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": "L431"}, {"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": "L440"}, {"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": "L472"}, {"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": "L476"}, {"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": "L486"}, {"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": "L493"}, {"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": "L494"}, {"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": "L510"}, {"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": "L512"}, {"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": "L513"}, {"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": "L528"}, {"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": "L528"}, {"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": "L529"}, {"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": "L532"}, {"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": "L532"}, {"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": "L543"}, {"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": "L550"}, {"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": "L552"}, {"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": "L553"}, {"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": "L555"}, {"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": "L572"}, {"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": "L572"}, {"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": "L573"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L577"}, {"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": "L580"}, {"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": "L581"}, {"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": "L587"}, {"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": "L587"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L594"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L595"}, {"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": "L619"}, {"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": "L622"}, {"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": "L623"}, {"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": "L635"}, {"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": "L635"}, {"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": "L636"}, {"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": "L643"}, {"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": "L645"}, {"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": "L645"}, {"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": "L653"}, {"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": "L669"}, {"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": "L669"}, {"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": "L670"}, {"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": "L673"}, {"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": "L677"}, {"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": "L678"}, {"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": "L693"}, {"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": "L693"}, {"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": "L694"}, {"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": "L697"}, {"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": "L702"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L703"}, {"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": "L718"}, {"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": "L718"}, {"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": "L719"}, {"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": "L724"}, {"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": "L724"}, {"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": "L730"}, {"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": "L730"}, {"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": "L736"}, {"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": "L746"}, {"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": "L746"}, {"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": "L755"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/a0e2db2432e1032121af8b6f4c6940b4d2158e07d97e8b67eac40bb5828b9609.json b/backend/graphify-out/cache/ast/a0e2db2432e1032121af8b6f4c6940b4d2158e07d97e8b67eac40bb5828b9609.json new file mode 100644 index 000000000..192745c06 --- /dev/null +++ b/backend/graphify-out/cache/ast/a0e2db2432e1032121af8b6f4c6940b4d2158e07d97e8b67eac40bb5828b9609.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "label": "check_pl_json_aliases.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L1"}, {"id": "scripts_check_pl_json_aliases_snake_to_camel", "label": "snake_to_camel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43"}, {"id": "scripts_check_pl_json_aliases_iter_field_assignments", "label": "iter_field_assignments()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L48"}, {"id": "ast", "label": "AST", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L48"}, {"id": "scripts_check_pl_json_aliases_field_has_alias", "label": "field_has_alias()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61"}, {"id": "expr", "label": "expr", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61"}, {"id": "bool", "label": "bool", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61"}, {"id": "scripts_check_pl_json_aliases_main", "label": "main()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L71"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L71"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "ast", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_snake_to_camel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_snake_to_camel", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_snake_to_camel", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_iter_field_assignments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L48", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_iter_field_assignments", "target": "ast", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_field_has_alias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_field_has_alias", "target": "expr", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_field_has_alias", "target": "bool", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L71", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "int", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L71", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "scripts_check_pl_json_aliases_iter_field_assignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L82", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "scripts_check_pl_json_aliases_field_has_alias", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L87", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "scripts_check_pl_json_aliases_snake_to_camel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L88", "weight": 1.0}], "raw_calls": [{"caller_nid": "scripts_check_pl_json_aliases_snake_to_camel", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L44"}, {"caller_nid": "scripts_check_pl_json_aliases_snake_to_camel", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L45"}, {"caller_nid": "scripts_check_pl_json_aliases_snake_to_camel", "callee": "capitalize", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L45"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "walk", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L49"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "resolve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L72"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "Path", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L72"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "exists", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L77"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L78"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "read_text", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L80"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "parse", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L81"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L89"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1.json b/backend/graphify-out/cache/ast/a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1.json new file mode 100644 index 000000000..6b8716dee --- /dev/null +++ b/backend/graphify-out/cache/ast/a75ca6a0d92f93408eee00cc5053206d28a545512e4cd0f186be9e00e3346ab1.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "label": "common.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L1"}, {"id": "bx_common_dt_to_str", "label": "_dt_to_str()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11"}, {"id": "bx_common_date_to_str", "label": "_date_to_str()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L17"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L17"}, {"id": "bx_common_pagedquery", "label": "PagedQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L29"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "bx_common_apiresponse", "label": "ApiResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L36"}, {"id": "bx_common_pageddata", "label": "PagedData", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L42"}, {"id": "bx_common_pagedresponse", "label": "PagedResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L51"}, {"id": "bx_common_rationale_1", "label": "bx \u539f\u7cfb\u7edf API \u54cd\u5e94\u5305\u88c5\uff08code=0 / msg / data.rows\uff09\uff0c\u4e0e\u95e8\u6237 success_response \u5206\u79bb\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "pydantic_alias_generators", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_dt_to_str", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11", "weight": 1.0}, {"source": "bx_common_dt_to_str", "target": "datetime", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11", "weight": 1.0}, {"source": "bx_common_dt_to_str", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_date_to_str", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_common_date_to_str", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L17", "weight": 1.0}, {"source": "bx_common_date_to_str", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_pagedquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_common_pagedquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_apiresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L36", "weight": 1.0}, {"source": "bx_common_apiresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_pageddata", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L42", "weight": 1.0}, {"source": "bx_common_pageddata", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "target": "bx_common_pagedresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_common_pagedresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L51", "weight": 1.0}, {"source": "bx_common_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_bx_common_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_common_dt_to_str", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L14"}, {"caller_nid": "bx_common_date_to_str", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py", "source_location": "L20"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/a8734015dfce90289a7474f6a9e1462ef981ac26d9d9a55789b56ded91c4f277.json b/backend/graphify-out/cache/ast/a8734015dfce90289a7474f6a9e1462ef981ac26d9d9a55789b56ded91c4f277.json new file mode 100644 index 000000000..05485bf4c --- /dev/null +++ b/backend/graphify-out/cache/ast/a8734015dfce90289a7474f6a9e1462ef981ac26d9d9a55789b56ded91c4f277.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"id": "pl_transport_resolve_driver_info", "label": "_resolve_driver_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70"}, {"id": "pl_transport_get_vehicle_info", "label": "_get_vehicle_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L106"}, {"id": "pl_transport_ensure_driver_access_token", "label": "_ensure_driver_access_token()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L156"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L156"}, {"id": "pl_transport_build_driver_url", "label": "_build_driver_url()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L164"}, {"id": "pl_transport_build_arrange_result", "label": "_build_arrange_result()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169"}, {"id": "transportinventorylinkread", "label": "TransportInventoryLinkRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169"}, {"id": "transportarrangeresult", "label": "TransportArrangeResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169"}, {"id": "pl_transport_list_transports", "label": "list_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"id": "transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"id": "pl_transport_create_transport", "label": "create_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242"}, {"id": "transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242"}, {"id": "transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242"}, {"id": "pl_transport_arrange_transport", "label": "arrange_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314"}, {"id": "transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314"}, {"id": "pl_transport_get_transport", "label": "get_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L491"}, {"id": "pl_transport_qrcoderesponse", "label": "QrCodeResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L506"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_generate_qrcode", "label": "generate_qrcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516"}, {"id": "pl_transport_transport_scan_feedback", "label": "transport_scan_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L549"}, {"id": "transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L549"}, {"id": "pl_transport_submit_approval", "label": "submit_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590"}, {"id": "approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590"}, {"id": "pl_transport_process_approval", "label": "process_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635"}, {"id": "approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635"}, {"id": "approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635"}, {"id": "pl_transport_get_transport_approvals", "label": "get_transport_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L697"}, {"id": "pl_transport_rationale_71", "label": "\u89e3\u6790\u53f8\u673a\u4fe1\u606f\uff1a\u4f18\u5148 pl_personnel\uff0c\u517c\u5bb9\u65e7 pl_driver\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L71"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "secrets", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_config", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L16", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L17", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L28", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L41", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_resolve_driver_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_transport_resolve_driver_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_transport_resolve_driver_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70", "weight": 1.0}, {"source": "pl_transport_resolve_driver_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L70", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_vehicle_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L106", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L106", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L106", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L106", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_ensure_driver_access_token", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_transport_ensure_driver_access_token", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_transport_ensure_driver_access_token", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_build_driver_url", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L164", "weight": 1.0}, {"source": "pl_transport_build_driver_url", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L164", "weight": 1.0}, {"source": "pl_transport_build_driver_url", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L164", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_build_arrange_result", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "pltransport", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "transportinventorylinkread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "transportarrangeresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L169", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_list_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_create_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_arrange_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrangeresult", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L314", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L491", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L491", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L491", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L491", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L491", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_qrcoderesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L506", "weight": 1.0}, {"source": "pl_transport_qrcoderesponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L506", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L516", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_transport_scan_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L549", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "transportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L549", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L549", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "approvalsubmit", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L590", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_process_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrecordread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L635", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L697", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L697", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L697", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L697", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "approvalrecordread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L697", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L722", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L722", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L722", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L722", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L722", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "pl_transport_resolve_driver_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L119", "weight": 1.0}, {"source": "pl_transport_build_arrange_result", "target": "pl_transport_build_driver_url", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L233", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L249", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L251", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_get_vehicle_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L332", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_resolve_driver_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L335", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L399", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L400", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_ensure_driver_access_token", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L449", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportinventorylinkread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L466", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_build_arrange_result", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L482", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L535", "weight": 1.0}, {"source": "pl_transport_rationale_71", "target": "pl_transport_resolve_driver_info", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L71", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_transport_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L48"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L49"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L52"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L52"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L52"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L54"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L57"}, {"caller_nid": "pl_transport_resolve_driver_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L73"}, {"caller_nid": "pl_transport_resolve_driver_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L73"}, {"caller_nid": "pl_transport_resolve_driver_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89"}, {"caller_nid": "pl_transport_resolve_driver_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L107"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L107"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L124"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L124"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135"}, {"caller_nid": "pl_transport_ensure_driver_access_token", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L157"}, {"caller_nid": "pl_transport_ensure_driver_access_token", "callee": "token_urlsafe", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L159"}, {"caller_nid": "pl_transport_build_driver_url", "callee": "rstrip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L165"}, {"caller_nid": "pl_transport_build_arrange_result", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L174"}, {"caller_nid": "pl_transport_list_transports", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L199"}, {"caller_nid": "pl_transport_list_transports", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L199"}, {"caller_nid": "pl_transport_list_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L200"}, {"caller_nid": "pl_transport_list_transports", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L207"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L208"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L209"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L210"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L215"}, {"caller_nid": "pl_transport_list_transports", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L229"}, {"caller_nid": "pl_transport_list_transports", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L231"}, {"caller_nid": "pl_transport_list_transports", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L231"}, {"caller_nid": "pl_transport_list_transports", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L231"}, {"caller_nid": "pl_transport_list_transports", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L231"}, {"caller_nid": "pl_transport_create_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L247"}, {"caller_nid": "pl_transport_create_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L247"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L252"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L278"}, {"caller_nid": "pl_transport_create_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L283"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L284"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L291"}, {"caller_nid": "pl_transport_create_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L294"}, {"caller_nid": "pl_transport_create_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L294"}, {"caller_nid": "pl_transport_create_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L303"}, {"caller_nid": "pl_transport_create_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L304"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L320"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L320"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L323"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L323"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L329"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L337"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L340"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L348"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L362"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L370"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L370"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L379"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L383"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L401"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L405"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L409"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L427"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L429"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L430"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L437"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L454"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "sync_dibang_for_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L456"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L477"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L480"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L481"}, {"caller_nid": "pl_transport_get_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L496"}, {"caller_nid": "pl_transport_get_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L496"}, {"caller_nid": "pl_transport_get_transport", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L497"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L522"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L522"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L523"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L526"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L526"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L533"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L555"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L555"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L566"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L573"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L578"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L579"}, {"caller_nid": "pl_transport_submit_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L596"}, {"caller_nid": "pl_transport_submit_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L596"}, {"caller_nid": "pl_transport_submit_approval", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L597"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L600"}, {"caller_nid": "pl_transport_submit_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L606"}, {"caller_nid": "pl_transport_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L606"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L608"}, {"caller_nid": "pl_transport_submit_approval", "callee": "PlTransportApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L610"}, {"caller_nid": "pl_transport_submit_approval", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L611"}, {"caller_nid": "pl_transport_submit_approval", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L621"}, {"caller_nid": "pl_transport_submit_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L624"}, {"caller_nid": "pl_transport_submit_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L625"}, {"caller_nid": "pl_transport_process_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L641"}, {"caller_nid": "pl_transport_process_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L641"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L644"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L644"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L653"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L656"}, {"caller_nid": "pl_transport_process_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L663"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L666"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L666"}, {"caller_nid": "pl_transport_process_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L671"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L671"}, {"caller_nid": "pl_transport_process_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L686"}, {"caller_nid": "pl_transport_process_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L687"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L702"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L702"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L705"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L705"}, {"caller_nid": "pl_transport_get_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L724"}, {"caller_nid": "pl_transport_get_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L724"}, {"caller_nid": "pl_transport_get_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L733"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/af128e12a18f5d90266daf4795d7cf7822a097293122aca7f9ed8dd37c6231cf.json b/backend/graphify-out/cache/ast/af128e12a18f5d90266daf4795d7cf7822a097293122aca7f9ed8dd37c6231cf.json new file mode 100644 index 000000000..3ec818220 --- /dev/null +++ b/backend/graphify-out/cache/ast/af128e12a18f5d90266daf4795d7cf7822a097293122aca7f9ed8dd37c6231cf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_get_inventory_ledger", "label": "get_inventory_ledger()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47"}, {"id": "pl_inventory_set_warning_threshold", "label": "set_warning_threshold()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76"}, {"id": "inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76"}, {"id": "pl_inventory_list_warnings", "label": "list_warnings()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124"}, {"id": "inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124"}, {"id": "pl_inventory_update_warning", "label": "update_warning()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"id": "inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142"}, {"id": "pl_inventory_list_transactions", "label": "list_transactions()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181"}, {"id": "pl_inventory_get_summary", "label": "get_summary()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222"}, {"id": "inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222"}, {"id": "pl_inventory_list_document_reminders", "label": "list_document_reminders()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283"}, {"id": "documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283"}, {"id": "pl_inventory_update_document_reminder", "label": "update_document_reminder()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301"}, {"id": "documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301"}, {"id": "pl_inventory_check_document_expiry", "label": "check_document_expiry()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L341"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_inventory_ledger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L47", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_set_warning_threshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "inventorywarningthreshold", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "pl_inventory_set_warning_threshold", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L76", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_inventory_list_warnings", "target": "inventorywarningread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "inventorywarningupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "pl_inventory_update_warning", "target": "inventorywarningread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L142", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_transactions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "date", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "date", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L222", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_document_reminders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "pl_inventory_list_document_reminders", "target": "documentreminderread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L283", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_document_reminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "documentreminderupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "pl_inventory_update_document_reminder", "target": "documentreminderread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L301", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L331", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L332", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_check_document_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L341", "weight": 1.0}, {"source": "pl_inventory_check_document_expiry", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L341", "weight": 1.0}, {"source": "pl_inventory_get_inventory_ledger", "target": "inventoryledgerresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L67", "weight": 1.0}, {"source": "pl_inventory_list_transactions", "target": "inventorytransactionresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L213", "weight": 1.0}, {"source": "pl_inventory_get_summary", "target": "inventorysummaryresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L274", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L54"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L54"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L55"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L61"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L63"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L65"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L81"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L81"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L84"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L84"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L98"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L99"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L112"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L114"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L129"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L129"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L130"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L138"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L138"}, {"caller_nid": "pl_inventory_update_warning", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L148"}, {"caller_nid": "pl_inventory_update_warning", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L148"}, {"caller_nid": "pl_inventory_update_warning", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151"}, {"caller_nid": "pl_inventory_update_warning", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L151"}, {"caller_nid": "pl_inventory_update_warning", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L161"}, {"caller_nid": "pl_inventory_update_warning", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L167"}, {"caller_nid": "pl_inventory_update_warning", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L170"}, {"caller_nid": "pl_inventory_update_warning", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L171"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L191"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L191"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L192"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L209"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L211"}, {"caller_nid": "pl_inventory_get_summary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L230"}, {"caller_nid": "pl_inventory_get_summary", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L230"}, {"caller_nid": "pl_inventory_get_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L232"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L253"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L254"}, {"caller_nid": "pl_inventory_get_summary", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L263"}, {"caller_nid": "pl_inventory_get_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L265"}, {"caller_nid": "pl_inventory_get_summary", "callee": "InventorySummaryItem", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L265"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L288"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L288"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L289"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L297"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L297"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L307"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L307"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L310"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L310"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L320"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L326"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L327"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L343"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L344"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L348"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L363"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L363"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L373"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L374"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L386"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L394"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L394"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L404"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L405"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L417"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L425"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L425"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L435"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L436"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L448"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L451"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104.json b/backend/graphify-out/cache/ast/b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104.json new file mode 100644 index 000000000..fa66f760c --- /dev/null +++ b/backend/graphify-out/cache/ast/b04c5636779ecbcb3082eabdbf42db846cc31f7376129845820c6a4c1e829104.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "label": "check_pl_json_aliases.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L1"}, {"id": "scripts_check_pl_json_aliases_snake_to_camel", "label": "snake_to_camel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43"}, {"id": "scripts_check_pl_json_aliases_iter_field_assignments", "label": "iter_field_assignments()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L48"}, {"id": "scripts_check_pl_json_aliases_field_has_alias", "label": "field_has_alias()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61"}, {"id": "scripts_check_pl_json_aliases_main", "label": "main()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L71"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "ast", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_snake_to_camel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_iter_field_assignments", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_field_has_alias", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_scripts_check_pl_json_aliases_py", "target": "scripts_check_pl_json_aliases_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L71", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "scripts_check_pl_json_aliases_iter_field_assignments", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L82", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "scripts_check_pl_json_aliases_field_has_alias", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L87", "weight": 1.0}, {"source": "scripts_check_pl_json_aliases_main", "target": "scripts_check_pl_json_aliases_snake_to_camel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L88", "weight": 1.0}], "raw_calls": [{"caller_nid": "scripts_check_pl_json_aliases_snake_to_camel", "callee": "split", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L44"}, {"caller_nid": "scripts_check_pl_json_aliases_snake_to_camel", "callee": "join", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L45"}, {"caller_nid": "scripts_check_pl_json_aliases_snake_to_camel", "callee": "capitalize", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L45"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "walk", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L49"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L50"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L53"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L53"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L55"}, {"caller_nid": "scripts_check_pl_json_aliases_iter_field_assignments", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L57"}, {"caller_nid": "scripts_check_pl_json_aliases_field_has_alias", "callee": "isinstance", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L64"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "resolve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L72"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "Path", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L72"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "exists", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L77"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L78"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "read_text", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L80"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "parse", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L81"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "str", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L81"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L89"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "print", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L94"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "print", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L96"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "print", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L97"}, {"caller_nid": "scripts_check_pl_json_aliases_main", "callee": "print", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py", "source_location": "L100"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b6ebf35ce73d7f82e5b27b28f7faadfd7d55147834d548ab13d4ac2d1c56479b.json b/backend/graphify-out/cache/ast/b6ebf35ce73d7f82e5b27b28f7faadfd7d55147834d548ab13d4ac2d1c56479b.json new file mode 100644 index 000000000..643dc7498 --- /dev/null +++ b/backend/graphify-out/cache/ast/b6ebf35ce73d7f82e5b27b28f7faadfd7d55147834d548ab13d4ac2d1c56479b.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_init_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_init_py", "target": "app_api_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_init_py", "target": "app_api_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py", "source_location": "L5", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b8ab972594722107edceb08efbe943d9a60fd77bcd4bfbce5a499d9a8086bf95.json b/backend/graphify-out/cache/ast/b8ab972594722107edceb08efbe943d9a60fd77bcd4bfbce5a499d9a8086bf95.json new file mode 100644 index 000000000..29e49c0f9 --- /dev/null +++ b/backend/graphify-out/cache/ast/b8ab972594722107edceb08efbe943d9a60fd77bcd4bfbce5a499d9a8086bf95.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "label": "base_data.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L1"}, {"id": "pl_base_data_carrierbase", "label": "CarrierBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_base_data_carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L22"}, {"id": "pl_base_data_carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L26"}, {"id": "pl_base_data_carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L35"}, {"id": "pl_base_data_vehiclepersonnelrow", "label": "VehiclePersonnelRow", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L53"}, {"id": "pl_base_data_certrow", "label": "CertRow", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L64"}, {"id": "pl_base_data_certread", "label": "CertRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L74"}, {"id": "pl_base_data_vehiclebase", "label": "VehicleBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L90"}, {"id": "pl_base_data_vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L102"}, {"id": "pl_base_data_vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L108"}, {"id": "pl_base_data_vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L121"}, {"id": "pl_base_data_vehicledetailread", "label": "VehicleDetailRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L135"}, {"id": "pl_base_data_personnelbase", "label": "PersonnelBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L146"}, {"id": "pl_base_data_personnelcreate", "label": "PersonnelCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L155"}, {"id": "pl_base_data_personnelupdate", "label": "PersonnelUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L160"}, {"id": "pl_base_data_personnelread", "label": "PersonnelRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L171"}, {"id": "pl_base_data_personneldetailread", "label": "PersonnelDetailRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L185"}, {"id": "pl_base_data_driverbase", "label": "DriverBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L195"}, {"id": "pl_base_data_drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L208"}, {"id": "pl_base_data_driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L212"}, {"id": "pl_base_data_driverread", "label": "DriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L226"}, {"id": "pl_base_data_vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L244"}, {"id": "pl_base_data_vehicledriverread", "label": "VehicleDriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L251"}, {"id": "pl_base_data_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e Schema\uff08\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u4eba\u5458\u3001\u8bc1\u4e66\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_carrierbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_base_data_carrierbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_carriercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L22", "weight": 1.0}, {"source": "pl_base_data_carriercreate", "target": "pl_base_data_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_carrierupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L26", "weight": 1.0}, {"source": "pl_base_data_carrierupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L26", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_carrierread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_carrierread", "target": "pl_base_data_carrierbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehiclepersonnelrow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L53", "weight": 1.0}, {"source": "pl_base_data_vehiclepersonnelrow", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L53", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_certrow", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L64", "weight": 1.0}, {"source": "pl_base_data_certrow", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L64", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_certread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L74", "weight": 1.0}, {"source": "pl_base_data_certread", "target": "pl_base_data_certrow", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L74", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehiclebase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_base_data_vehiclebase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehiclecreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_base_data_vehiclecreate", "target": "pl_base_data_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehicleupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L108", "weight": 1.0}, {"source": "pl_base_data_vehicleupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L108", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehicleread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_base_data_vehicleread", "target": "pl_base_data_vehiclebase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehicledetailread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L135", "weight": 1.0}, {"source": "pl_base_data_vehicledetailread", "target": "pl_base_data_vehicleread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L135", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_personnelbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_base_data_personnelbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L146", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_personnelcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_base_data_personnelcreate", "target": "pl_base_data_personnelbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_personnelupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L160", "weight": 1.0}, {"source": "pl_base_data_personnelupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L160", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_personnelread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L171", "weight": 1.0}, {"source": "pl_base_data_personnelread", "target": "pl_base_data_personnelbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L171", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_personneldetailread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L185", "weight": 1.0}, {"source": "pl_base_data_personneldetailread", "target": "pl_base_data_personnelread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L185", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_driverbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L195", "weight": 1.0}, {"source": "pl_base_data_driverbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L195", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_drivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L208", "weight": 1.0}, {"source": "pl_base_data_drivercreate", "target": "pl_base_data_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L208", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_driverupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L212", "weight": 1.0}, {"source": "pl_base_data_driverupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L212", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_driverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L226", "weight": 1.0}, {"source": "pl_base_data_driverread", "target": "pl_base_data_driverbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L226", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehicledrivercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L244", "weight": 1.0}, {"source": "pl_base_data_vehicledrivercreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L244", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "target": "pl_base_data_vehicledriverread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L251", "weight": 1.0}, {"source": "pl_base_data_vehicledriverread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L251", "weight": 1.0}, {"source": "pl_base_data_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_base_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/b90231a5edf5c39fb64002c0c543fc1d3ba91b821cf11b33e8e87e37870dc87b.json b/backend/graphify-out/cache/ast/b90231a5edf5c39fb64002c0c543fc1d3ba91b821cf11b33e8e87e37870dc87b.json new file mode 100644 index 000000000..e9c384be5 --- /dev/null +++ b/backend/graphify-out/cache/ast/b90231a5edf5c39fb64002c0c543fc1d3ba91b821cf11b33e8e87e37870dc87b.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": "L48"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L48"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L48"}, {"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": "L73"}, {"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": "L78"}, {"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": "L87"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L87"}, {"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": "L108"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L108"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L108"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L108"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L108"}, {"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": "L172"}, {"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": "L201"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L201"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L201"}, {"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": "L280"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L280"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L280"}, {"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": "L382"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L382"}, {"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": "L491"}, {"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": "L534"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L534"}, {"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": "L596"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L596"}, {"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": "L632"}, {"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": "L656"}, {"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": "L681"}, {"id": "pl_plan_rationale_49", "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": "L49"}, {"id": "pl_plan_rationale_285", "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": "L285"}, {"id": "pl_plan_rationale_602", "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": "L602"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "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": "L22", "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": "L23", "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": "L35", "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": "L48", "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": "L48", "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": "L48", "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": "L73", "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": "L73", "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": "L73", "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": "L73", "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": "L78", "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": "L78", "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": "L78", "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": "L87", "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": "L87", "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": "L87", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L108", "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": "L172", "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": "L172", "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": "L172", "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": "L172", "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": "L201", "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": "L201", "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": "L201", "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": "L201", "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": "L201", "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": "L280", "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": "L280", "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": "L280", "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": "L280", "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": "L280", "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": "L382", "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": "L382", "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": "L382", "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": "L382", "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": "L382", "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": "L491", "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": "L491", "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": "L491", "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": "L491", "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": "L491", "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": "L534", "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": "L534", "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": "L534", "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": "L534", "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": "L534", "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": "L534", "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": "L596", "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": "L596", "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": "L596", "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": "L596", "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": "L596", "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": "L596", "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": "L632", "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": "L632", "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": "L632", "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": "L632", "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": "L632", "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": "L656", "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": "L656", "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": "L656", "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": "L656", "weight": 1.0}, {"source": "pl_plan_archive_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": "L656", "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": "L681", "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": "L681", "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": "L681", "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": "L681", "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": "L712", "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": "L712", "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": "L712", "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": "L712", "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": "L712", "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": "L168", "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": "L209", "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": "L214", "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": "L216", "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": "L288", "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": "L290", "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": "L293", "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": "L402", "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": "L405", "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": "L407", "weight": 1.0}, {"source": "pl_plan_rationale_49", "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": "L49", "weight": 1.0}, {"source": "pl_plan_rationale_285", "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": "L285", "weight": 1.0}, {"source": "pl_plan_rationale_602", "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": "L602", "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": "L50"}, {"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": "L51"}, {"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": "L55"}, {"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": "L55"}, {"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": "L55"}, {"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": "L57"}, {"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": "L60"}, {"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": "L75"}, {"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": "L84"}, {"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": "L89"}, {"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": "L123"}, {"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": "L123"}, {"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": "L124"}, {"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": "L131"}, {"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": "L132"}, {"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": "L133"}, {"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": "L133"}, {"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": "L133"}, {"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": "L138"}, {"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": "L153"}, {"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": "L153"}, {"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": "L153"}, {"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": "L162"}, {"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": "L166"}, {"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": "L166"}, {"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": "L166"}, {"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": "L166"}, {"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": "L177"}, {"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": "L177"}, {"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": "L178"}, {"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": "L178"}, {"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": "L178"}, {"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": "L183"}, {"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": "L183"}, {"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": "L183"}, {"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": "L187"}, {"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": "L206"}, {"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": "L206"}, {"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": "L217"}, {"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": "L256"}, {"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": "L261"}, {"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": "L270"}, {"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": "L272"}, {"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": "L274"}, {"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": "L275"}, {"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": "L286"}, {"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": "L287"}, {"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": "L287"}, {"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": "L294"}, {"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": "L327"}, {"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": "L334"}, {"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": "L335"}, {"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": "L339"}, {"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": "L346"}, {"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": "L347"}, {"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": "L356"}, {"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": "L357"}, {"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": "L360"}, {"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": "L368"}, {"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": "L369"}, {"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": "L371"}, {"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": "L390"}, {"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": "L390"}, {"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": "L394"}, {"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": "L394"}, {"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": "L399"}, {"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": "L408"}, {"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": "L440"}, {"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": "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": "L454"}, {"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": "L461"}, {"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": "L462"}, {"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": "L478"}, {"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": "L480"}, {"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": "L481"}, {"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": "L496"}, {"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": "L496"}, {"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": "L497"}, {"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": "L500"}, {"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": "L500"}, {"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": "L511"}, {"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": "L518"}, {"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": "L520"}, {"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": "L521"}, {"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": "L523"}, {"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": "L540"}, {"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": "L540"}, {"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": "L541"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L545"}, {"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": "L548"}, {"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": "L549"}, {"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": "L555"}, {"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": "L555"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L562"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L563"}, {"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": "L587"}, {"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": "L590"}, {"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": "L591"}, {"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": "L603"}, {"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": "L603"}, {"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": "L604"}, {"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": "L611"}, {"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": "L613"}, {"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": "L613"}, {"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": "L621"}, {"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": "L637"}, {"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": "L637"}, {"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": "L638"}, {"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": "L641"}, {"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": "L645"}, {"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": "L646"}, {"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": "L661"}, {"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": "L661"}, {"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": "L662"}, {"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": "L665"}, {"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": "L670"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L671"}, {"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": "L686"}, {"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": "L686"}, {"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": "L687"}, {"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": "L692"}, {"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": "L692"}, {"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": "L698"}, {"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": "L698"}, {"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": "L704"}, {"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": "L714"}, {"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": "L714"}, {"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": "L723"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/bff496010a367bb7df8b7d8a61e58adeab587a8ee515b26270f70bf1e9b666eb.json b/backend/graphify-out/cache/ast/bff496010a367bb7df8b7d8a61e58adeab587a8ee515b26270f70bf1e9b666eb.json new file mode 100644 index 000000000..b7ac86f40 --- /dev/null +++ b/backend/graphify-out/cache/ast/bff496010a367bb7df8b7d8a61e58adeab587a8ee515b26270f70bf1e9b666eb.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": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L34"}, {"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": "L64"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"id": "freightsettlementlistresponse", "label": "FreightSettlementListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L64"}, {"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": "L97"}, {"id": "freightsettlementcreate", "label": "FreightSettlementCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L97"}, {"id": "freightsettlementread", "label": "FreightSettlementRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L97"}, {"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": "L157"}, {"id": "freightsettlementwithtransports", "label": "FreightSettlementWithTransports", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L157"}, {"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": "L194"}, {"id": "freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L194"}, {"id": "pl_freight_submit_settlement", "label": "submit_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219"}, {"id": "pl_freight_approve_settlement", "label": "approve_settlement()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L243"}, {"id": "pl_freight_create_voucher", "label": "create_voucher()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"id": "remittancevouchercreate", "label": "RemittanceVoucherCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"id": "remittancevoucherread", "label": "RemittanceVoucherRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267"}, {"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": "L296"}, {"id": "plfreightsettlement", "label": "PlFreightSettlement", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L321"}], "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": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L4", "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": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L7", "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": "L8", "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": "L10", "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": "L11", "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": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L13", "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": "L14", "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": "L20", "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": "L34", "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": "L34", "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": "L34", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L64", "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": "L97", "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": "L97", "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": "L97", "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": "L97", "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": "L97", "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": "L157", "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": "L157", "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": "L157", "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": "L157", "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": "L157", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "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": "L194", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_submit_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "pl_freight_submit_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": "L219", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_approve_settlement", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "pl_freight_approve_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": "L243", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_freight_py", "target": "pl_freight_create_voucher", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "target": "remittancevouchercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "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": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "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": "L267", "weight": 1.0}, {"source": "pl_freight_create_voucher", "target": "remittancevoucherread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L267", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L296", "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": "L321", "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": "L321", "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": "L321", "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": "L321", "weight": 1.0}, {"source": "pl_freight_get_settlement", "target": "plfreightsettlement", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L321", "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": "L88", "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": "L120", "weight": 1.0}, {"source": "pl_freight_create_settlement", "target": "plfreightsettlement", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L122", "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": "L36"}, {"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": "L37"}, {"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": "L40"}, {"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": "L40"}, {"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": "L40"}, {"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": "L42"}, {"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": "L45"}, {"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": "L72"}, {"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": "L72"}, {"caller_nid": "pl_freight_list_settlements", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L73"}, {"caller_nid": "pl_freight_list_settlements", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L82"}, {"caller_nid": "pl_freight_list_settlements", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L84"}, {"caller_nid": "pl_freight_list_settlements", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"caller_nid": "pl_freight_list_settlements", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L86"}, {"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": "L102"}, {"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": "L102"}, {"caller_nid": "pl_freight_create_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L106"}, {"caller_nid": "pl_freight_create_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L108"}, {"caller_nid": "pl_freight_create_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L116"}, {"caller_nid": "pl_freight_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L123"}, {"caller_nid": "pl_freight_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L131"}, {"caller_nid": "pl_freight_create_settlement", "callee": "PlFreightSettlementTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L135"}, {"caller_nid": "pl_freight_create_settlement", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L136"}, {"caller_nid": "pl_freight_create_settlement", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L144"}, {"caller_nid": "pl_freight_create_settlement", "callee": "commit", "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_create_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L147"}, {"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": "L162"}, {"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": "L162"}, {"caller_nid": "pl_freight_get_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L164"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L168"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L178"}, {"caller_nid": "pl_freight_get_settlement", "callee": "in_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L179"}, {"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": "L183"}, {"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": "L200"}, {"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": "L200"}, {"caller_nid": "pl_freight_update_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L201"}, {"caller_nid": "pl_freight_update_settlement", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L203"}, {"caller_nid": "pl_freight_update_settlement", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L204"}, {"caller_nid": "pl_freight_update_settlement", "callee": "commit", "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_update_settlement", "callee": "refresh", "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_submit_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": "L224"}, {"caller_nid": "pl_freight_submit_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": "L224"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L225"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L228"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L232"}, {"caller_nid": "pl_freight_submit_settlement", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L233"}, {"caller_nid": "pl_freight_approve_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": "L248"}, {"caller_nid": "pl_freight_approve_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": "L248"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "_get_settlement", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L249"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L252"}, {"caller_nid": "pl_freight_approve_settlement", "callee": "commit", "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_approve_settlement", "callee": "refresh", "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_create_voucher", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L272"}, {"caller_nid": "pl_freight_create_voucher", "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": "L272"}, {"caller_nid": "pl_freight_create_voucher", "callee": "PlRemittanceVoucher", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L274"}, {"caller_nid": "pl_freight_create_voucher", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L275"}, {"caller_nid": "pl_freight_create_voucher", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L280"}, {"caller_nid": "pl_freight_create_voucher", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L285"}, {"caller_nid": "pl_freight_create_voucher", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L286"}, {"caller_nid": "pl_freight_create_voucher", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L287"}, {"caller_nid": "pl_freight_create_voucher", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L289"}, {"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": "L301"}, {"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": "L301"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L304"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L304"}, {"caller_nid": "pl_freight_list_vouchers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L310"}, {"caller_nid": "pl_freight_get_settlement", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L323"}, {"caller_nid": "pl_freight_get_settlement", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L323"}, {"caller_nid": "pl_freight_get_settlement", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py", "source_location": "L332"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/c06d9a9562a2cb07b77133c2f3af934b75e6c8b6230befacb613d4f080a4267a.json b/backend/graphify-out/cache/ast/c06d9a9562a2cb07b77133c2f3af934b75e6c8b6230befacb613d4f080a4267a.json new file mode 100644 index 000000000..2882ef83f --- /dev/null +++ b/backend/graphify-out/cache/ast/c06d9a9562a2cb07b77133c2f3af934b75e6c8b6230befacb613d4f080a4267a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_transportbase", "label": "TransportBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38"}, {"id": "pl_transport_transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43"}, {"id": "pl_transport_transportinventorylinkread", "label": "TransportInventoryLinkRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61"}, {"id": "pl_transport_transportupdate", "label": "TransportUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71"}, {"id": "pl_transport_transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95"}, {"id": "pl_transport_transportarrangeresult", "label": "TransportArrangeResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114"}, {"id": "pl_transport_transportwithplans", "label": "TransportWithPlans", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123"}, {"id": "pl_transport_transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132"}, {"id": "pl_transport_publictransportfeedback", "label": "PublicTransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141"}, {"id": "pl_transport_publictransportplanproductread", "label": "PublicTransportPlanProductRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L147"}, {"id": "pl_transport_publictransportpageread", "label": "PublicTransportPageRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155"}, {"id": "pl_transport_approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L176"}, {"id": "pl_transport_approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L181"}, {"id": "pl_transport_approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L187"}, {"id": "pl_transport_transportlistquery", "label": "TransportListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L206"}, {"id": "pl_transport_transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L218"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_transport_transportbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_transport_transportcreate", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "pl_transport_transportarrange", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportinventorylinkread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61", "weight": 1.0}, {"source": "pl_transport_transportinventorylinkread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_transport_transportupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_transport_transportread", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrangeresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_transport_transportarrangeresult", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportwithplans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123", "weight": 1.0}, {"source": "pl_transport_transportwithplans", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132", "weight": 1.0}, {"source": "pl_transport_transportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_transport_publictransportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportplanproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L147", "weight": 1.0}, {"source": "pl_transport_publictransportplanproductread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L147", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportpageread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_transport_publictransportpageread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "pl_transport_approvalsubmit", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L176", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_transport_approvalrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L181", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrecordread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "pl_transport_approvalrecordread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L187", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_transport_transportlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L206", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L218", "weight": 1.0}, {"source": "pl_transport_transportlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L218", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/c88a917677bcb18c0d2c906d6953a49090d09736c1989ed4c68cab8566183135.json b/backend/graphify-out/cache/ast/c88a917677bcb18c0d2c906d6953a49090d09736c1989ed4c68cab8566183135.json new file mode 100644 index 000000000..4ac97cd43 --- /dev/null +++ b/backend/graphify-out/cache/ast/c88a917677bcb18c0d2c906d6953a49090d09736c1989ed4c68cab8566183135.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_inventoryread", "label": "InventoryRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_inventory_inventorytransactionread", "label": "InventoryTransactionRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36"}, {"id": "pl_inventory_inventorywarningread", "label": "InventoryWarningRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57"}, {"id": "pl_inventory_inventorywarningupdate", "label": "InventoryWarningUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72"}, {"id": "pl_inventory_inventorywarningthreshold", "label": "InventoryWarningThreshold", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78"}, {"id": "pl_inventory_documentreminderread", "label": "DocumentReminderRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90"}, {"id": "pl_inventory_documentreminderupdate", "label": "DocumentReminderUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L108"}, {"id": "pl_inventory_inventoryledgerquery", "label": "InventoryLedgerQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L119"}, {"id": "pl_inventory_inventoryledgerresponse", "label": "InventoryLedgerResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L126"}, {"id": "pl_inventory_inventorytransactionquery", "label": "InventoryTransactionQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L131"}, {"id": "pl_inventory_inventorytransactionresponse", "label": "InventoryTransactionResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L141"}, {"id": "pl_inventory_inventorysummaryquery", "label": "InventorySummaryQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L146"}, {"id": "pl_inventory_inventorysummaryitem", "label": "InventorySummaryItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L154"}, {"id": "pl_inventory_inventorysummaryresponse", "label": "InventorySummaryResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163"}, {"id": "pl_inventory_transportstatsquery", "label": "TransportStatsQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L167"}, {"id": "pl_inventory_transportstatsitem", "label": "TransportStatsItem", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L174"}, {"id": "pl_inventory_transportstatsresponse", "label": "TransportStatsResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L181"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_inventory_inventoryread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_inventory_inventorywarningread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "pl_inventory_inventorywarningupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L72", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorywarningthreshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "pl_inventory_inventorywarningthreshold", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L78", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_documentreminderread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_inventory_documentreminderread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_documentreminderupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L108", "weight": 1.0}, {"source": "pl_inventory_documentreminderupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L108", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryledgerquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L119", "weight": 1.0}, {"source": "pl_inventory_inventoryledgerquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L119", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventoryledgerresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L126", "weight": 1.0}, {"source": "pl_inventory_inventoryledgerresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L126", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L131", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L131", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorytransactionresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_inventory_inventorytransactionresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L146", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L146", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L154", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_inventorysummaryresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163", "weight": 1.0}, {"source": "pl_inventory_inventorysummaryresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L163", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L167", "weight": 1.0}, {"source": "pl_inventory_transportstatsquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L167", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsitem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L174", "weight": 1.0}, {"source": "pl_inventory_transportstatsitem", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L174", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_inventory_py", "target": "pl_inventory_transportstatsresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L181", "weight": 1.0}, {"source": "pl_inventory_transportstatsresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py", "source_location": "L181", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/cf0cf77d88cab539153bc98f33dcab3cc367ef3e8382def478b69d85cfd8e7da.json b/backend/graphify-out/cache/ast/cf0cf77d88cab539153bc98f33dcab3cc367ef3e8382def478b69d85cfd8e7da.json new file mode 100644 index 000000000..597134c6c --- /dev/null +++ b/backend/graphify-out/cache/ast/cf0cf77d88cab539153bc98f33dcab3cc367ef3e8382def478b69d85cfd8e7da.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": "L43"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L43"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L43"}, {"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": "L68"}, {"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": "L73"}, {"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": "L82"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L82"}, {"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": "L103"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L103"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L103"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L103"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L103"}, {"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": "L167"}, {"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": "L196"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L196"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L196"}, {"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": "L275"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L275"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L275"}, {"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": "L374"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L374"}, {"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": "L476"}, {"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": "L505"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L505"}, {"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": "L572"}, {"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": "L596"}, {"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": "L621"}, {"id": "pl_plan_rationale_44", "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": "L44"}, {"id": "pl_plan_rationale_280", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u5408\u540c\u4ea7\u54c1 + \u53ef\u9009\u8fd0\u8f93\u5b89\u6392\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L280"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L21", "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": "L22", "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": "L32", "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": "L43", "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": "L43", "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": "L43", "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": "L68", "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": "L68", "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": "L68", "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": "L68", "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": "L73", "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": "L73", "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": "L73", "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": "L82", "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": "L82", "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": "L82", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L103", "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": "L167", "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": "L167", "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": "L167", "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": "L167", "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": "L196", "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": "L196", "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": "L196", "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": "L196", "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": "L196", "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": "L275", "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": "L275", "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": "L275", "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": "L275", "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": "L275", "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": "L374", "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": "L374", "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": "L374", "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": "L374", "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": "L374", "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": "L476", "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": "L476", "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": "L476", "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": "L476", "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": "L476", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L572", "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": "L572", "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": "L572", "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": "L572", "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": "L572", "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": "L596", "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": "L596", "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": "L596", "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": "L596", "weight": 1.0}, {"source": "pl_plan_archive_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": "L596", "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": "L621", "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": "L621", "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": "L621", "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": "L621", "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": "L652", "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": "L652", "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": "L652", "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": "L652", "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": "L652", "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": "L163", "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": "L204", "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": "L209", "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": "L211", "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": "L285", "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": "L287", "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": "L290", "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": "L394", "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": "L397", "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": "L399", "weight": 1.0}, {"source": "pl_plan_rationale_44", "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": "L44", "weight": 1.0}, {"source": "pl_plan_rationale_280", "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": "L280", "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": "L45"}, {"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": "L46"}, {"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": "L50"}, {"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": "L50"}, {"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": "L50"}, {"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": "L52"}, {"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": "L55"}, {"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": "L70"}, {"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": "L79"}, {"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": "L84"}, {"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": "L118"}, {"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": "L118"}, {"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": "L119"}, {"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": "L126"}, {"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": "L127"}, {"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": "L128"}, {"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": "L128"}, {"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": "L128"}, {"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": "L133"}, {"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": "L148"}, {"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": "L148"}, {"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": "L148"}, {"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": "L157"}, {"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": "L161"}, {"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": "L161"}, {"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": "L161"}, {"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": "L161"}, {"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": "L172"}, {"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": "L172"}, {"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": "L173"}, {"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": "L173"}, {"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": "L173"}, {"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": "L178"}, {"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": "L178"}, {"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": "L178"}, {"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": "L182"}, {"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": "L201"}, {"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": "L201"}, {"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": "L212"}, {"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": "L251"}, {"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": "L256"}, {"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": "L265"}, {"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": "L267"}, {"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": "L269"}, {"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": "L270"}, {"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": "L283"}, {"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": "L284"}, {"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": "L284"}, {"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": "L291"}, {"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": "L324"}, {"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": "L331"}, {"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": "L332"}, {"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": "L336"}, {"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": "L345"}, {"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": "L346"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "create_transport_for_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L349"}, {"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": "L360"}, {"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": "L361"}, {"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": "L363"}, {"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": "L382"}, {"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": "L382"}, {"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": "L386"}, {"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": "L386"}, {"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": "L391"}, {"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": "L400"}, {"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": "L432"}, {"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": "L436"}, {"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": "L446"}, {"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": "L447"}, {"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": "L463"}, {"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": "L465"}, {"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": "L466"}, {"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": "L481"}, {"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": "L481"}, {"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": "L482"}, {"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": "L485"}, {"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": "L485"}, {"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": "L494"}, {"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": "L511"}, {"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": "L511"}, {"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": "L512"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L516"}, {"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": "L519"}, {"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": "L520"}, {"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": "L526"}, {"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": "L526"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L533"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L534"}, {"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": "L558"}, {"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": "L561"}, {"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": "L562"}, {"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": "L577"}, {"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": "L577"}, {"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": "L578"}, {"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": "L581"}, {"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": "L585"}, {"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": "L586"}, {"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": "L601"}, {"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": "L601"}, {"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": "L602"}, {"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": "L605"}, {"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": "L610"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L611"}, {"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": "L626"}, {"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": "L626"}, {"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": "L627"}, {"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": "L632"}, {"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": "L632"}, {"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": "L638"}, {"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": "L638"}, {"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": "L644"}, {"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": "L654"}, {"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": "L654"}, {"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": "L663"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d13cb040f83290330e353841ac9ae1ca5ab80bfa6192a7140d3d83a841d0dc7a.json b/backend/graphify-out/cache/ast/d13cb040f83290330e353841ac9ae1ca5ab80bfa6192a7140d3d83a841d0dc7a.json new file mode 100644 index 000000000..7741639b4 --- /dev/null +++ b/backend/graphify-out/cache/ast/d13cb040f83290330e353841ac9ae1ca5ab80bfa6192a7140d3d83a841d0dc7a.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": "L282"}, {"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": "L336"}, {"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": "L363"}, {"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": "L422"}, {"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": "L441"}, {"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": "L470"}, {"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": "L501"}, {"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": "L521"}, {"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": "L548"}, {"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": "L580"}, {"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": "L609"}, {"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": "L634"}, {"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_283", "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": "L283"}, {"id": "models_pl_models_rationale_337", "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": "L337"}, {"id": "models_pl_models_rationale_423", "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": "L423"}, {"id": "models_pl_models_rationale_442", "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": "L442"}, {"id": "models_pl_models_rationale_471", "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": "L471"}, {"id": "models_pl_models_rationale_502", "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": "L502"}, {"id": "models_pl_models_rationale_522", "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": "L522"}, {"id": "models_pl_models_rationale_581", "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": "L581"}, {"id": "models_pl_models_rationale_610", "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": "L610"}, {"id": "models_pl_models_rationale_635", "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": "L635"}], "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": "L282", "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": "L282", "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": "L336", "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": "L336", "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": "L363", "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": "L363", "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": "L422", "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": "L422", "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": "L441", "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": "L441", "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": "L470", "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": "L470", "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": "L501", "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": "L501", "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": "L521", "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": "L521", "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": "L548", "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": "L548", "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": "L580", "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": "L580", "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": "L609", "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": "L609", "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": "L634", "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": "L634", "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_283", "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": "L283", "weight": 1.0}, {"source": "models_pl_models_rationale_337", "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": "L337", "weight": 1.0}, {"source": "models_pl_models_rationale_423", "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": "L423", "weight": 1.0}, {"source": "models_pl_models_rationale_442", "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": "L442", "weight": 1.0}, {"source": "models_pl_models_rationale_471", "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": "L471", "weight": 1.0}, {"source": "models_pl_models_rationale_502", "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": "L502", "weight": 1.0}, {"source": "models_pl_models_rationale_522", "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": "L522", "weight": 1.0}, {"source": "models_pl_models_rationale_581", "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": "L581", "weight": 1.0}, {"source": "models_pl_models_rationale_610", "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": "L610", "weight": 1.0}, {"source": "models_pl_models_rationale_635", "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": "L635", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d24f23a85b29f305809098a2c08e2a82a2cd667abacc3f57d83c192f5e1bc380.json b/backend/graphify-out/cache/ast/d24f23a85b29f305809098a2c08e2a82a2cd667abacc3f57d83c192f5e1bc380.json new file mode 100644 index 000000000..80294617b --- /dev/null +++ b/backend/graphify-out/cache/ast/d24f23a85b29f305809098a2c08e2a82a2cd667abacc3f57d83c192f5e1bc380.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": "L23"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L23"}, {"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": "L31"}, {"id": "planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"id": "decimal", "label": "Decimal", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L31"}, {"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": "L41"}, {"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": "L45"}, {"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": "L56"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L56"}, {"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": "L102"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L102"}, {"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": "L147"}, {"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": "L171"}, {"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": "L182"}, {"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": "L209"}, {"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": "L259"}, {"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": "L277"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"id": "plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L277"}, {"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": "L337"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L337"}, {"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": "L373"}, {"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": "L480"}, {"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": "L519"}, {"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": "L541"}, {"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": "L563"}, {"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": "L670"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py", "source_location": "L670"}, {"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": "L692"}, {"id": "services_pl_plan_service_rationale_383", "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": "L383"}, {"id": "services_pl_plan_service_rationale_529", "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": "L529"}], "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": "L20", "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": "L23", "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": "L23", "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": "L23", "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": "L23", "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": "L31", "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": "L31", "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": "L31", "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": "L41", "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": "L41", "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": "L41", "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": "L45", "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": "L45", "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": "L45", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L56", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L147", "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": "L147", "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": "L147", "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": "L147", "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": "L147", "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": "L147", "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": "L147", "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": "L171", "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": "L171", "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": "L182", "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": "L182", "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": "L182", "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": "L182", "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": "L182", "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": "L182", "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": "L182", "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": "L182", "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": "L209", "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": "L209", "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": "L209", "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": "L209", "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": "L209", "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": "L209", "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": "L259", "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": "L259", "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": "L259", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L337", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L373", "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": "L480", "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": "L480", "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": "L480", "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": "L480", "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": "L480", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L519", "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": "L541", "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": "L541", "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": "L541", "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": "L541", "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": "L541", "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": "L541", "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": "L541", "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": "L541", "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": "L563", "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": "L563", "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": "L563", "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": "L563", "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": "L563", "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": "L563", "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": "L563", "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": "L563", "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": "L563", "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": "L670", "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": "L670", "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": "L692", "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": "L692", "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": "L692", "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": "L33", "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": "L42", "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": "L66", "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": "L67", "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": "L69", "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": "L82", "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": "L155", "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": "L297", "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": "L311", "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": "L321", "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": "L393", "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": "L414", "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": "L431", "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": "L432", "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": "L530", "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": "L552", "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": "L586", "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": "L588", "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": "L603", "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": "L614", "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": "L619", "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": "L682", "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": "L684", "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": "L693", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_383", "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": "L383", "weight": 1.0}, {"source": "services_pl_plan_service_rationale_529", "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": "L529", "weight": 1.0}], "raw_calls": [{"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": "L70"}, {"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": "L110"}, {"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": "L110"}, {"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": "L122"}, {"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": "L122"}, {"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": "L122"}, {"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": "L129"}, {"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": "L129"}, {"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": "L134"}, {"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": "L134"}, {"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": "L144"}, {"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": "L176"}, {"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": "L196"}, {"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": "L196"}, {"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": "L218"}, {"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": "L218"}, {"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": "L227"}, {"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": "L229"}, {"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": "L244"}, {"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": "L246"}, {"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": "L247"}, {"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": "L248"}, {"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": "L250"}, {"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": "L253"}, {"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": "L255"}, {"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": "L260"}, {"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": "L261"}, {"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": "L263"}, {"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": "L263"}, {"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": "L263"}, {"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": "L264"}, {"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": "L265"}, {"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": "L286"}, {"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": "L286"}, {"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": "L295"}, {"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": "L304"}, {"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": "L304"}, {"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": "L404"}, {"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": "L404"}, {"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": "L433"}, {"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": "L442"}, {"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": "L443"}, {"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": "L444"}, {"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": "L445"}, {"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": "L446"}, {"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": "L490"}, {"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": "L490"}, {"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": "L501"}, {"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": "L501"}, {"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": "L575"}, {"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": "L575"}, {"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": "L584"}, {"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": "L596"}, {"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": "L596"}, {"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": "L618"}, {"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": "L620"}, {"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": "L645"}, {"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": "L647"}, {"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": "L648"}, {"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": "L649"}, {"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": "L672"}, {"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": "L674"}, {"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": "L683"}, {"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": "L686"}, {"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": "L689"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d26e40e00b56a0adb02abb794c7d8d723a51620874cb7889af6cca44a12f80c5.json b/backend/graphify-out/cache/ast/d26e40e00b56a0adb02abb794c7d8d723a51620874cb7889af6cca44a12f80c5.json new file mode 100644 index 000000000..8732d4c03 --- /dev/null +++ b/backend/graphify-out/cache/ast/d26e40e00b56a0adb02abb794c7d8d723a51620874cb7889af6cca44a12f80c5.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": "L34"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L34"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L34"}, {"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": "L59"}, {"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": "L68"}, {"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": "L77"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L77"}, {"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": "L98"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L98"}, {"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": "L167"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L167"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L167"}, {"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": "L259"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L259"}, {"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": "L361"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L361"}, {"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": "L390"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L390"}, {"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": "L457"}, {"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": "L481"}, {"id": "pl_plan_rationale_35", "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": "L35"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L20", "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": "L21", "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": "L34", "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": "L34", "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": "L34", "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": "L59", "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": "L59", "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": "L59", "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": "L59", "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": "L68", "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": "L68", "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": "L68", "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": "L77", "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": "L77", "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": "L77", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L98", "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": "L167", "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": "L167", "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": "L167", "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": "L167", "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": "L167", "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": "L259", "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": "L259", "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": "L259", "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": "L259", "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": "L259", "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": "L361", "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": "L361", "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": "L361", "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": "L361", "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": "L361", "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": "L390", "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": "L390", "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": "L390", "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": "L390", "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": "L390", "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": "L390", "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": "L457", "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": "L457", "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": "L457", "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": "L457", "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": "L457", "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": "L481", "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": "L481", "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": "L481", "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": "L481", "weight": 1.0}, {"source": "pl_plan_archive_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": "L481", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L505", "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": "L158", "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": "L175", "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": "L180", "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": "L182", "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": "L279", "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": "L282", "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": "L284", "weight": 1.0}, {"source": "pl_plan_rationale_35", "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": "L35", "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": "L36"}, {"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": "L37"}, {"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": "L41"}, {"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": "L41"}, {"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": "L41"}, {"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": "L43"}, {"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": "L46"}, {"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": "L74"}, {"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": "L79"}, {"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": "L113"}, {"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": "L113"}, {"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": "L114"}, {"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": "L121"}, {"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": "L122"}, {"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": "L123"}, {"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": "L123"}, {"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": "L123"}, {"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": "L128"}, {"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": "L143"}, {"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": "L143"}, {"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": "L143"}, {"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": "L152"}, {"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": "L156"}, {"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": "L156"}, {"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": "L156"}, {"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": "L156"}, {"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": "L172"}, {"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": "L172"}, {"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": "L183"}, {"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": "L216"}, {"caller_nid": "pl_plan_create_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L221"}, {"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": "L222"}, {"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": "L246"}, {"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": "L248"}, {"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": "L249"}, {"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": "L267"}, {"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": "L267"}, {"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": "L271"}, {"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": "L271"}, {"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": "L276"}, {"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": "L285"}, {"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": "L317"}, {"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": "L321"}, {"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": "L331"}, {"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": "L332"}, {"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": "L348"}, {"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": "L350"}, {"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": "L351"}, {"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": "L366"}, {"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": "L366"}, {"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": "L367"}, {"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": "L370"}, {"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": "L370"}, {"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": "L379"}, {"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": "L396"}, {"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": "L396"}, {"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": "L397"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L401"}, {"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": "L404"}, {"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": "L405"}, {"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": "L411"}, {"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": "L411"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L418"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L419"}, {"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": "L443"}, {"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": "L446"}, {"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": "L447"}, {"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": "L462"}, {"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": "L462"}, {"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": "L463"}, {"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": "L466"}, {"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": "L470"}, {"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": "L471"}, {"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": "L486"}, {"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": "L486"}, {"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": "L487"}, {"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": "L490"}, {"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": "L495"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L496"}, {"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": "L507"}, {"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": "L507"}, {"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": "L516"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d482de301a2a895a9d7a98d2a7f2d87cd9889e33675531bf34b0fcfb3aeb2673.json b/backend/graphify-out/cache/ast/d482de301a2a895a9d7a98d2a7f2d87cd9889e33675531bf34b0fcfb3aeb2673.json new file mode 100644 index 000000000..34a788e16 --- /dev/null +++ b/backend/graphify-out/cache/ast/d482de301a2a895a9d7a98d2a7f2d87cd9889e33675531bf34b0fcfb3aeb2673.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}, {"id": "pl_init_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - Pydantic Schema", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_plan", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L27", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_transport", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_freight", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L56", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L68", "weight": 1.0}, {"source": "pl_init_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_init_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d6862de4b5828934257ddcf0d99958a667cdf5db26e5475857d47394d3a68fd6.json b/backend/graphify-out/cache/ast/d6862de4b5828934257ddcf0d99958a667cdf5db26e5475857d47394d3a68fd6.json new file mode 100644 index 000000000..f8f4f30d3 --- /dev/null +++ b/backend/graphify-out/cache/ast/d6862de4b5828934257ddcf0d99958a667cdf5db26e5475857d47394d3a68fd6.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "label": "pl_cert_service.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L1"}, {"id": "services_pl_cert_service_list_owner_certs", "label": "list_owner_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14"}, {"id": "services_pl_cert_service_certs_to_read", "label": "certs_to_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30"}, {"id": "services_pl_cert_service_save_owner_certs", "label": "save_owner_certs()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51"}, {"id": "services_pl_cert_service_nearest_expire_date", "label": "nearest_expire_date()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L104"}, {"id": "services_pl_cert_service_resolve_owner_label", "label": "_resolve_owner_label()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L122"}, {"id": "services_pl_cert_service_scan_cert_expiry", "label": "scan_cert_expiry()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L149"}, {"id": "services_pl_cert_service_rationale_61", "label": "\u6309 cert_id upsert\uff1b\u672a\u51fa\u73b0\u5728\u5217\u8868\u4e2d\u7684\u65e7\u8bc1\u8f6f\u5220\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L61"}, {"id": "services_pl_cert_service_rationale_150", "label": "\u626b\u63cf pl_cert \u751f\u6210\u5230\u671f\u63d0\u9192\uff0c\u8fd4\u56de\u65b0\u5efa\u6761\u6570\u3002", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L150"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_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_cert_service.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_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_cert_service.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "app_schemas_pl_base_data", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_list_owner_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_certs_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L30", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_save_owner_certs", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L51", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_nearest_expire_date", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L104", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_resolve_owner_label", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L122", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_services_pl_cert_service_py", "target": "services_pl_cert_service_scan_cert_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L149", "weight": 1.0}, {"source": "services_pl_cert_service_save_owner_certs", "target": "services_pl_cert_service_list_owner_certs", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L62", "weight": 1.0}, {"source": "services_pl_cert_service_scan_cert_expiry", "target": "services_pl_cert_service_resolve_owner_label", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L178", "weight": 1.0}, {"source": "services_pl_cert_service_rationale_61", "target": "services_pl_cert_service_save_owner_certs", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L61", "weight": 1.0}, {"source": "services_pl_cert_service_rationale_150", "target": "services_pl_cert_service_scan_cert_expiry", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L150", "weight": 1.0}], "raw_calls": [{"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L18"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L18"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L18"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L18"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L25"}, {"caller_nid": "services_pl_cert_service_list_owner_certs", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L25"}, {"caller_nid": "services_pl_cert_service_certs_to_read", "callee": "CertRead", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L32"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "set", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L64"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "enumerate", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L66"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L77"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "PlCert", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L79"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L80"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L94"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L95"}, {"caller_nid": "services_pl_cert_service_save_owner_certs", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L96"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L108"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L108"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L108"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L108"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L114"}, {"caller_nid": "services_pl_cert_service_nearest_expire_date", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L116"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L127"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L127"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L127"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_cert_service_resolve_owner_label", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L138"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L151"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L152"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L152"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "isnot", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L154"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L158"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L161"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L167"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L167"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L167"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "PlDocumentReminder", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L184"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L185"}, {"caller_nid": "services_pl_cert_service_scan_cert_expiry", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py", "source_location": "L201"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d7d13d4dae7ca92cb1eceb7015f9a04cabdff2790819d816691e3fe3b701440e.json b/backend/graphify-out/cache/ast/d7d13d4dae7ca92cb1eceb7015f9a04cabdff2790819d816691e3fe3b701440e.json new file mode 100644 index 000000000..08a10e426 --- /dev/null +++ b/backend/graphify-out/cache/ast/d7d13d4dae7ca92cb1eceb7015f9a04cabdff2790819d816691e3fe3b701440e.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": "L14"}, {"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": "L34"}, {"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": "L38"}, {"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": "L59"}, {"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": "L73"}, {"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": "L103"}, {"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": "L109"}, {"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": "L138"}, {"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": "L161"}, {"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": "L170"}, {"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": "L182"}, {"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": "L197"}], "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": "L14", "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": "L14", "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": "L34", "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": "L34", "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": "L38", "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": "L38", "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": "L59", "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": "L59", "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": "L73", "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": "L73", "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": "L103", "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": "L103", "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": "L109", "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": "L109", "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": "L138", "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": "L138", "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": "L161", "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": "L161", "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": "L170", "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": "L170", "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": "L182", "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": "L182", "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": "L197", "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": "L197", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/d949b2ac48e035ba568a1b3d02a1ded1964f909cd19909c552592cc4313026e9.json b/backend/graphify-out/cache/ast/d949b2ac48e035ba568a1b3d02a1ded1964f909cd19909c552592cc4313026e9.json new file mode 100644 index 000000000..6427742c2 --- /dev/null +++ b/backend/graphify-out/cache/ast/d949b2ac48e035ba568a1b3d02a1ded1964f909cd19909c552592cc4313026e9.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "label": "config.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L1"}, {"id": "core_config_settings", "label": "Settings", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L7"}, {"id": "basesettings", "label": "BaseSettings", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "core_config_config", "label": "Config", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L156"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "pydantic_settings", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "os", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "core_config_settings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "core_config_settings", "target": "basesettings", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_core_config_py", "target": "core_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py", "source_location": "L156", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/dccb96826c535efd9531f210e8eb8411f766b6caffaadf3363520d43aee16ca8.json b/backend/graphify-out/cache/ast/dccb96826c535efd9531f210e8eb8411f766b6caffaadf3363520d43aee16ca8.json new file mode 100644 index 000000000..c08a7248a --- /dev/null +++ b/backend/graphify-out/cache/ast/dccb96826c535efd9531f210e8eb8411f766b6caffaadf3363520d43aee16ca8.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "label": "reimburse.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1"}, {"id": "bx_reimburse_tenant", "label": "_tenant()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bxusercontext", "label": "BxUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29"}, {"id": "bx_reimburse_build_details_data", "label": "_build_details_data()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33"}, {"id": "bx_reimburse_get_generated_title", "label": "get_generated_title()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54"}, {"id": "bx_reimburse_list_reimburses", "label": "list_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65"}, {"id": "bx_reimburse_my_reimburses", "label": "my_reimburses()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102"}, {"id": "bx_reimburse_my_reimburse_stats", "label": "my_reimburse_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138"}, {"id": "bx_reimburse_reimburse_status_counts", "label": "reimburse_status_counts()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L148"}, {"id": "bx_reimburse_pending_approval", "label": "pending_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157"}, {"id": "bx_reimburse_pending_approval_stats", "label": "pending_approval_stats()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183"}, {"id": "bx_reimburse_approved_by_me", "label": "approved_by_me()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193"}, {"id": "bx_reimburse_get_reimburse", "label": "get_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219"}, {"id": "bx_reimburse_get_approvals", "label": "get_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233"}, {"id": "bx_reimburse_get_approval_history", "label": "get_approval_history()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246"}, {"id": "bx_reimburse_create_reimburse", "label": "create_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259"}, {"id": "reimburseapplycreate", "label": "ReimburseApplyCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259"}, {"id": "bx_reimburse_update_reimburse", "label": "update_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293"}, {"id": "reimburseapplyupdate", "label": "ReimburseApplyUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293"}, {"id": "bx_reimburse_submit_reimburse", "label": "submit_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320"}, {"id": "bx_reimburse_approve_reimburse", "label": "approve_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335"}, {"id": "reimburseapprovalcreate", "label": "ReimburseApprovalCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335"}, {"id": "bx_reimburse_reject_reimburse", "label": "reject_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351"}, {"id": "bx_reimburse_delete_reimburse", "label": "delete_reimburse()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L367"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L1", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_bx_auth", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_core_tenant_context", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_models_bx_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_common", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_schemas_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_expense_item", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L21", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_services_bx_reimburse", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L22", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_codegen", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "app_utils_bx_date_range", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "bx_reimburse_tenant", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L29", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_build_details_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "bx_reimburse_build_details_data", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L33", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_generated_title", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L54", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_list_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L65", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburses", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L102", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_my_reimburse_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L138", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reimburse_status_counts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L148", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L148", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L148", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L157", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_pending_approval_stats", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L183", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approved_by_me", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L193", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L219", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L233", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_get_approval_history", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L246", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_create_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "reimburseapplycreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L259", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_update_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "reimburseapplyupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L293", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_submit_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L320", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_approve_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L335", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_reject_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "reimburseapprovalcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L351", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_bx_reimburse_py", "target": "bx_reimburse_delete_reimburse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bxusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L367", "weight": 1.0}, {"source": "bx_reimburse_get_generated_title", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L59", "weight": 1.0}, {"source": "bx_reimburse_list_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L76", "weight": 1.0}, {"source": "bx_reimburse_my_reimburses", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L111", "weight": 1.0}, {"source": "bx_reimburse_my_reimburse_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L142", "weight": 1.0}, {"source": "bx_reimburse_reimburse_status_counts", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L152", "weight": 1.0}, {"source": "bx_reimburse_pending_approval", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L166", "weight": 1.0}, {"source": "bx_reimburse_pending_approval_stats", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L187", "weight": 1.0}, {"source": "bx_reimburse_approved_by_me", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L202", "weight": 1.0}, {"source": "bx_reimburse_get_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L224", "weight": 1.0}, {"source": "bx_reimburse_get_approvals", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L238", "weight": 1.0}, {"source": "bx_reimburse_get_approval_history", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L251", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L264", "weight": 1.0}, {"source": "bx_reimburse_create_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L265", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L299", "weight": 1.0}, {"source": "bx_reimburse_update_reimburse", "target": "bx_reimburse_build_details_data", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L302", "weight": 1.0}, {"source": "bx_reimburse_submit_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L325", "weight": 1.0}, {"source": "bx_reimburse_approve_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L341", "weight": 1.0}, {"source": "bx_reimburse_reject_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L357", "weight": 1.0}, {"source": "bx_reimburse_delete_reimburse", "target": "bx_reimburse_tenant", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L372", "weight": 1.0}], "raw_calls": [{"caller_nid": "bx_reimburse_tenant", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_tenant", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L30"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L36"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L38"}, {"caller_nid": "bx_reimburse_build_details_data", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L42"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "generate_title", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L60"}, {"caller_nid": "bx_reimburse_get_generated_title", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L61"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L79"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L81"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L82"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L83"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L84"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L88"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L88"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L90"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L90"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L91"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L94"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L95"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L96"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L97"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L98"}, {"caller_nid": "bx_reimburse_list_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L98"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L113"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L119"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L121"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L122"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L123"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L124"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "parse_create_time_day_bounds", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L127"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L130"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L131"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "get_paged", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L132"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L133"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L134"}, {"caller_nid": "bx_reimburse_my_reimburses", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L134"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "my_apply_stats", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L143"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L144"}, {"caller_nid": "bx_reimburse_my_reimburse_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L144"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L153"}, {"caller_nid": "bx_reimburse_reimburse_status_counts", "callee": "global_status_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L153"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L167"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L178"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L179"}, {"caller_nid": "bx_reimburse_pending_approval", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L179"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L189"}, {"caller_nid": "bx_reimburse_pending_approval_stats", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L189"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "strip", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L203"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "out_rows_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L214"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L215"}, {"caller_nid": "bx_reimburse_approved_by_me", "callee": "PagedData", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L215"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L225"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L227"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L228"}, {"caller_nid": "bx_reimburse_get_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L229"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L239"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L240"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L242"}, {"caller_nid": "bx_reimburse_get_approvals", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L242"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L252"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L253"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L255"}, {"caller_nid": "bx_reimburse_get_approval_history", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L255"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "generate_apply_code", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L267"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L275"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L275"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "create_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L285"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L286"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L287"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L288"}, {"caller_nid": "bx_reimburse_create_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L289"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "update_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L308"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L312"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L313"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L314"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "build_apply_out_with_details", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L315"}, {"caller_nid": "bx_reimburse_update_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L316"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "submit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L326"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L328"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L329"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L330"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331"}, {"caller_nid": "bx_reimburse_submit_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L331"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "approve", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L342"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L344"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L345"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L346"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347"}, {"caller_nid": "bx_reimburse_approve_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L347"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "reject", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L358"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L360"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L361"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L362"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363"}, {"caller_nid": "bx_reimburse_reject_reimburse", "callee": "out_one_with_attachment_counts", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L363"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "get_by_id", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L373"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L374"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "soft_delete", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L375"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L376"}, {"caller_nid": "bx_reimburse_delete_reimburse", "callee": "ApiResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py", "source_location": "L377"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/de9246dd691279fd64dfaa209a476952e5118fc8ffd19966210eaf451e748fd8.json b/backend/graphify-out/cache/ast/de9246dd691279fd64dfaa209a476952e5118fc8ffd19966210eaf451e748fd8.json new file mode 100644 index 000000000..bfbe56288 --- /dev/null +++ b/backend/graphify-out/cache/ast/de9246dd691279fd64dfaa209a476952e5118fc8ffd19966210eaf451e748fd8.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_freightsettlementupdate", "label": "FreightSettlementUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py", "source_location": "L28"}, {"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": "L37"}, {"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": "L51"}, {"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": "L55"}, {"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": "L70"}, {"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": "L79"}, {"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": "L96"}, {"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": "L104"}], "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": "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": "L28", "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": "L28", "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": "L37", "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": "L37", "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": "L51", "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": "L51", "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": "L55", "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": "L55", "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": "L70", "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": "L70", "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": "L79", "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": "L79", "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": "L96", "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": "L96", "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": "L104", "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": "L104", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/df4b9d2fc12563530ded44e73af7c314d691f55eebd331fbaa39350a9d49a23b.json b/backend/graphify-out/cache/ast/df4b9d2fc12563530ded44e73af7c314d691f55eebd331fbaa39350a9d49a23b.json new file mode 100644 index 000000000..8556d1396 --- /dev/null +++ b/backend/graphify-out/cache/ast/df4b9d2fc12563530ded44e73af7c314d691f55eebd331fbaa39350a9d49a23b.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": "L270"}, {"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": "L317"}, {"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": "L344"}, {"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": "L402"}, {"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": "L421"}, {"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": "L450"}, {"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": "L481"}, {"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": "L501"}, {"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": "L528"}, {"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": "L560"}, {"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": "L589"}, {"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": "L614"}, {"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_271", "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": "L271"}, {"id": "models_pl_models_rationale_318", "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": "L318"}, {"id": "models_pl_models_rationale_403", "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": "L403"}, {"id": "models_pl_models_rationale_422", "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": "L422"}, {"id": "models_pl_models_rationale_451", "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": "L451"}, {"id": "models_pl_models_rationale_482", "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": "L482"}, {"id": "models_pl_models_rationale_502", "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": "L502"}, {"id": "models_pl_models_rationale_561", "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": "L561"}, {"id": "models_pl_models_rationale_590", "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": "L590"}, {"id": "models_pl_models_rationale_615", "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": "L615"}], "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": "L270", "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": "L270", "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": "L317", "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": "L317", "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": "L344", "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": "L344", "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": "L402", "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": "L402", "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": "L421", "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": "L421", "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": "L450", "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": "L450", "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": "L481", "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": "L481", "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": "L501", "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": "L501", "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": "L528", "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": "L528", "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": "L560", "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": "L560", "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": "L589", "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": "L589", "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": "L614", "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": "L614", "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_271", "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": "L271", "weight": 1.0}, {"source": "models_pl_models_rationale_318", "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": "L318", "weight": 1.0}, {"source": "models_pl_models_rationale_403", "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": "L403", "weight": 1.0}, {"source": "models_pl_models_rationale_422", "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": "L422", "weight": 1.0}, {"source": "models_pl_models_rationale_451", "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": "L451", "weight": 1.0}, {"source": "models_pl_models_rationale_482", "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": "L482", "weight": 1.0}, {"source": "models_pl_models_rationale_502", "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": "L502", "weight": 1.0}, {"source": "models_pl_models_rationale_561", "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": "L561", "weight": 1.0}, {"source": "models_pl_models_rationale_590", "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": "L590", "weight": 1.0}, {"source": "models_pl_models_rationale_615", "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": "L615", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/e22666e6db70c8e0ef4c876fcfe54cd2b0a182df7a3126c464533794fd1551fc.json b/backend/graphify-out/cache/ast/e22666e6db70c8e0ef4c876fcfe54cd2b0a182df7a3126c464533794fd1551fc.json new file mode 100644 index 000000000..1c21e48ee --- /dev/null +++ b/backend/graphify-out/cache/ast/e22666e6db70c8e0ef4c876fcfe54cd2b0a182df7a3126c464533794fd1551fc.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L30", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/e3cc60efa34d38b1f2706df637b42235cfdf1e99a002c43518eecbd1c6983634.json b/backend/graphify-out/cache/ast/e3cc60efa34d38b1f2706df637b42235cfdf1e99a002c43518eecbd1c6983634.json new file mode 100644 index 000000000..4d54bef11 --- /dev/null +++ b/backend/graphify-out/cache/ast/e3cc60efa34d38b1f2706df637b42235cfdf1e99a002c43518eecbd1c6983634.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": "L48"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L48"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L48"}, {"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": "L70"}, {"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": "L75"}, {"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": "L84"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L84"}, {"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": "L105"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L105"}, {"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": "L169"}, {"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": "L198"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L198"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L198"}, {"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": "L277"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L277"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L277"}, {"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": "L379"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L379"}, {"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": "L488"}, {"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": "L531"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L531"}, {"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": "L593"}, {"id": "planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L593"}, {"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": "L629"}, {"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": "L653"}, {"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": "L678"}, {"id": "pl_plan_rationale_49", "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": "L49"}, {"id": "pl_plan_rationale_282", "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": "L282"}, {"id": "pl_plan_rationale_599", "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": "L599"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L14", "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": "L22", "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": "L23", "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": "L35", "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": "L48", "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": "L48", "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": "L48", "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": "L70", "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": "L70", "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": "L70", "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": "L70", "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": "L75", "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": "L75", "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": "L75", "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": "L84", "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": "L84", "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": "L84", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L105", "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": "L169", "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": "L169", "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": "L169", "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": "L169", "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": "L198", "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": "L198", "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": "L198", "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": "L198", "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": "L198", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L277", "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": "L379", "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": "L379", "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": "L379", "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": "L379", "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": "L379", "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": "L488", "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": "L488", "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": "L488", "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": "L488", "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": "L488", "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": "L531", "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": "L531", "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": "L531", "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": "L531", "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": "L531", "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": "L531", "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": "L593", "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": "L593", "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": "L593", "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": "L593", "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": "L593", "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": "L593", "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": "L629", "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": "L629", "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": "L629", "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": "L629", "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": "L629", "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": "L653", "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": "L653", "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": "L653", "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": "L653", "weight": 1.0}, {"source": "pl_plan_archive_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": "L653", "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": "L678", "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": "L678", "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": "L678", "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": "L678", "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": "L709", "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": "L709", "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": "L709", "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": "L709", "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": "L709", "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": "L165", "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": "L206", "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": "L211", "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": "L213", "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": "L285", "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": "L287", "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": "L290", "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": "L399", "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": "L402", "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": "L404", "weight": 1.0}, {"source": "pl_plan_rationale_49", "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": "L49", "weight": 1.0}, {"source": "pl_plan_rationale_282", "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": "L282", "weight": 1.0}, {"source": "pl_plan_rationale_599", "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": "L599", "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": "L50"}, {"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": "L51"}, {"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": "L55"}, {"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": "L55"}, {"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": "L55"}, {"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": "L56"}, {"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": "L57"}, {"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": "L72"}, {"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": "L81"}, {"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": "L86"}, {"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": "L120"}, {"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": "L120"}, {"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": "L121"}, {"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": "L128"}, {"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": "L129"}, {"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": "L130"}, {"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": "L130"}, {"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": "L130"}, {"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": "L135"}, {"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": "L150"}, {"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": "L150"}, {"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": "L150"}, {"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": "L159"}, {"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": "L163"}, {"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": "L163"}, {"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": "L163"}, {"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": "L163"}, {"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": "L174"}, {"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": "L174"}, {"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": "L175"}, {"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": "L175"}, {"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": "L175"}, {"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": "L180"}, {"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": "L180"}, {"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": "L180"}, {"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": "L184"}, {"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": "L203"}, {"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": "L203"}, {"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": "L214"}, {"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": "L253"}, {"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": "L258"}, {"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": "L267"}, {"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": "L269"}, {"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": "L271"}, {"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": "L272"}, {"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": "L283"}, {"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": "L284"}, {"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": "L284"}, {"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": "L291"}, {"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": "L324"}, {"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": "L331"}, {"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": "L332"}, {"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": "L336"}, {"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": "L343"}, {"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": "L344"}, {"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": "L353"}, {"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": "L354"}, {"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": "L357"}, {"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": "L365"}, {"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": "L366"}, {"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": "L368"}, {"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": "L387"}, {"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": "L387"}, {"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": "L391"}, {"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": "L391"}, {"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": "L396"}, {"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": "L405"}, {"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": "L437"}, {"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": "L441"}, {"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": "L451"}, {"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": "L458"}, {"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": "L459"}, {"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": "L475"}, {"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": "L477"}, {"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": "L478"}, {"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": "L493"}, {"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": "L493"}, {"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": "L494"}, {"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": "L497"}, {"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": "L497"}, {"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": "L508"}, {"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": "L515"}, {"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": "L517"}, {"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": "L518"}, {"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": "L520"}, {"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": "L537"}, {"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": "L537"}, {"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": "L538"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L542"}, {"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": "L545"}, {"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": "L546"}, {"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": "L552"}, {"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": "L552"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L559"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L560"}, {"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": "L584"}, {"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": "L587"}, {"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": "L588"}, {"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": "L600"}, {"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": "L600"}, {"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": "L601"}, {"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": "L608"}, {"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": "L610"}, {"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": "L610"}, {"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": "L618"}, {"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": "L634"}, {"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": "L634"}, {"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": "L635"}, {"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": "L638"}, {"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": "L642"}, {"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": "L643"}, {"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": "L658"}, {"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": "L658"}, {"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": "L659"}, {"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": "L662"}, {"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": "L667"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L668"}, {"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": "L683"}, {"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": "L683"}, {"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": "L684"}, {"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": "L689"}, {"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": "L689"}, {"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": "L695"}, {"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": "L695"}, {"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": "L701"}, {"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": "L711"}, {"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": "L711"}, {"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": "L720"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/e3ef38585158eb49b7ffcac9cbe2e1d4046a0d6c38746050865756de13f85269.json b/backend/graphify-out/cache/ast/e3ef38585158eb49b7ffcac9cbe2e1d4046a0d6c38746050865756de13f85269.json new file mode 100644 index 000000000..5c38adb05 --- /dev/null +++ b/backend/graphify-out/cache/ast/e3ef38585158eb49b7ffcac9cbe2e1d4046a0d6c38746050865756de13f85269.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "label": "inventory.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L1"}, {"id": "pl_inventory_get_inventory_ledger", "label": "get_inventory_ledger()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L48"}, {"id": "pl_inventory_set_warning_threshold", "label": "set_warning_threshold()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L77"}, {"id": "pl_inventory_list_warnings", "label": "list_warnings()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L125"}, {"id": "pl_inventory_update_warning", "label": "update_warning()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L143"}, {"id": "pl_inventory_list_transactions", "label": "list_transactions()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L182"}, {"id": "pl_inventory_get_summary", "label": "get_summary()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L223"}, {"id": "pl_inventory_list_document_reminders", "label": "list_document_reminders()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L284"}, {"id": "pl_inventory_update_document_reminder", "label": "update_document_reminder()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L302"}, {"id": "pl_inventory_check_document_expiry", "label": "check_document_expiry()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L338"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_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/inventory.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_schemas_pl_inventory", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L20", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "app_services_pl_cert_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L37", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_inventory_ledger", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L48", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_set_warning_threshold", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L77", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_warnings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L125", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_warning", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L143", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_transactions", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L182", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_get_summary", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L223", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_list_document_reminders", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L284", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_update_document_reminder", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L302", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_inventory_py", "target": "pl_inventory_check_document_expiry", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L338", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L55"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L55"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L56"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L56"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L62"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L62"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L64"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L66"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L66"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L66"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L66"}, {"caller_nid": "pl_inventory_get_inventory_ledger", "callee": "InventoryLedgerResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L68"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L82"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L82"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L85"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L85"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L85"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "PlInventory", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L99"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L100"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L113"}, {"caller_nid": "pl_inventory_set_warning_threshold", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L115"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L130"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L130"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L131"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L131"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L137"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L139"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L139"}, {"caller_nid": "pl_inventory_list_warnings", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L139"}, {"caller_nid": "pl_inventory_update_warning", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L149"}, {"caller_nid": "pl_inventory_update_warning", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L149"}, {"caller_nid": "pl_inventory_update_warning", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L152"}, {"caller_nid": "pl_inventory_update_warning", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L152"}, {"caller_nid": "pl_inventory_update_warning", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L152"}, {"caller_nid": "pl_inventory_update_warning", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L162"}, {"caller_nid": "pl_inventory_update_warning", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L168"}, {"caller_nid": "pl_inventory_update_warning", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L171"}, {"caller_nid": "pl_inventory_update_warning", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L172"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L192"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L192"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L193"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L193"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L199"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L202"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L205"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L208"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L210"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L212"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L212"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L212"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L212"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L212"}, {"caller_nid": "pl_inventory_list_transactions", "callee": "InventoryTransactionResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L214"}, {"caller_nid": "pl_inventory_get_summary", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L231"}, {"caller_nid": "pl_inventory_get_summary", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L231"}, {"caller_nid": "pl_inventory_get_summary", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L233"}, {"caller_nid": "pl_inventory_get_summary", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L233"}, {"caller_nid": "pl_inventory_get_summary", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L241"}, {"caller_nid": "pl_inventory_get_summary", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L243"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L254"}, {"caller_nid": "pl_inventory_get_summary", "callee": "Decimal", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L255"}, {"caller_nid": "pl_inventory_get_summary", "callee": "abs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L261"}, {"caller_nid": "pl_inventory_get_summary", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L264"}, {"caller_nid": "pl_inventory_get_summary", "callee": "append", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L266"}, {"caller_nid": "pl_inventory_get_summary", "callee": "InventorySummaryItem", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L266"}, {"caller_nid": "pl_inventory_get_summary", "callee": "InventorySummaryResponse", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L275"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L289"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L289"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L290"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L290"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L296"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "all", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L298"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L298"}, {"caller_nid": "pl_inventory_list_document_reminders", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L298"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L308"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L308"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L311"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "filter", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L311"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L311"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L321"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L327"}, {"caller_nid": "pl_inventory_update_document_reminder", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L328"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "scan_cert_expiry", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L340"}, {"caller_nid": "pl_inventory_check_document_expiry", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py", "source_location": "L341"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/ef3d753062d6e9c4a1687a0e7e2ab3acc3b663254feb0b25fd103a74ee00abd4.json b/backend/graphify-out/cache/ast/ef3d753062d6e9c4a1687a0e7e2ab3acc3b663254feb0b25fd103a74ee00abd4.json new file mode 100644 index 000000000..f070466ab --- /dev/null +++ b/backend/graphify-out/cache/ast/ef3d753062d6e9c4a1687a0e7e2ab3acc3b663254feb0b25fd103a74ee00abd4.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_transportbase", "label": "TransportBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L37"}, {"id": "pl_transport_transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L42"}, {"id": "pl_transport_transportupdate", "label": "TransportUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L59"}, {"id": "pl_transport_transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L83"}, {"id": "pl_transport_transportwithplans", "label": "TransportWithPlans", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L102"}, {"id": "pl_transport_transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L111"}, {"id": "pl_transport_approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L125"}, {"id": "pl_transport_approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L130"}, {"id": "pl_transport_approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L136"}, {"id": "pl_transport_transportlistquery", "label": "TransportListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155"}, {"id": "pl_transport_transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L167"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_transport_transportbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L37", "weight": 1.0}, {"source": "pl_transport_transportcreate", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L37", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L42", "weight": 1.0}, {"source": "pl_transport_transportarrange", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L59", "weight": 1.0}, {"source": "pl_transport_transportupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L59", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L83", "weight": 1.0}, {"source": "pl_transport_transportread", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L83", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportwithplans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_transport_transportwithplans", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L102", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L111", "weight": 1.0}, {"source": "pl_transport_transportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L111", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L125", "weight": 1.0}, {"source": "pl_transport_approvalsubmit", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L125", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L130", "weight": 1.0}, {"source": "pl_transport_approvalrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L130", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrecordread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L136", "weight": 1.0}, {"source": "pl_transport_approvalrecordread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L136", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_transport_transportlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L155", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L167", "weight": 1.0}, {"source": "pl_transport_transportlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L167", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/f09f85cf2d2b21f214a2dd51d860a62e3e08ff03b2ee94feba62052f9b4137db.json b/backend/graphify-out/cache/ast/f09f85cf2d2b21f214a2dd51d860a62e3e08ff03b2ee94feba62052f9b4137db.json new file mode 100644 index 000000000..1c21e48ee --- /dev/null +++ b/backend/graphify-out/cache/ast/f09f85cf2d2b21f214a2dd51d860a62e3e08ff03b2ee94feba62052f9b4137db.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L30", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/f757ba2146a9987184da032114841feff2b4e3232c5dd6a1d6a5d7635988d28a.json b/backend/graphify-out/cache/ast/f757ba2146a9987184da032114841feff2b4e3232c5dd6a1d6a5d7635988d28a.json new file mode 100644 index 000000000..ee1eb7982 --- /dev/null +++ b/backend/graphify-out/cache/ast/f757ba2146a9987184da032114841feff2b4e3232c5dd6a1d6a5d7635988d28a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "label": "base_data.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}, {"id": "pl_base_data_list_carriers", "label": "list_carriers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57"}, {"id": "carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57"}, {"id": "pl_base_data_create_carrier", "label": "create_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88"}, {"id": "carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88"}, {"id": "pl_base_data_get_carrier", "label": "get_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113"}, {"id": "pl_base_data_update_carrier", "label": "update_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124"}, {"id": "carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124"}, {"id": "pl_base_data_delete_carrier", "label": "delete_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143"}, {"id": "plcarrier", "label": "PlCarrier", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155"}, {"id": "pl_base_data_vehicle_to_read", "label": "_vehicle_to_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175"}, {"id": "vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175"}, {"id": "pl_base_data_vehicle_to_detail", "label": "_vehicle_to_detail()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188"}, {"id": "vehicledetailread", "label": "VehicleDetailRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188"}, {"id": "pl_base_data_list_vehicles", "label": "list_vehicles()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206"}, {"id": "pl_base_data_create_vehicle", "label": "create_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247"}, {"id": "vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247"}, {"id": "pl_base_data_get_vehicle", "label": "get_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312"}, {"id": "pl_base_data_update_vehicle", "label": "update_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323"}, {"id": "vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323"}, {"id": "pl_base_data_delete_vehicle", "label": "delete_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L376"}, {"id": "pl_base_data_personnel_to_read", "label": "_personnel_to_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408"}, {"id": "plpersonnel", "label": "PlPersonnel", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408"}, {"id": "personnelread", "label": "PersonnelRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408"}, {"id": "pl_base_data_personnel_to_detail", "label": "_personnel_to_detail()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417"}, {"id": "personneldetailread", "label": "PersonnelDetailRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417"}, {"id": "pl_base_data_list_personnel", "label": "list_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431"}, {"id": "pl_base_data_create_personnel", "label": "create_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463"}, {"id": "personnelcreate", "label": "PersonnelCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463"}, {"id": "pl_base_data_get_personnel", "label": "get_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L505"}, {"id": "pl_base_data_update_personnel", "label": "update_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516"}, {"id": "personnelupdate", "label": "PersonnelUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516"}, {"id": "pl_base_data_delete_personnel", "label": "delete_personnel()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L554"}, {"id": "pl_base_data_personnel_to_driver_read", "label": "_personnel_to_driver_read()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L586"}, {"id": "driverread", "label": "DriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L586"}, {"id": "pl_base_data_list_drivers", "label": "list_drivers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L605"}, {"id": "pl_base_data_create_driver", "label": "create_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632"}, {"id": "drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632"}, {"id": "pl_base_data_get_driver", "label": "get_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L657"}, {"id": "pl_base_data_update_driver", "label": "update_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668"}, {"id": "driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668"}, {"id": "pl_base_data_delete_driver", "label": "delete_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L693"}, {"id": "pl_base_data_bind_vehicle_driver", "label": "bind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L711"}, {"id": "vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L711"}, {"id": "pl_base_data_unbind_vehicle_driver", "label": "unbind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L741"}, {"id": "pl_base_data_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e API\uff08\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u4eba\u5458\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L19", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_services_pl_cert_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L36", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_services_pl_personnel_service", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L42", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_carriers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "carrierread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L57", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "carriercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L88", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L113", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "carrierupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L124", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L143", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "plcarrier", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L155", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_vehicle_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_read", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_read", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_read", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_read", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L175", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_vehicle_to_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "plvehicle", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "vehicledetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_vehicles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "vehicleread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L206", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "vehiclecreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "vehicledetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "vehicledetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "vehicleupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "vehicledetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L323", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L376", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L376", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L376", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L376", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "plvehicle", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_personnel_to_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408", "weight": 1.0}, {"source": "pl_base_data_personnel_to_read", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408", "weight": 1.0}, {"source": "pl_base_data_personnel_to_read", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408", "weight": 1.0}, {"source": "pl_base_data_personnel_to_read", "target": "plpersonnel", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408", "weight": 1.0}, {"source": "pl_base_data_personnel_to_read", "target": "personnelread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L408", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_personnel_to_detail", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "plpersonnel", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "personneldetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "personnelread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L431", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "personnelcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "personneldetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L463", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L505", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L505", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L505", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L505", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "personneldetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L505", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "personnelupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "personneldetailread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L516", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L554", "weight": 1.0}, {"source": "pl_base_data_delete_personnel", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L554", "weight": 1.0}, {"source": "pl_base_data_delete_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L554", "weight": 1.0}, {"source": "pl_base_data_delete_personnel", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L554", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_personnel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "plpersonnel", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L566", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_personnel_to_driver_read", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L586", "weight": 1.0}, {"source": "pl_base_data_personnel_to_driver_read", "target": "plpersonnel", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L586", "weight": 1.0}, {"source": "pl_base_data_personnel_to_driver_read", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L586", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_drivers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L605", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L605", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L605", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L605", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "driverread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L605", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "drivercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L632", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L657", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L657", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L657", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L657", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L657", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "driverupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L668", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L693", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L693", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_bind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L711", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "vehicledrivercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L711", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L711", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L711", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_unbind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L741", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L741", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L741", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L741", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "plcarrier", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "pl_base_data_vehicle_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L197", "weight": 1.0}, {"source": "pl_base_data_vehicle_to_detail", "target": "vehicledetailread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L198", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "pl_base_data_vehicle_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L241", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "plvehicle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "pl_base_data_vehicle_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L308", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "pl_base_data_vehicle_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "pl_base_data_vehicle_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L372", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "pl_base_data_personnel_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L420", "weight": 1.0}, {"source": "pl_base_data_personnel_to_detail", "target": "personneldetailread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L424", "weight": 1.0}, {"source": "pl_base_data_list_personnel", "target": "pl_base_data_personnel_to_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L459", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "plpersonnel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L470", "weight": 1.0}, {"source": "pl_base_data_create_personnel", "target": "pl_base_data_personnel_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L501", "weight": 1.0}, {"source": "pl_base_data_get_personnel", "target": "pl_base_data_personnel_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L512", "weight": 1.0}, {"source": "pl_base_data_update_personnel", "target": "pl_base_data_personnel_to_detail", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L550", "weight": 1.0}, {"source": "pl_base_data_personnel_to_driver_read", "target": "driverread", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L587", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L628", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "plpersonnel", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L639", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L653", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L664", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "pl_base_data_personnel_to_driver_read", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L689", "weight": 1.0}, {"source": "pl_base_data_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_base_data_list_carriers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L63"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L64"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L74"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L75"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L75"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L75"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L76"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L76"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L76"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L80"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L81"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L82"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L93"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L93"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L96"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L106"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L107"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L108"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L118"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L119"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L131"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L137"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L138"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L148"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L148"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L149"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L152"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L157"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L157"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L166"}, {"caller_nid": "pl_base_data_vehicle_to_read", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L180"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "load_vehicle_personnel_summaries", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L191"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L192"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "load_vehicle_personnel_rows", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L193"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "certs_to_read", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L194"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "list_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L195"}, {"caller_nid": "pl_base_data_vehicle_to_detail", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L199"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L214"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L214"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L215"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L230"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L232"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L233"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L233"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L233"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "load_vehicle_personnel_summaries", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L237"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L241"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L252"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L252"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L255"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L255"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L263"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L266"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L278"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L279"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "save_vehicle_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L282"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L290"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L299"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L301"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L304"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L307"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L317"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L317"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L318"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L329"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L329"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L330"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L334"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L338"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "save_vehicle_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L345"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L354"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L363"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L365"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L368"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L371"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L381"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L381"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L382"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L385"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L390"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L390"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L399"}, {"caller_nid": "pl_base_data_personnel_to_read", "callee": "nearest_expire_date", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L411"}, {"caller_nid": "pl_base_data_personnel_to_read", "callee": "model_validate", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "certs_to_read", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L421"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "list_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L422"}, {"caller_nid": "pl_base_data_personnel_to_detail", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L425"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L437"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L437"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L438"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L448"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L449"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L449"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L449"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L450"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L454"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L455"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L455"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L455"}, {"caller_nid": "pl_base_data_list_personnel", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L456"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L468"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L468"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L471"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L482"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "flush", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L483"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L486"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L495"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L497"}, {"caller_nid": "pl_base_data_create_personnel", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L500"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L510"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L510"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L511"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L522"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L522"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L523"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L526"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L528"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "save_owner_certs", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L535"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L544"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "rollback", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L546"}, {"caller_nid": "pl_base_data_update_personnel", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L549"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L559"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L559"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L560"}, {"caller_nid": "pl_base_data_delete_personnel", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L563"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L568"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L568"}, {"caller_nid": "pl_base_data_get_personnel", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L577"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L610"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L610"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L611"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L618"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L619"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L619"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L619"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L620"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L624"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L625"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L625"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L625"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L626"}, {"caller_nid": "pl_base_data_create_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L637"}, {"caller_nid": "pl_base_data_create_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L637"}, {"caller_nid": "pl_base_data_create_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L640"}, {"caller_nid": "pl_base_data_create_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L650"}, {"caller_nid": "pl_base_data_create_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L651"}, {"caller_nid": "pl_base_data_create_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L652"}, {"caller_nid": "pl_base_data_get_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L662"}, {"caller_nid": "pl_base_data_get_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L662"}, {"caller_nid": "pl_base_data_get_driver", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L663"}, {"caller_nid": "pl_base_data_update_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L674"}, {"caller_nid": "pl_base_data_update_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L674"}, {"caller_nid": "pl_base_data_update_driver", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L675"}, {"caller_nid": "pl_base_data_update_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L687"}, {"caller_nid": "pl_base_data_update_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L688"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L698"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L698"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "_get_personnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L699"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L702"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L716"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L716"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L719"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L719"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "PlVehiclePersonnel", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L725"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L726"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L735"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L736"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L746"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L746"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L748"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L748"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L758"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L758"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L768"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/f7a5b28b653aaf013aa0bbd1cdb43b11b2d131bb0f01347f05dd6e833a70ae4a.json b/backend/graphify-out/cache/ast/f7a5b28b653aaf013aa0bbd1cdb43b11b2d131bb0f01347f05dd6e833a70ae4a.json new file mode 100644 index 000000000..1c21e48ee --- /dev/null +++ b/backend/graphify-out/cache/ast/f7a5b28b653aaf013aa0bbd1cdb43b11b2d131bb0f01347f05dd6e833a70ae4a.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_base", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_models_init_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py", "source_location": "L30", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/f903ec589442ac603f75d7562e36231fb621278515e1a66d53024537e2b773c3.json b/backend/graphify-out/cache/ast/f903ec589442ac603f75d7562e36231fb621278515e1a66d53024537e2b773c3.json new file mode 100644 index 000000000..dc4d923c1 --- /dev/null +++ b/backend/graphify-out/cache/ast/f903ec589442ac603f75d7562e36231fb621278515e1a66d53024537e2b773c3.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L38"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L38"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L38"}, {"id": "pl_transport_get_vehicle_info", "label": "_get_vehicle_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L62"}, {"id": "pl_transport_list_transports", "label": "list_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89"}, {"id": "transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89"}, {"id": "pl_transport_create_transport", "label": "create_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144"}, {"id": "transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144"}, {"id": "transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144"}, {"id": "pl_transport_arrange_transport", "label": "arrange_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216"}, {"id": "transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216"}, {"id": "pl_transport_get_transport", "label": "get_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L330"}, {"id": "pl_transport_qrcoderesponse", "label": "QrCodeResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L345"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_config", "label": "Config", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L351"}, {"id": "pl_transport_generate_qrcode", "label": "generate_qrcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359"}, {"id": "pl_transport_transport_scan_feedback", "label": "transport_scan_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L392"}, {"id": "transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L392"}, {"id": "pl_transport_submit_approval", "label": "submit_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433"}, {"id": "approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433"}, {"id": "pl_transport_process_approval", "label": "process_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478"}, {"id": "approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478"}, {"id": "approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478"}, {"id": "pl_transport_get_transport_approvals", "label": "get_transport_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L23", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_vehicle_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L62", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L62", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L62", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_list_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L89", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_create_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L144", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_arrange_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L330", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L330", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L330", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L330", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L330", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_qrcoderesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L345", "weight": 1.0}, {"source": "pl_transport_qrcoderesponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L345", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L351", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L355", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L359", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_transport_scan_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L392", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "transportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L392", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L392", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "approvalsubmit", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L433", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_process_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrecordread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L478", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "approvalrecordread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L540", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L135", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L151", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L153", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_get_vehicle_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L234", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L266", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L378", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_transport_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L40"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L41"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L44"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L44"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L44"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L46"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L49"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L74"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L74"}, {"caller_nid": "pl_transport_list_transports", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L101"}, {"caller_nid": "pl_transport_list_transports", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L101"}, {"caller_nid": "pl_transport_list_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L102"}, {"caller_nid": "pl_transport_list_transports", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L109"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L110"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L111"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L112"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L117"}, {"caller_nid": "pl_transport_list_transports", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L131"}, {"caller_nid": "pl_transport_list_transports", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_list_transports", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_list_transports", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_list_transports", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L133"}, {"caller_nid": "pl_transport_create_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L149"}, {"caller_nid": "pl_transport_create_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L149"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L154"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L180"}, {"caller_nid": "pl_transport_create_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L185"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L186"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L193"}, {"caller_nid": "pl_transport_create_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L196"}, {"caller_nid": "pl_transport_create_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L196"}, {"caller_nid": "pl_transport_create_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L205"}, {"caller_nid": "pl_transport_create_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L206"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L222"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L222"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L225"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L225"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L231"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L237"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L237"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L239"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L242"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L250"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L268"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L272"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L276"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L277"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L277"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L279"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L296"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L299"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L300"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L307"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L319"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L320"}, {"caller_nid": "pl_transport_get_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L335"}, {"caller_nid": "pl_transport_get_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L335"}, {"caller_nid": "pl_transport_get_transport", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L336"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L365"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L365"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L366"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L369"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L369"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L376"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L398"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L398"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L406"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L409"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L416"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L421"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L422"}, {"caller_nid": "pl_transport_submit_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L439"}, {"caller_nid": "pl_transport_submit_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L439"}, {"caller_nid": "pl_transport_submit_approval", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L440"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L443"}, {"caller_nid": "pl_transport_submit_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L449"}, {"caller_nid": "pl_transport_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L449"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L451"}, {"caller_nid": "pl_transport_submit_approval", "callee": "PlTransportApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L453"}, {"caller_nid": "pl_transport_submit_approval", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L454"}, {"caller_nid": "pl_transport_submit_approval", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L464"}, {"caller_nid": "pl_transport_submit_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L467"}, {"caller_nid": "pl_transport_submit_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L468"}, {"caller_nid": "pl_transport_process_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L484"}, {"caller_nid": "pl_transport_process_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L484"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L487"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L487"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L496"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L499"}, {"caller_nid": "pl_transport_process_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L506"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L509"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L509"}, {"caller_nid": "pl_transport_process_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L514"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L514"}, {"caller_nid": "pl_transport_process_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L529"}, {"caller_nid": "pl_transport_process_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L530"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L545"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L545"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L548"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L548"}, {"caller_nid": "pl_transport_get_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L567"}, {"caller_nid": "pl_transport_get_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L567"}, {"caller_nid": "pl_transport_get_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L576"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/f9de01c8cf21570b79172ac5eed7af7462ca4d211568a60b3bf630bd80d3a396.json b/backend/graphify-out/cache/ast/f9de01c8cf21570b79172ac5eed7af7462ca4d211568a60b3bf630bd80d3a396.json new file mode 100644 index 000000000..c9c22a046 --- /dev/null +++ b/backend/graphify-out/cache/ast/f9de01c8cf21570b79172ac5eed7af7462ca4d211568a60b3bf630bd80d3a396.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "label": "base_data.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}, {"id": "pl_base_data_list_carriers", "label": "list_carriers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "carrierread", "label": "CarrierRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35"}, {"id": "pl_base_data_create_carrier", "label": "create_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66"}, {"id": "carriercreate", "label": "CarrierCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66"}, {"id": "pl_base_data_get_carrier", "label": "get_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L91"}, {"id": "pl_base_data_update_carrier", "label": "update_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102"}, {"id": "carrierupdate", "label": "CarrierUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102"}, {"id": "pl_base_data_delete_carrier", "label": "delete_carrier()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L121"}, {"id": "plcarrier", "label": "PlCarrier", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133"}, {"id": "pl_base_data_list_vehicles", "label": "list_vehicles()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154"}, {"id": "vehicleread", "label": "VehicleRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154"}, {"id": "pl_base_data_create_vehicle", "label": "create_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188"}, {"id": "vehiclecreate", "label": "VehicleCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188"}, {"id": "pl_base_data_get_vehicle", "label": "get_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229"}, {"id": "pl_base_data_update_vehicle", "label": "update_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240"}, {"id": "vehicleupdate", "label": "VehicleUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240"}, {"id": "pl_base_data_delete_vehicle", "label": "delete_vehicle()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L259"}, {"id": "plvehicle", "label": "PlVehicle", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L271"}, {"id": "pl_base_data_list_drivers", "label": "list_drivers()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292"}, {"id": "driverread", "label": "DriverRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292"}, {"id": "pl_base_data_create_driver", "label": "create_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319"}, {"id": "drivercreate", "label": "DriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319"}, {"id": "pl_base_data_get_driver", "label": "get_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L349"}, {"id": "pl_base_data_update_driver", "label": "update_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360"}, {"id": "driverupdate", "label": "DriverUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360"}, {"id": "pl_base_data_delete_driver", "label": "delete_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379"}, {"id": "pldriver", "label": "PlDriver", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L391"}, {"id": "pl_base_data_bind_vehicle_driver", "label": "bind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412"}, {"id": "vehicledrivercreate", "label": "VehicleDriverCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412"}, {"id": "pl_base_data_unbind_vehicle_driver", "label": "unbind_vehicle_driver()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L441"}, {"id": "pl_base_data_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u7ba1\u7406 - \u57fa\u7840\u6570\u636e API\uff08\u627f\u8fd0\u5546\u3001\u8f66\u8f86\u3001\u53f8\u673a\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L5", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L10", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_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/base_data.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "app_schemas_pl", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_carriers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "pl_base_data_list_carriers", "target": "carrierread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L35", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "carriercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L66", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L91", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L91", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "carrierupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "pl_base_data_update_carrier", "target": "carrierread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L102", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L121", "weight": 1.0}, {"source": "pl_base_data_delete_carrier", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L121", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_carrier", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133", "weight": 1.0}, {"source": "pl_base_data_get_carrier", "target": "plcarrier", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L133", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_vehicles", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_base_data_list_vehicles", "target": "vehicleread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L154", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "vehiclecreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L188", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L229", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "vehicleupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "pl_base_data_update_vehicle", "target": "vehicleread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L240", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L259", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L259", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L259", "weight": 1.0}, {"source": "pl_base_data_delete_vehicle", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L259", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_vehicle", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L271", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L271", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L271", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L271", "weight": 1.0}, {"source": "pl_base_data_get_vehicle", "target": "plvehicle", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L271", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_list_drivers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292", "weight": 1.0}, {"source": "pl_base_data_list_drivers", "target": "driverread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L292", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_create_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "drivercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L319", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L349", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L349", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L349", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L349", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L349", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_update_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "driverupdate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360", "weight": 1.0}, {"source": "pl_base_data_update_driver", "target": "driverread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L360", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_delete_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379", "weight": 1.0}, {"source": "pl_base_data_delete_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L379", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_get_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L391", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L391", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L391", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L391", "weight": 1.0}, {"source": "pl_base_data_get_driver", "target": "pldriver", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L391", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_bind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "vehicledrivercreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412", "weight": 1.0}, {"source": "pl_base_data_bind_vehicle_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L412", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "target": "pl_base_data_unbind_vehicle_driver", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L441", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L441", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L441", "weight": 1.0}, {"source": "pl_base_data_unbind_vehicle_driver", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L441", "weight": 1.0}, {"source": "pl_base_data_create_carrier", "target": "plcarrier", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L73", "weight": 1.0}, {"source": "pl_base_data_create_vehicle", "target": "plvehicle", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L207", "weight": 1.0}, {"source": "pl_base_data_create_driver", "target": "pldriver", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L326", "weight": 1.0}, {"source": "pl_base_data_rationale_1", "target": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_base_data_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_base_data_list_carriers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L41"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L41"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L42"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L52"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L53"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L53"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L53"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L54"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L54"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L54"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L58"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L59"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L59"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L59"}, {"caller_nid": "pl_base_data_list_carriers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L60"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L71"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L71"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L74"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L84"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L85"}, {"caller_nid": "pl_base_data_create_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L86"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L96"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L96"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L97"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L108"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L108"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L109"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L111"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L111"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L115"}, {"caller_nid": "pl_base_data_update_carrier", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L116"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L126"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L126"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "_get_carrier", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L127"}, {"caller_nid": "pl_base_data_delete_carrier", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L130"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L135"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L135"}, {"caller_nid": "pl_base_data_get_carrier", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L144"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L162"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L162"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L163"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L178"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L180"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L181"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L181"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L181"}, {"caller_nid": "pl_base_data_list_vehicles", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L182"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L193"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L193"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L197"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L197"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L205"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L208"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L222"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L223"}, {"caller_nid": "pl_base_data_create_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L224"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L234"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L235"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L246"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L246"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L247"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L249"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L249"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L253"}, {"caller_nid": "pl_base_data_update_vehicle", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L254"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L264"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L264"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "_get_vehicle", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L265"}, {"caller_nid": "pl_base_data_delete_vehicle", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L268"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L273"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L273"}, {"caller_nid": "pl_base_data_get_vehicle", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L282"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L297"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L297"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L298"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L305"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L306"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L306"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "lower", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L306"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L307"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L311"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "asc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "case", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "is_", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L312"}, {"caller_nid": "pl_base_data_list_drivers", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L313"}, {"caller_nid": "pl_base_data_create_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L324"}, {"caller_nid": "pl_base_data_create_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L324"}, {"caller_nid": "pl_base_data_create_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L327"}, {"caller_nid": "pl_base_data_create_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L342"}, {"caller_nid": "pl_base_data_create_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L343"}, {"caller_nid": "pl_base_data_create_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L344"}, {"caller_nid": "pl_base_data_get_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L354"}, {"caller_nid": "pl_base_data_get_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L354"}, {"caller_nid": "pl_base_data_get_driver", "callee": "_get_driver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L355"}, {"caller_nid": "pl_base_data_update_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L366"}, {"caller_nid": "pl_base_data_update_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L366"}, {"caller_nid": "pl_base_data_update_driver", "callee": "_get_driver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L367"}, {"caller_nid": "pl_base_data_update_driver", "callee": "items", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L369"}, {"caller_nid": "pl_base_data_update_driver", "callee": "model_dump", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L369"}, {"caller_nid": "pl_base_data_update_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L373"}, {"caller_nid": "pl_base_data_update_driver", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L374"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L384"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L384"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "_get_driver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L385"}, {"caller_nid": "pl_base_data_delete_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L388"}, {"caller_nid": "pl_base_data_get_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L393"}, {"caller_nid": "pl_base_data_get_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L393"}, {"caller_nid": "pl_base_data_get_driver", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L402"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L417"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "update", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L421"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L421"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "PlVehicleDriver", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L426"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L427"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L435"}, {"caller_nid": "pl_base_data_bind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L436"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L446"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L446"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L448"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L448"}, {"caller_nid": "pl_base_data_unbind_vehicle_driver", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py", "source_location": "L458"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/faaeb6f8011d8883de83bcfde1313f951b0b3c279883a0755151dec053816abf.json b/backend/graphify-out/cache/ast/faaeb6f8011d8883de83bcfde1313f951b0b3c279883a0755151dec053816abf.json new file mode 100644 index 000000000..637d88fdc --- /dev/null +++ b/backend/graphify-out/cache/ast/faaeb6f8011d8883de83bcfde1313f951b0b3c279883a0755151dec053816abf.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_generate_transport_no", "label": "_generate_transport_no()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39"}, {"id": "pl_transport_get_vehicle_info", "label": "_get_vehicle_info()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63"}, {"id": "pl_transport_list_transports", "label": "list_transports()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90"}, {"id": "pl_transport_create_transport", "label": "create_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145"}, {"id": "transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145"}, {"id": "transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145"}, {"id": "pl_transport_arrange_transport", "label": "arrange_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217"}, {"id": "transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217"}, {"id": "pl_transport_get_transport", "label": "get_transport()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331"}, {"id": "pl_transport_qrcoderesponse", "label": "QrCodeResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L346"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_config", "label": "Config", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L352"}, {"id": "pl_transport_generate_qrcode", "label": "generate_qrcode()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357"}, {"id": "pl_transport_transport_scan_feedback", "label": "transport_scan_feedback()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L390"}, {"id": "transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L390"}, {"id": "pl_transport_submit_approval", "label": "submit_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431"}, {"id": "approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431"}, {"id": "pl_transport_process_approval", "label": "process_approval()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476"}, {"id": "approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476"}, {"id": "approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476"}, {"id": "pl_transport_get_transport_approvals", "label": "get_transport_approvals()", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L538"}, {"id": "pltransport", "label": "PlTransport", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "json", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "fastapi", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L7", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L8", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L9", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_database", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L11", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L12", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L13", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "app_core_utils", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L15", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_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/transport.py", "source_location": "L24", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_transport_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39", "weight": 1.0}, {"source": "pl_transport_generate_transport_no", "target": "str", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L39", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_vehicle_info", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63", "weight": 1.0}, {"source": "pl_transport_get_vehicle_info", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L63", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_list_transports", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "str", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L90", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_create_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportcreate", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L145", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_arrange_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportarrange", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L217", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L331", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_qrcoderesponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L346", "weight": 1.0}, {"source": "pl_transport_qrcoderesponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L346", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L352", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_generate_qrcode", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "int", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L357", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_transport_scan_feedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L390", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "transportfeedback", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L390", "weight": 1.0}, {"source": "pl_transport_transport_scan_feedback", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L390", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_submit_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "approvalsubmit", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431", "weight": 1.0}, {"source": "pl_transport_submit_approval", "target": "transportread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L431", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_process_approval", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrequest", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476", "weight": 1.0}, {"source": "pl_transport_process_approval", "target": "approvalrecordread", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L476", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport_approvals", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L538", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L538", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L538", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "dbusercontext", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L538", "weight": 1.0}, {"source": "pl_transport_get_transport_approvals", "target": "approvalrecordread", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L538", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_api_pl_transport_py", "target": "pl_transport_get_transport", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "str", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563", "weight": 1.0}, {"source": "pl_transport_get_transport", "target": "pltransport", "relation": "references", "context": "return_type", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L563", "weight": 1.0}, {"source": "pl_transport_list_transports", "target": "transportlistresponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L136", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L152", "weight": 1.0}, {"source": "pl_transport_create_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L154", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_get_vehicle_info", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L235", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pl_transport_generate_transport_no", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L267", "weight": 1.0}, {"source": "pl_transport_arrange_transport", "target": "pltransport", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L268", "weight": 1.0}, {"source": "pl_transport_generate_qrcode", "target": "pl_transport_qrcoderesponse", "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L376", "weight": 1.0}], "raw_calls": [{"caller_nid": "pl_transport_generate_transport_no", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L41"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "strftime", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L42"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L45"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "like", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L47"}, {"caller_nid": "pl_transport_generate_transport_no", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L50"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L64"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L75"}, {"caller_nid": "pl_transport_get_vehicle_info", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L75"}, {"caller_nid": "pl_transport_list_transports", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L102"}, {"caller_nid": "pl_transport_list_transports", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L102"}, {"caller_nid": "pl_transport_list_transports", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L103"}, {"caller_nid": "pl_transport_list_transports", "callee": "or_", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L110"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L111"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L112"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L113"}, {"caller_nid": "pl_transport_list_transports", "callee": "contains", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L118"}, {"caller_nid": "pl_transport_list_transports", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L132"}, {"caller_nid": "pl_transport_list_transports", "callee": "limit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "offset", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_list_transports", "callee": "desc", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L134"}, {"caller_nid": "pl_transport_create_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L150"}, {"caller_nid": "pl_transport_create_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L150"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L155"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L181"}, {"caller_nid": "pl_transport_create_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L186"}, {"caller_nid": "pl_transport_create_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L187"}, {"caller_nid": "pl_transport_create_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L194"}, {"caller_nid": "pl_transport_create_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L197"}, {"caller_nid": "pl_transport_create_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L197"}, {"caller_nid": "pl_transport_create_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L206"}, {"caller_nid": "pl_transport_create_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L207"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L223"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L223"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L226"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L226"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L232"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L238"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L238"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L240"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L243"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L251"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L269"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L273"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L277"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L278"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L278"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "get", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L280"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L297"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "PlPlanTransport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L300"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L301"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L308"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L320"}, {"caller_nid": "pl_transport_arrange_transport", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L321"}, {"caller_nid": "pl_transport_get_transport", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L336"}, {"caller_nid": "pl_transport_get_transport", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L336"}, {"caller_nid": "pl_transport_get_transport", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L337"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L363"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L363"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L364"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "today", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L367"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "timedelta", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L367"}, {"caller_nid": "pl_transport_generate_qrcode", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L374"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L396"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L396"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L404"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L407"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "dumps", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L414"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L419"}, {"caller_nid": "pl_transport_transport_scan_feedback", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L420"}, {"caller_nid": "pl_transport_submit_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L437"}, {"caller_nid": "pl_transport_submit_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L437"}, {"caller_nid": "pl_transport_submit_approval", "callee": "_get_transport", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L438"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L441"}, {"caller_nid": "pl_transport_submit_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L447"}, {"caller_nid": "pl_transport_submit_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L447"}, {"caller_nid": "pl_transport_submit_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L449"}, {"caller_nid": "pl_transport_submit_approval", "callee": "PlTransportApproval", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L451"}, {"caller_nid": "pl_transport_submit_approval", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L452"}, {"caller_nid": "pl_transport_submit_approval", "callee": "add", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L462"}, {"caller_nid": "pl_transport_submit_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L465"}, {"caller_nid": "pl_transport_submit_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L466"}, {"caller_nid": "pl_transport_process_approval", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L482"}, {"caller_nid": "pl_transport_process_approval", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L482"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L485"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L485"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L494"}, {"caller_nid": "pl_transport_process_approval", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L497"}, {"caller_nid": "pl_transport_process_approval", "callee": "now", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L504"}, {"caller_nid": "pl_transport_process_approval", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L507"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L507"}, {"caller_nid": "pl_transport_process_approval", "callee": "count", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L512"}, {"caller_nid": "pl_transport_process_approval", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L512"}, {"caller_nid": "pl_transport_process_approval", "callee": "commit", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L527"}, {"caller_nid": "pl_transport_process_approval", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L528"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "get_tenant_no", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L543"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "to_tenant_user_dict", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L543"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "order_by", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L546"}, {"caller_nid": "pl_transport_get_transport_approvals", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L546"}, {"caller_nid": "pl_transport_get_transport", "callee": "first", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565"}, {"caller_nid": "pl_transport_get_transport", "callee": "query", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L565"}, {"caller_nid": "pl_transport_get_transport", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py", "source_location": "L574"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/fd5ec91375222e4b68dfa7eaf72c3c21d3f4e0c3139531fc8665a4f381d10c05.json b/backend/graphify-out/cache/ast/fd5ec91375222e4b68dfa7eaf72c3c21d3f4e0c3139531fc8665a4f381d10c05.json new file mode 100644 index 000000000..403aad614 --- /dev/null +++ b/backend/graphify-out/cache/ast/fd5ec91375222e4b68dfa7eaf72c3c21d3f4e0c3139531fc8665a4f381d10c05.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": "L42"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L42"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L42"}, {"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": "L67"}, {"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": "L72"}, {"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": "L81"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L81"}, {"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": "L102"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"id": "int", "label": "int", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L102"}, {"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": "L171"}, {"id": "plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L171"}, {"id": "planread", "label": "PlanRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L171"}, {"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": "L250"}, {"id": "plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L250"}, {"id": "planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L250"}, {"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": "L349"}, {"id": "createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L349"}, {"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": "L451"}, {"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": "L480"}, {"id": "planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L480"}, {"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": "L547"}, {"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": "L571"}, {"id": "pl_plan_rationale_43", "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": "L43"}, {"id": "pl_plan_rationale_255", "label": "\u521b\u5efa\u8fd0\u8f93\u8ba1\u5212\uff08\u5b8c\u6574\u8868\u5355\uff1a\u5408\u540c\u4ea7\u54c1 + \u53ef\u9009\u8fd0\u8f93\u5b89\u6392\uff09", "file_type": "rationale", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L255"}], "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_database", "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_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": "L10", "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": "L11", "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": "L12", "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": "L13", "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": "L20", "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": "L21", "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": "L31", "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": "L42", "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": "L42", "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": "L42", "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": "L67", "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": "L67", "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": "L67", "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": "L67", "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": "L72", "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": "L72", "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": "L72", "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": "L81", "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": "L81", "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": "L81", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L102", "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": "L171", "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": "L171", "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": "L171", "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": "L171", "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": "L171", "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": "L250", "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": "L250", "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": "L250", "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": "L250", "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": "L250", "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": "L349", "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": "L349", "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": "L349", "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": "L349", "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": "L349", "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": "L451", "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": "L451", "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": "L451", "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": "L451", "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": "L451", "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": "L480", "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": "L480", "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": "L480", "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": "L480", "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": "L480", "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": "L480", "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": "L547", "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": "L547", "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": "L547", "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": "L547", "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": "L547", "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": "L571", "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": "L571", "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": "L571", "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": "L571", "weight": 1.0}, {"source": "pl_plan_archive_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": "L571", "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": "L595", "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": "L595", "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": "L595", "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": "L595", "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": "L595", "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": "L162", "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": "L179", "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": "L184", "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": "L186", "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": "L260", "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": "L262", "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": "L265", "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": "L369", "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": "L372", "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": "L374", "weight": 1.0}, {"source": "pl_plan_rationale_43", "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": "L43", "weight": 1.0}, {"source": "pl_plan_rationale_255", "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": "L255", "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": "L44"}, {"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": "L45"}, {"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": "L49"}, {"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": "L49"}, {"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": "L49"}, {"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": "L51"}, {"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": "L54"}, {"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": "L69"}, {"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": "L78"}, {"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": "L83"}, {"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": "L117"}, {"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": "L117"}, {"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": "L118"}, {"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": "L125"}, {"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": "L126"}, {"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": "L127"}, {"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": "L127"}, {"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": "L127"}, {"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": "L132"}, {"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": "L147"}, {"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": "L147"}, {"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": "L147"}, {"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": "L156"}, {"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": "L160"}, {"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": "L160"}, {"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": "L160"}, {"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": "L160"}, {"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": "L176"}, {"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": "L176"}, {"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": "L187"}, {"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": "L226"}, {"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": "L231"}, {"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": "L240"}, {"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": "L242"}, {"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": "L244"}, {"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": "L245"}, {"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": "L258"}, {"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": "L259"}, {"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": "L259"}, {"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": "L266"}, {"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": "L299"}, {"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": "L306"}, {"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": "L307"}, {"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": "L311"}, {"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": "L320"}, {"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": "L321"}, {"caller_nid": "pl_plan_create_plan_full", "callee": "create_transport_for_plan", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L324"}, {"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": "L335"}, {"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": "L336"}, {"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": "L338"}, {"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": "L357"}, {"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": "L357"}, {"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": "L361"}, {"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": "L361"}, {"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": "L366"}, {"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": "L375"}, {"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": "L407"}, {"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": "L411"}, {"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": "L421"}, {"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": "L422"}, {"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": "L438"}, {"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": "L440"}, {"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": "L441"}, {"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": "L456"}, {"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": "L456"}, {"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": "L457"}, {"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": "L460"}, {"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": "L460"}, {"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": "L469"}, {"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": "L486"}, {"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": "L486"}, {"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": "L487"}, {"caller_nid": "pl_plan_update_plan", "callee": "HTTPException", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L491"}, {"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": "L494"}, {"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": "L495"}, {"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": "L501"}, {"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": "L501"}, {"caller_nid": "pl_plan_update_plan", "callee": "PlPlanProduct", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L508"}, {"caller_nid": "pl_plan_update_plan", "callee": "generate_uuid", "is_member_call": false, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L509"}, {"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": "L533"}, {"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": "L536"}, {"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": "L537"}, {"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": "L552"}, {"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": "L552"}, {"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": "L553"}, {"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": "L556"}, {"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": "L560"}, {"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": "L561"}, {"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": "L576"}, {"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": "L576"}, {"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": "L577"}, {"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": "L580"}, {"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": "L585"}, {"caller_nid": "pl_plan_archive_plan", "callee": "refresh", "is_member_call": true, "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py", "source_location": "L586"}, {"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": "L597"}, {"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": "L597"}, {"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": "L606"}]} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/fdf41f8fac83488a3100847bd793dc3b3568f92a510b9142c8b6bf83a798b386.json b/backend/graphify-out/cache/ast/fdf41f8fac83488a3100847bd793dc3b3568f92a510b9142c8b6bf83a798b386.json new file mode 100644 index 000000000..48420a73e --- /dev/null +++ b/backend/graphify-out/cache/ast/fdf41f8fac83488a3100847bd793dc3b3568f92a510b9142c8b6bf83a798b386.json @@ -0,0 +1 @@ +{"nodes": [{"id": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "label": "transport.py", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L1"}, {"id": "pl_transport_transportbase", "label": "TransportBase", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "pl_transport_transportcreate", "label": "TransportCreate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38"}, {"id": "pl_transport_transportarrange", "label": "TransportArrange", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43"}, {"id": "pl_transport_transportinventorylinkread", "label": "TransportInventoryLinkRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61"}, {"id": "pl_transport_transportupdate", "label": "TransportUpdate", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71"}, {"id": "pl_transport_transportread", "label": "TransportRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95"}, {"id": "pl_transport_transportarrangeresult", "label": "TransportArrangeResult", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114"}, {"id": "pl_transport_planarrangeinforead", "label": "PlanArrangeInfoRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123"}, {"id": "pl_transport_transportwithplans", "label": "TransportWithPlans", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132"}, {"id": "pl_transport_transportfeedback", "label": "TransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141"}, {"id": "pl_transport_publictransportfeedback", "label": "PublicTransportFeedback", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L150"}, {"id": "pl_transport_publictransportplanproductread", "label": "PublicTransportPlanProductRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156"}, {"id": "pl_transport_publictransportpageread", "label": "PublicTransportPageRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L164"}, {"id": "pl_transport_approvalsubmit", "label": "ApprovalSubmit", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L186"}, {"id": "pl_transport_approvalrequest", "label": "ApprovalRequest", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L191"}, {"id": "pl_transport_approvalrecordread", "label": "ApprovalRecordRead", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L197"}, {"id": "pl_transport_transportlistquery", "label": "TransportListQuery", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L216"}, {"id": "pl_transport_transportlistresponse", "label": "TransportListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L228"}], "edges": [{"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L2", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "decimal", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L3", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L4", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L6", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "pl_transport_transportbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L14", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "pl_transport_transportcreate", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L38", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrange", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "pl_transport_transportarrange", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L43", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportinventorylinkread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61", "weight": 1.0}, {"source": "pl_transport_transportinventorylinkread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L61", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71", "weight": 1.0}, {"source": "pl_transport_transportupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L71", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95", "weight": 1.0}, {"source": "pl_transport_transportread", "target": "pl_transport_transportbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L95", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportarrangeresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114", "weight": 1.0}, {"source": "pl_transport_transportarrangeresult", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L114", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_planarrangeinforead", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123", "weight": 1.0}, {"source": "pl_transport_planarrangeinforead", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L123", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportwithplans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132", "weight": 1.0}, {"source": "pl_transport_transportwithplans", "target": "pl_transport_transportread", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L132", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141", "weight": 1.0}, {"source": "pl_transport_transportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L141", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportfeedback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L150", "weight": 1.0}, {"source": "pl_transport_publictransportfeedback", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L150", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportplanproductread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "pl_transport_publictransportplanproductread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L156", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_publictransportpageread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L164", "weight": 1.0}, {"source": "pl_transport_publictransportpageread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L164", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalsubmit", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L186", "weight": 1.0}, {"source": "pl_transport_approvalsubmit", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L186", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrequest", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L191", "weight": 1.0}, {"source": "pl_transport_approvalrequest", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L191", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_approvalrecordread", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L197", "weight": 1.0}, {"source": "pl_transport_approvalrecordread", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L197", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "pl_transport_transportlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L216", "weight": 1.0}, {"source": "users_zlwu_work_00code_shanxia2_0_backend_app_schemas_pl_transport_py", "target": "pl_transport_transportlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L228", "weight": 1.0}, {"source": "pl_transport_transportlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py", "source_location": "L228", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/ff7783e13f3dae212f10204db888a836920ceb0de79d9eadc9646def879cd664.json b/backend/graphify-out/cache/ast/ff7783e13f3dae212f10204db888a836920ceb0de79d9eadc9646def879cd664.json new file mode 100644 index 000000000..3ecb0e25b --- /dev/null +++ b/backend/graphify-out/cache/ast/ff7783e13f3dae212f10204db888a836920ceb0de79d9eadc9646def879cd664.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_planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py", "source_location": "L251"}], "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_planlistresponse", "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_planlistresponse", "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}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/ast/ffefa207a251ae65184570a0a38eabdfe4c38aa2ed8d8a3e9b691de275a96a3a.json b/backend/graphify-out/cache/ast/ffefa207a251ae65184570a0a38eabdfe4c38aa2ed8d8a3e9b691de275a96a3a.json new file mode 100644 index 000000000..82d6f291e --- /dev/null +++ b/backend/graphify-out/cache/ast/ffefa207a251ae65184570a0a38eabdfe4c38aa2ed8d8a3e9b691de275a96a3a.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": "L33"}, {"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": "L37"}, {"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": "L58"}, {"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": "L72"}, {"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": "L102"}, {"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": "L108"}, {"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": "L137"}, {"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": "L160"}, {"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": "L169"}, {"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": "L182"}, {"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": "L197"}], "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": "L33", "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": "L33", "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": "L37", "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": "L37", "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": "L58", "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": "L58", "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": "L72", "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": "L72", "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": "L102", "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": "L102", "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": "L108", "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": "L108", "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": "L137", "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": "L137", "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": "L160", "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": "L160", "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": "L169", "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": "L169", "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": "L182", "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": "L182", "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": "L197", "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": "L197", "weight": 1.0}], "raw_calls": []} \ No newline at end of file diff --git a/backend/graphify-out/cache/stat-index.json b/backend/graphify-out/cache/stat-index.json index f8bd81d52..826946ce6 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":4768,"mtime_ns":1780804651826808366,"hash":"0c0bc07c70c6023ba9d24f07c3cd5ac11d232fc6b71675d9b05c487a2fdafeab"},"/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":5718,"mtime_ns":1780804662266921460,"hash":"85261e9e51795aec9f592bad3c140ee58738f7fb36e3cf6117aaa7ef436dcf7c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":8978,"mtime_ns":1780108930724617124,"hash":"198e0861bb9933a7cee510524c4802001543468727a45e779bc4684d0214ffe2"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1173,"mtime_ns":1780108930724965209,"hash":"8c45b5a56110164f2488c9c8db27db62fe77f0997cf22c53991c0bd1dde2043a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":13209,"mtime_ns":1780108930725541087,"hash":"c3138253eb34f65b09f4436e037fb3179d947f84d3b5fef007ed9a8e3bb135ee"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":5949,"mtime_ns":1780108930724890709,"hash":"c92a7dbcfe3d7440bfafc83a76e9ed431e2b054ddd95bc4bfac52b241635ab17"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":11243,"mtime_ns":1780108930724537332,"hash":"0c2045d182138ec8e333356d36d418004a53948e2eda494cd419a36365ebbfae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4ea2fe128de80fe321b0c3c531fea7a88"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/models.py":{"size":35246,"mtime_ns":1780201410114502659,"hash":"19d210fd54135bc8e94afdbce8812043a2fb92d2889f4317d4afe3f9c8aa6936"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py":{"size":1155,"mtime_ns":1780112936528830094,"hash":"67396fe48b60d10ff4f4ff2fadf227fb5d15ef5fc873005c271023c910ce2ef5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/base.py":{"size":2090,"mtime_ns":1780108930807298966,"hash":"fda71bbe87dcb29c6f0ffa9337e9f39c2c06d912df6cb75d521f0e87c7c73c6d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/auth.py":{"size":1315,"mtime_ns":1780108930808197763,"hash":"018b82e42bbb055250549c54ba700ee01cf28cd753397d6c162f9e60185908e5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/user.py":{"size":1911,"mtime_ns":1780108930810184774,"hash":"3d3c159018cab6ed1cd3de7034ffb1fe77a272b9099901a1882d07aa15fc90a0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/__init__.py":{"size":1159,"mtime_ns":1780112973062398026,"hash":"4e8b0bda6680e2c8740c380b96eedb859ddc584a81bad568a18ba6beb001e480"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/menu.py":{"size":816,"mtime_ns":1780108930808681891,"hash":"17e35f2d7bf95cac00d81357f69fdcbe849e855daa05570c3302de8182b4df11"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/attachment.py":{"size":328,"mtime_ns":1780108930808144846,"hash":"300b74c51c66cb0fbf8c9f4d84a4b7bf29dcc9b6a67d922f8e1d0df05f9fc5bf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/common.py":{"size":555,"mtime_ns":1780108930808426681,"hash":"caa0c03398e54017b25cca2a16cf8d232a59739893a16e4c33b51a5316d8964f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/workflow.py":{"size":3949,"mtime_ns":1780108930810245983,"hash":"e5aed7afcf903c838a35cdaf2230a93d221c63f5c6baa1497e455afac8587a9a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/leave.py":{"size":1449,"mtime_ns":1780108930808614098,"hash":"c54098a69bd4490290dd8d7809ed8764a3f38e8c38692eeef2b505293cdfaeb8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/sample_code.py":{"size":12322,"mtime_ns":1780114002126415047,"hash":"5b74838b3920f9182d092f8a1b721697f1a62e8b90728b9f54101dbb96baa40e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/post.py":{"size":4980,"mtime_ns":1780114001618387697,"hash":"7f283f282ae58414179cc7763a4cc681930666c7efd4c2887fcd66e4b3896732"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/user.py":{"size":13310,"mtime_ns":1780201410112732115,"hash":"4ad218f8ad0c21201866688941352bcde93e705d9086abb7f41b87e2c5c51157"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_type.py":{"size":5353,"mtime_ns":1780108930727360347,"hash":"98ffd889f8dca70bd22e5801ccc13d3d10c5d883ae06428ba3edde84a345c4fe"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/tenant.py":{"size":5475,"mtime_ns":1780108930731996832,"hash":"d742062cce9f72daa523e5fc5375b9c835c182916b3db5ee0ff30c121fce61b4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/biz_no_generator.py":{"size":2534,"mtime_ns":1780108930726090799,"hash":"e6bd375987e47f6ee80294686db64377938a286767bb28324f3eda2ad39ad546"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/__init__.py":{"size":169,"mtime_ns":1780108930725878047,"hash":"340e3c08174d61829012879e684f6166803b88c819c58b54a16a11d210dea85e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/role.py":{"size":9233,"mtime_ns":1780114000027300001,"hash":"4e34836d4496b0af1449ad1f3a79e96bb2d642d6df369c7d62310fd92f95982b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/menu.py":{"size":7416,"mtime_ns":1780113999264097679,"hash":"20bb62c7a3fcfca73462e643cd409d02b7d056620e4b53e44a5bf5a0c9edd402"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/site.py":{"size":6341,"mtime_ns":1780113998462910381,"hash":"c272ba4dfc2080cff859f55a180f35b48d7d74bb09a2ef8606d5a4fb01e99bdf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/api_request_log.py":{"size":4349,"mtime_ns":1780108930725945840,"hash":"fb7f1e1413cee1b25ff401c150940bc769c4033140ef3249cd41bbe24a618488"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dict_data.py":{"size":5054,"mtime_ns":1780112650117618702,"hash":"625ecf04ea9729969f643fba6a8c7cd789a8bfb67dbc76ce46f3e2b4122c8545"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/ethnic.py":{"size":1012,"mtime_ns":1780108930727448890,"hash":"7de1eb94b9fbb897a7b362ffdb5df5ab1020aa7247c7c37a2a2a2aa5cdbac8ad"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/workflow.py":{"size":24868,"mtime_ns":1780113998128399686,"hash":"41922492aec3a5030271abfc51444cb17e07cb4294deff92e23887a66dd78fae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/dept.py":{"size":6420,"mtime_ns":1780113996907595730,"hash":"8ecc752ff4769e1a94f7dbd800bbf26ca6dc8118a627c7921dfd3419d1accee8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/base.py":{"size":5360,"mtime_ns":1780108930726010257,"hash":"49fdea023825ea249923b1cb02d353dcede1850158d3555a2082887925e69b9b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/leave.py":{"size":4620,"mtime_ns":1780113996115415235,"hash":"bc63d2287b05db9405c7902d9f8cd7c25e1fddf64572d05f5a7703480af0a261"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/public.py":{"size":10496,"mtime_ns":1780242127112912030,"hash":"c3b4d65b73ce9764fa60fa7e14e862c4644c7a47fd92d4699693bfbc0950d913"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/__init__.py":{"size":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":64202,"mtime_ns":1780743830221045470,"hash":"eb2d69511ac768622bcb47e55a4d0263fb9098409f633b9ab480e8bdec37b7ef"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/__init__.py":{"size":0,"mtime_ns":1780201410213315055,"hash":"a6d57250b43cbdecb56b7a9d55d29642b808be368733e14b7df2bd196f54d64d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py":{"size":7314,"mtime_ns":1780743830220875345,"hash":"75859ecc807b96f8559ec1ac1a6452c207e860f9d2bed1aa2ab7574fd37c3d85"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/__init__.py":{"size":0,"mtime_ns":1780201410210254759,"hash":"9b8fcaaabdc85883c9ef392b596b60db0bd3b2f1623fc8012e55003f234a9875"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py":{"size":24164,"mtime_ns":1780743830250534751,"hash":"ef1950976cc858bc0d1eba9b31968e736491056a3d15d86079df690662972249"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/crm.py":{"size":134947,"mtime_ns":1780743830246653903,"hash":"aa2b96720dcf3182deb45e888ec96b737709fa04b9786d4e1fc984925c9829a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py":{"size":9646,"mtime_ns":1780202350147822837,"hash":"4f0ab87e7a12534011b69f58079ca206d5443eee594849ab4aae728bb847de0d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/tenant_context.py":{"size":693,"mtime_ns":1780201410210198550,"hash":"0a810658d894d35b9e981faa1448e1d02d617ecbe563bd711f6ce5a8f9db1861"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/pool_rule.py":{"size":1848,"mtime_ns":1780202212734233591,"hash":"b0331e17e801d206fba2fa89df1a66d1758d850dc5547e076218e16c8211a3e8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_pool.py":{"size":1340,"mtime_ns":1780202198698231150,"hash":"7a6b76e0e39ada0783dfbee92280e9f06299b6662b08abb13ab1b0d9c70fe370"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer_follow.py":{"size":3716,"mtime_ns":1780201410213934514,"hash":"3979cecd62a4f2ee5dd925639572208e36b397620d91a9ce49a59adfcb2a9d55"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py":{"size":13811,"mtime_ns":1780713560843469785,"hash":"4102b586c625782b58c0a70a0c94f1c203dff427dc1708316d23a3689d78fa9c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contact.py":{"size":4856,"mtime_ns":1780742840975948859,"hash":"60c714cc254d70f39b43205bbcb7fb4c563e807ddd070eefaaa952ae96048377"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py":{"size":8059,"mtime_ns":1780202270065620774,"hash":"a491d929e43bfe29a5207396039449a9c58788b7d10d5547a01fd49d1d47f8ba"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_follow.py":{"size":6890,"mtime_ns":1780730768313192794,"hash":"aaa23bf3dbbf85ff162dde638384ba26357ba72710d14d24357c5e73ab39ae8e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer.py":{"size":21791,"mtime_ns":1780713573612717052,"hash":"418a2eeba8f6c8f8d0e30ab4edbeb6af5c936e3012e279a1c60d3a22e232740f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contact.py":{"size":8718,"mtime_ns":1780742842033485622,"hash":"c364ede84e65795c465e44737c1a85d5f37a4c8351fdf82ed9cf2145159f802e"},"/Users/zlwu/work/00code/shanxia2.0/backend/scripts/generate_dict_reimport_sql.py":{"size":10692,"mtime_ns":1780201410245078685,"hash":"a4faaf61f246dad04ec3933083ab4348e5d2987ae1ed34b1f6d8f19535642a05"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/statistics.py":{"size":412,"mtime_ns":1780201410215906642,"hash":"fb1957d0fe87f22c37ba5bdaa5f3bf2bb4a40685a21a05dce98326581bb4844b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer_pool.py":{"size":3725,"mtime_ns":1780202237342131933,"hash":"0f26ac2bcb585241f25302787184db4db422934e5d896ca25bbe7efaf61d92c4"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/statistics.py":{"size":5239,"mtime_ns":1780201410212581471,"hash":"9f3b08eaa53b094e6c1c2c7e16a383408ff9276baf1d55a2abba3076d74331f1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/invoice_info.py":{"size":3104,"mtime_ns":1780406386885207867,"hash":"a59df3aed2c976904e3b5325fedd1621435b322645aa71349f3356e0cdc17424"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/oss.py":{"size":1584,"mtime_ns":1780201410212966513,"hash":"9349799b02a3531d8e1b46f9f70d3b6630afd7306663c779bd11f25448a16013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/invoice_info.py":{"size":5816,"mtime_ns":1780406390461433397,"hash":"1fd30d3af0fbb1cf9dcbdd5899d6a90d1e814ff67406246830f58d39bfb5540f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/opportunity.py":{"size":9391,"mtime_ns":1780242127112297110,"hash":"2e068961824a1d3ec0da0a94a3c494b63582b3251e5f4e030ce3e12897e85002"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py":{"size":10565,"mtime_ns":1780934821610728882,"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":1780934821617282913,"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":1780934821617337330,"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":1780934821617223746,"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":1013,"mtime_ns":1780750904057179495,"hash":"b30a46c6fab214ca58787ff4e42a9ab2fdf933f1c4b6ee224d1799d9dd8918a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1136,"mtime_ns":1780750556882334857,"hash":"38eb2cb16c0b187b946287ad8d6e0a2b5d008798cf3e99914ce29a6a3b3ab2ce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":947,"mtime_ns":1780750556881768980,"hash":"2bbe961ad71f0be530f10d515b69615dbf887257028e339d4252b9ff2a5aba2b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":1589,"mtime_ns":1780750556882959109,"hash":"c9d8d20d9af9ccc1c30f6d7116e7666b53817693f4ab25c01ea451dc46a7f12a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16454,"mtime_ns":1780752873936800885,"hash":"5cbe170d19fdb5f5abf34d2e87709430e9dd89f2fd5cb13314af556dd0867582"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/__init__.py":{"size":81,"mtime_ns":1780750556881734563,"hash":"07c3422f745afbff1c8162b3782fbb4b8de65084e7e9bbcf45abb9d433d65f98"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py":{"size":1238,"mtime_ns":1780750556882896026,"hash":"1b8a1b82dcabdcb1a2957ac9c53d2ae128869a55439c77208ec3b0342380eeed"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/__init__.py":{"size":777,"mtime_ns":1780751360180065853,"hash":"3525eb716c238682a07a116818d318b8a494fb24b9cefca5114d30bc50d095a5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py":{"size":1632,"mtime_ns":1780750595661330050,"hash":"718cda4882de824f750f0d99bcc12c3240f29acb7979f1a6e04d903feb1f434c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py":{"size":1641,"mtime_ns":1780750597002327548,"hash":"c38fd9400bf1c8d181b084347f47bb02e67a6d2ce14a0556284372e4bf044560"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py":{"size":3329,"mtime_ns":1780750631640905361,"hash":"eb032c84478721c937c421e8cf457716875a593a75c15caa07adec83c80f8b3b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/workflow.py":{"size":4940,"mtime_ns":1780756089730425856,"hash":"dc0691cec4589587fdbacf2dbc9334e3a99face5e924b7ead29b3531d7752c5d"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py":{"size":3977,"mtime_ns":1780750601219153355,"hash":"ac31c58cf246f27a3f875920f583dd42af66a09f09dc879a215ce05a056d450f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/__init__.py":{"size":34,"mtime_ns":1780750594045301798,"hash":"583b12a6d2c9fd4411b652741e73324df9256138946ee873a0ed03169f8dae2a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/workflow.py":{"size":5133,"mtime_ns":1780756089144403380,"hash":"10ac1660a2a6d6daa4c313f57667df78b082c742e49780cec4270b1333b3cb1f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/base.py":{"size":2754,"mtime_ns":1780750593829062278,"hash":"a69603083acd513274bec92f033d2d496f175b17de6aec59d8d2b6f63391abac"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/attachment.py":{"size":525,"mtime_ns":1780750871480000584,"hash":"f287214c72345e41d9d122ca55b4d3e279635d99cbf10ed530de0ac32374f31c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/advance.py":{"size":4522,"mtime_ns":1780757815269786891,"hash":"680cf05a952f4069441e8fe432c96d2feb6cb9e8cddd24ca1109d5f89f5fb06c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/attachment.py":{"size":5707,"mtime_ns":1780750903379992073,"hash":"59572b469529962b623accad7a5e21f5a5299a69285977acfa93af8c12ec7703"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/advance.py":{"size":12830,"mtime_ns":1780758906507042443,"hash":"0448e5ccd69b876402d03bb69647207497aef22b24f8686784bea2266c636607"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/attachment.py":{"size":3966,"mtime_ns":1780750887666369032,"hash":"011868ea9a25a17816882b6bc0dc097eeca74adaf8c1a00943397a2a1bbdb389"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/advance.py":{"size":22304,"mtime_ns":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":5389,"mtime_ns":1780751335184916214,"hash":"d6aa4d137ee5f96962ddc7c35a719aa658338f13ccbd378d35758fa73d76de70"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":13829,"mtime_ns":1780758906744178121,"hash":"db3a00f89c6343929dbbd1cf5891821fea7670d9630a83ef826da3b7abddc596"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":28550,"mtime_ns":1780758908405342166,"hash":"c49d87c90dd0169443162e7d2fc637f739e0c61712ecbeee34a967ae052306a5"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/payment.py":{"size":15276,"mtime_ns":1780751365941052105,"hash":"4dcc1c902bd56c5ad6cc5144093afcf2e3776c1d4a0cd416d4186b9c35c49dae"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py":{"size":1296,"mtime_ns":1780758200904804714,"hash":"308c087d94ac253bfc7e2d5455a06ae8ceac034adda41b5c61dd315dc167efaf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/db_models.py":{"size":8703,"mtime_ns":1780935298135363918,"hash":"b2ea766a3b484751eb338f58daea244adb846dd4822299f787fcbec8e48abe19"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":596,"mtime_ns":1780804995132924586,"hash":"9dcfba4e404c5e5c2650c363d5860aecb61f3f6d7040d65998bff31080d61863"},"/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":3676,"mtime_ns":1780935335555306916,"hash":"13f0384ebe9d7faa752ad206924f5a57a10be7c946d407c06683edccd7cccdd1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":16206,"mtime_ns":1780935609936430225,"hash":"888a2f483f77f732b36bade88680932f90eb894b71514f42f465a7951399377f"},"/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":6537,"mtime_ns":1780935322520203272,"hash":"d5d864a6099b9fa6bae46d0bd564933100a910b43595c11aa9c43d78fc8994d6"},"/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":21466,"mtime_ns":1780808021903060285,"hash":"f861c2880f880eb6b7107280ce7e0a3b90cc8f7fee97e2410920483ba43af616"},"/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"}} \ 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":5059,"mtime_ns":1781955941378306037,"hash":"609c239c76aeec075d5a61c73f4d82a9a4774f93def5426a5b321625fc94b8d1"},"/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":5875,"mtime_ns":1781955926156903754,"hash":"d949b2ac48e035ba568a1b3d02a1ded1964f909cd19909c552592cc4313026e9"},"/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":1782002227127821720,"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":1782002227127776594,"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":1782002227127741386,"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":1782002227127797970,"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":1013,"mtime_ns":1780750904057179495,"hash":"b30a46c6fab214ca58787ff4e42a9ab2fdf933f1c4b6ee224d1799d9dd8918a6"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/bx_auth.py":{"size":1136,"mtime_ns":1780750556882334857,"hash":"38eb2cb16c0b187b946287ad8d6e0a2b5d008798cf3e99914ce29a6a3b3ab2ce"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_date_range.py":{"size":947,"mtime_ns":1780750556881768980,"hash":"2bbe961ad71f0be530f10d515b69615dbf887257028e339d4252b9ff2a5aba2b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py":{"size":4309,"mtime_ns":1782003134921705741,"hash":"828ecf5fc0fb3cc90caf7a9d18bb49fbd84ce1c04abf7c4c8ad79b5a1f17be46"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py":{"size":16644,"mtime_ns":1782003101273948156,"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":1782003128950778144,"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":5525,"mtime_ns":1782003134907623443,"hash":"1d95b34c3387836b31822436916e94ef3ce4a23d235316e3afef70ce515f4d73"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py":{"size":14030,"mtime_ns":1782003122050588591,"hash":"dccb96826c535efd9531f210e8eb8411f766b6caffaadf3363520d43aee16ca8"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py":{"size":29603,"mtime_ns":1782003118039177258,"hash":"820ada4853d96cff6a56bd1a78a565c2b2fb6f550659ed7230aa4ddeeba00268"},"/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":8703,"mtime_ns":1780935298135363918,"hash":"b2ea766a3b484751eb338f58daea244adb846dd4822299f787fcbec8e48abe19"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/__init__.py":{"size":596,"mtime_ns":1780804995132924586,"hash":"9dcfba4e404c5e5c2650c363d5860aecb61f3f6d7040d65998bff31080d61863"},"/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":3676,"mtime_ns":1780935335555306916,"hash":"13f0384ebe9d7faa752ad206924f5a57a10be7c946d407c06683edccd7cccdd1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/db/inventory.py":{"size":16206,"mtime_ns":1780935609936430225,"hash":"888a2f483f77f732b36bade88680932f90eb894b71514f42f465a7951399377f"},"/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":6537,"mtime_ns":1780935322520203272,"hash":"d5d864a6099b9fa6bae46d0bd564933100a910b43595c11aa9c43d78fc8994d6"},"/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":21466,"mtime_ns":1780808021903060285,"hash":"f861c2880f880eb6b7107280ce7e0a3b90cc8f7fee97e2410920483ba43af616"},"/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":40677,"mtime_ns":1781959945481618794,"hash":"897df40ba3fa9082db682948c4d08655d656993059957ab8792b7f63ccca6b5e"},"/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":12754,"mtime_ns":1781962477422079560,"hash":"967eff49d7a7065e1727f59b4f24e695e8ac021694691fc9ea7db5ac9b09a4e2"},"/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":31350,"mtime_ns":1781959510291878107,"hash":"31457e2ff507ac7a13c3df09a6496aa8428f6b5f9476235412f7b3ad2fb8d614"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py":{"size":25385,"mtime_ns":1781958790745960502,"hash":"a8734015dfce90289a7474f6a9e1462ef981ac26d9d9a55789b56ded91c4f277"},"/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":21866,"mtime_ns":1781959945683596329,"hash":"d24f23a85b29f305809098a2c08e2a82a2cd667abacc3f57d83c192f5e1bc380"},"/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":12536,"mtime_ns":1781957097735186399,"hash":"737c51c0f87a67b6a5b07374da0c6b55b02fd68a798f0538ad9cb6c448e3c4e7"}} \ No newline at end of file diff --git a/backend/graphify-out/graph.html b/backend/graphify-out/graph.html index 53abb4b83..5ecf18faa 100644 --- a/backend/graphify-out/graph.html +++ b/backend/graphify-out/graph.html @@ -63,12 +63,12 @@
-
3328 nodes · 21999 edges · 134 communities
+
3873 nodes · 29741 edges · 139 communities
+ + diff --git a/docs/fresh-mint-view-kv-layout-demos.html b/docs/fresh-mint-view-kv-layout-demos.html new file mode 100644 index 000000000..86c04e4cf --- /dev/null +++ b/docs/fresh-mint-view-kv-layout-demos.html @@ -0,0 +1,622 @@ + + + + + + Fresh Mint · 查看弹窗 KV 布局对比 Demo + + + + + + +
+
+

KV 布局 · 同一组数据 · 六种排法对比

+

+ 以下均使用相同的 12 个字段(含长路径、地址、备注),在 720px 宽弹窗场景下对比。 + 重点观察长值字段(所属区域、备注)在不同布局下的可读性。 + 另见 查看弹窗风格 Demo · + 宽弹窗多列 Demo。 +

+
+ +
+
推荐默认
+
特定场景适用
+
双列 grid 内慎用
+
+ +
+ +
+ 选型口诀:双列网格里用上下;单列窄条用左右行;字段 >12 条同质属性用表格;核心数字抽指标卡;字段 >15 个用 Tab 分区(不在此页展开)。 +
+
+ + + + + + + diff --git a/docs/fresh-mint-view-sparse-kv-demos.html b/docs/fresh-mint-view-sparse-kv-demos.html new file mode 100644 index 000000000..ce842733d --- /dev/null +++ b/docs/fresh-mint-view-sparse-kv-demos.html @@ -0,0 +1,11 @@ + + + + + + Fresh Mint · 少字段 KV 布局(跳转) + + +

正在跳转到 宽弹窗 Demo · 少字段稀疏场景…

+ + diff --git a/docs/fresh-mint-view-wide-dialog-demos.html b/docs/fresh-mint-view-wide-dialog-demos.html new file mode 100644 index 000000000..64aaa3dbd --- /dev/null +++ b/docs/fresh-mint-view-wide-dialog-demos.html @@ -0,0 +1,1860 @@ + + + + + + Fresh Mint · 宽弹窗多列布局 Demo + + + + + + +
+
+

宽弹窗 · 多列 KV 布局 Demo

+

+ 弹窗宽度 ≥920px 时,如何在不牺牲长值可读性的前提下提高信息密度。 + 以下 7 种方案使用同一组 18 个字段(含路径、地址、备注等长值),默认 KV 为上下堆叠。 + 若偏好左右表格(label | value),见「KV 表格模式」; + 指标卡、Tab、时间轴、手风琴等其他展示形态见「其他信息展示模式」。 + 相关:窄弹窗 KV 对比 · + 弹窗风格 Demo · + 少字段稀疏场景 +

+
+ 720px 双列(基准,不在此页) + 920px 三列起点 + 960px 分栏 / 双区块 + 1040px 四列 / 2×2 卡片 + 1120px 宽表双组 +
+
+ +
+ +
+

KV 表格模式(左右 label | value)

+

+ 与上下堆叠栅格相对:每行(或每半行)为左 label、右 value 的表格行,类似 el-descriptions 但样式对齐 Fresh Mint。 + 短字段可一行两组(四列);长字段独占整行。少字段时表格更饱满,不易显空。 +

+
+
+ +
+

其他信息展示模式

+

+ 除上下 KV 栅格与左右 KV 表格外,查看弹窗还可采用指标卡、属性行、Tab 分段、时间轴、手风琴、芯片摘要、路线进度、Bento 卡片等形态。 + 样式对齐规范 §9.6(view-timeline / view-route-bar / view-bento 等)。Tab 与手风琴在全屏预览中可点击交互。 +

+
+
+ +
+ 宽弹窗选型建议: + 短字段(编码/状态/日期)≥9 个 → 可用 3~4 列; + 含长路径/备注 → 长字段必须 span 跨整行(方案 C / G); + 字段可自然分组 → 优先 双区块并排(D)或 2×2 卡片(F),比单纯加列更易扫读; + 需「摘要 + 明细/轨迹」→ 用 左右分栏(E),左侧 1 列、右侧 2~3 列。 + 偏好左右对齐、表格感 → 见 KV 表格模式(M~R,推荐 N 双组四列)。 + 需流程/进度/折叠/分段 → 见 其他展示模式(S~Y)。 + 字段 ≤8 个 → 见下方「少字段稀疏场景」或 独立 Demo 页;表格方案见 Q / R。 +
+ +
+

少字段稀疏场景(≤8 个 KV)

+

+ 1040px 四列在字段少时容易「空荡荡」。常用手段:① 自适应降列 ② Hero 下沉 KPI + ③ Hero 芯片摘要 ④ 单卡片 Bento ⑤ 窄弹窗 720px。 + 实现上可在 SystemViewDialog 按 fields.length 动态设 gridColumns 与 width。 +

+
+
+
+ +
+
+
+ + + + diff --git a/docs/sql/20260619_pl_personnel_cert.sql b/docs/sql/20260619_pl_personnel_cert.sql new file mode 100644 index 000000000..4c512a4ac --- /dev/null +++ b/docs/sql/20260619_pl_personnel_cert.sql @@ -0,0 +1,163 @@ +-- ============================================================================= +-- 运输计划 · 车辆/人员/证书重构 — 增量 DDL +-- 日期: 2026-06-19 +-- 说明: 在已有 pl_ 表基础上新增/扩展,不删除 pl_driver(迁移后另脚本处理) +-- ============================================================================= + +SET NAMES utf8mb4; + +-- ----------------------------------------------------------------------------- +-- 1. pl_personnel(人员主表) +-- ----------------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `pl_personnel` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `personnel_name` varchar(100) NOT NULL COMMENT '姓名', + `phone_no` varchar(32) DEFAULT NULL COMMENT '手机号(非必填)', + `age` int(11) DEFAULT NULL COMMENT '年龄', + `id_card_no` varchar(32) DEFAULT NULL COMMENT '身份证号', + `status` char(1) NOT NULL DEFAULT '1' COMMENT '状态 1-在职 0-停用', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_phone` (`phone_no`), + KEY `idx_personnel_name` (`personnel_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-人员表'; + +-- ----------------------------------------------------------------------------- +-- 2. pl_cert(证书实例表) +-- ----------------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `pl_cert` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `owner_type` varchar(20) NOT NULL COMMENT '归属类型 vehicle-车辆 personnel-人员', + `owner_id` varchar(64) NOT NULL COMMENT '归属主体ID', + `cert_name` varchar(100) NOT NULL COMMENT '证书名称', + `cert_no` varchar(64) DEFAULT NULL COMMENT '证号', + `expire_date` date DEFAULT NULL COMMENT '有效期', + `remind_days` int(11) NOT NULL DEFAULT 30 COMMENT '提前提醒天数', + `attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL(逗号分隔)', + `status` varchar(20) NOT NULL DEFAULT 'valid' COMMENT '状态 valid-有效 expired-已过期 revoked-已作废', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_owner` (`owner_type`, `owner_id`), + KEY `idx_expire_date` (`expire_date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-证书表'; + +-- ----------------------------------------------------------------------------- +-- 3. pl_vehicle_personnel(车辆-人员关联,由 pl_vehicle_driver 演进) +-- ----------------------------------------------------------------------------- +CREATE TABLE IF NOT EXISTS `pl_vehicle_personnel` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `vehicle_id` varchar(64) NOT NULL COMMENT '车辆ID', + `personnel_id` varchar(64) NOT NULL COMMENT '人员ID', + `role` varchar(20) NOT NULL DEFAULT 'driver' COMMENT '角色 driver-司机 escort-押运员', + `is_default` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否默认司机 0-否 1-是', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '关联备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_personnel_id` (`personnel_id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_vehicle_role` (`vehicle_id`, `role`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆-人员关联表'; + +-- 若存在旧表 pl_vehicle_driver 且无 pl_vehicle_personnel 数据,由迁移脚本处理 + +-- ----------------------------------------------------------------------------- +-- 4. pl_document_reminder 扩展字段 +-- ----------------------------------------------------------------------------- +-- cert_id +SET @col_exists = ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'cert_id' +); +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE `pl_document_reminder` ADD COLUMN `cert_id` varchar(64) DEFAULT NULL COMMENT ''证书ID'' AFTER `id`', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- owner_type +SET @col_exists = ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'owner_type' +); +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE `pl_document_reminder` ADD COLUMN `owner_type` varchar(20) DEFAULT NULL COMMENT ''归属类型 vehicle/personnel'' AFTER `cert_id`', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- owner_id +SET @col_exists = ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'owner_id' +); +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE `pl_document_reminder` ADD COLUMN `owner_id` varchar(64) DEFAULT NULL COMMENT ''归属主体ID'' AFTER `owner_type`', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- owner_label +SET @col_exists = ( + SELECT COUNT(*) FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'owner_label' +); +SET @sql = IF(@col_exists = 0, + 'ALTER TABLE `pl_document_reminder` ADD COLUMN `owner_label` varchar(200) DEFAULT NULL COMMENT ''归属展示名(车牌/姓名)'' AFTER `owner_id`', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- driver_id 改为可空(兼容车辆主体提醒) +SET @col_nullable = ( + SELECT IS_NULLABLE FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'driver_id' +); +SET @sql = IF(@col_nullable = 'NO', + 'ALTER TABLE `pl_document_reminder` MODIFY COLUMN `driver_id` varchar(64) DEFAULT NULL COMMENT ''司机/人员ID(兼容)''', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @col_nullable = ( + SELECT IS_NULLABLE FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND COLUMN_NAME = 'driver_name' +); +SET @sql = IF(@col_nullable = 'NO', + 'ALTER TABLE `pl_document_reminder` MODIFY COLUMN `driver_name` varchar(100) DEFAULT NULL COMMENT ''司机/人员姓名(兼容)''', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- document_type 扩长以存 cert_name +ALTER TABLE `pl_document_reminder` + MODIFY COLUMN `document_type` varchar(100) NOT NULL COMMENT '证件类型/证书名称'; + +-- 新索引 +SET @idx_exists = ( + SELECT COUNT(*) FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'pl_document_reminder' AND INDEX_NAME = 'idx_cert_id' +); +SET @sql = IF(@idx_exists = 0, + 'ALTER TABLE `pl_document_reminder` ADD KEY `idx_cert_id` (`cert_id`)', + 'SELECT 1'); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; diff --git a/docs/sql/20260619_pl_personnel_cert_dict_menu.sql b/docs/sql/20260619_pl_personnel_cert_dict_menu.sql new file mode 100644 index 000000000..495c80f97 --- /dev/null +++ b/docs/sql/20260619_pl_personnel_cert_dict_menu.sql @@ -0,0 +1,146 @@ +-- ============================================================================= +-- 运输计划 · 人员/证书字典与菜单更新 +-- 日期: 2026-06-19 +-- ============================================================================= + +SET NAMES utf8mb4; + +-- ----------------------------------------------------------------------------- +-- 1. 字典类型 pl_personnel_role(人员角色) +-- ----------------------------------------------------------------------------- +INSERT INTO `sys_dict_type` ( + `id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + 'PL_PERSONNEL_ROLE', '运输人员角色', 'pl_personnel_role', 'shanxia2.0', 20, + '运输计划-人员角色 driver/escort', 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_type` WHERE `dict_type` = 'pl_personnel_role' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_ROLE_DRIVER', '司机', 'driver', 'primary', 'pl_personnel_role', 'shanxia2.0', 1, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_personnel_role' AND `dict_value` = 'driver' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_ROLE_ESCORT', '押运员', 'escort', 'warning', 'pl_personnel_role', 'shanxia2.0', 2, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_personnel_role' AND `dict_value` = 'escort' AND `del_flag` = 0 +); + +-- ----------------------------------------------------------------------------- +-- 2. 字典类型 pl_cert_name(证书名称引导) +-- ----------------------------------------------------------------------------- +INSERT INTO `sys_dict_type` ( + `id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + 'PL_CERT_NAME', '运输证书名称', 'pl_cert_name', 'shanxia2.0', 21, + '运输计划-证书名称引导录入', 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_type` WHERE `dict_type` = 'pl_cert_name' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_01', '行驶证', '行驶证', 'success', 'pl_cert_name', 'shanxia2.0', 1, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '行驶证' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_02', '道路运输证', '道路运输证', 'primary', 'pl_cert_name', 'shanxia2.0', 2, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '道路运输证' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_03', '驾驶证', '驾驶证', 'primary', 'pl_cert_name', 'shanxia2.0', 3, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '驾驶证' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_04', '押运员证', '押运员证', 'warning', 'pl_cert_name', 'shanxia2.0', 4, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '押运员证' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_05', '危化品从业资格证', '危化品从业资格证', 'danger', 'pl_cert_name', 'shanxia2.0', 5, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '危化品从业资格证' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_06', '保险单', '保险单', 'info', 'pl_cert_name', 'shanxia2.0', 6, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '保险单' AND `del_flag` = 0 +); + +INSERT INTO `sys_dict_data` ( + `id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, + `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT 'PL_CERT_07', '健康证', '健康证', 'info', 'pl_cert_name', 'shanxia2.0', 7, + NULL, 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_dict_data` WHERE `dict_type` = 'pl_cert_name' AND `dict_value` = '健康证' AND `del_flag` = 0 +); + +-- ----------------------------------------------------------------------------- +-- 3. 菜单:司机管理 → 人员管理,path driver → personnel +-- ----------------------------------------------------------------------------- +UPDATE `sys_menu` +SET + `menu_name` = '人员管理', + `path` = 'personnel', + `component` = 'pl/personnel/index', + `update_time` = NOW() +WHERE `id` = 'PL_DRIVER' AND `del_flag` = 0; diff --git a/docs/sql/20260619_pl_personnel_cert_migration.sql b/docs/sql/20260619_pl_personnel_cert_migration.sql new file mode 100644 index 000000000..c2d5dbb77 --- /dev/null +++ b/docs/sql/20260619_pl_personnel_cert_migration.sql @@ -0,0 +1,211 @@ +-- ============================================================================= +-- 运输计划 · 车辆/人员/证书重构 — 数据迁移 +-- 日期: 2026-06-19 +-- 前置: 先执行 docs/sql/20260619_pl_personnel_cert.sql +-- 说明: 从 pl_driver / pl_vehicle_driver 迁移至新表;可重复执行(幂等) +-- ============================================================================= + +SET NAMES utf8mb4; + +-- ----------------------------------------------------------------------------- +-- 1. pl_driver → pl_personnel(保留 id) +-- ----------------------------------------------------------------------------- +INSERT IGNORE INTO `pl_personnel` ( + `id`, `personnel_name`, `phone_no`, `age`, `id_card_no`, `status`, + `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + d.`id`, + d.`driver_name`, + NULLIF(TRIM(d.`phone_no`), ''), + NULL, + d.`id_card_no`, + '1', + d.`tenant_no`, + d.`order_num`, + d.`remark`, + d.`create_by`, + d.`create_dept_id`, + d.`create_time`, + d.`update_by`, + d.`update_time`, + d.`del_flag` +FROM `pl_driver` d +WHERE d.`del_flag` = 0 + AND NOT EXISTS (SELECT 1 FROM `pl_personnel` p WHERE p.`id` = d.`id`); + +-- ----------------------------------------------------------------------------- +-- 2. 司机证件 → pl_cert(owner_type=personnel, remind_days=30) +-- 证书 id 使用确定性前缀,便于幂等 +-- ----------------------------------------------------------------------------- + +-- 驾驶证 +INSERT INTO `pl_cert` ( + `id`, `owner_type`, `owner_id`, `cert_name`, `cert_no`, `expire_date`, `remind_days`, + `status`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + CONCAT(d.`id`, '-dl'), + 'personnel', + d.`id`, + '驾驶证', + d.`driving_license_no`, + d.`driving_license_expire`, + 30, + 'valid', + d.`tenant_no`, + d.`order_num`, + d.`remark`, + d.`create_by`, + d.`create_dept_id`, + d.`create_time`, + d.`update_by`, + d.`update_time`, + 0 +FROM `pl_driver` d +WHERE d.`del_flag` = 0 + AND d.`driving_license_expire` IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `pl_cert` c WHERE c.`id` = CONCAT(d.`id`, '-dl')); + +-- 行驶证(原存于司机表,迁移后挂人员;业务上可后续调整到车辆) +INSERT INTO `pl_cert` ( + `id`, `owner_type`, `owner_id`, `cert_name`, `cert_no`, `expire_date`, `remind_days`, + `status`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + CONCAT(d.`id`, '-vl'), + 'personnel', + d.`id`, + '行驶证', + d.`vehicle_license_no`, + d.`vehicle_license_expire`, + 30, + 'valid', + d.`tenant_no`, + d.`order_num`, + d.`remark`, + d.`create_by`, + d.`create_dept_id`, + d.`create_time`, + d.`update_by`, + d.`update_time`, + 0 +FROM `pl_driver` d +WHERE d.`del_flag` = 0 + AND d.`vehicle_license_expire` IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `pl_cert` c WHERE c.`id` = CONCAT(d.`id`, '-vl')); + +-- 危化品从业资格证 +INSERT INTO `pl_cert` ( + `id`, `owner_type`, `owner_id`, `cert_name`, `cert_no`, `expire_date`, `remind_days`, + `status`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + CONCAT(d.`id`, '-hc'), + 'personnel', + d.`id`, + '危化品从业资格证', + d.`hazmat_cert_no`, + d.`hazmat_cert_expire`, + 30, + 'valid', + d.`tenant_no`, + d.`order_num`, + d.`remark`, + d.`create_by`, + d.`create_dept_id`, + d.`create_time`, + d.`update_by`, + d.`update_time`, + 0 +FROM `pl_driver` d +WHERE d.`del_flag` = 0 + AND d.`hazmat_cert_expire` IS NOT NULL + AND NOT EXISTS (SELECT 1 FROM `pl_cert` c WHERE c.`id` = CONCAT(d.`id`, '-hc')); + +-- ----------------------------------------------------------------------------- +-- 3. pl_vehicle_driver → pl_vehicle_personnel(driver_id → personnel_id, role=driver) +-- ----------------------------------------------------------------------------- +INSERT IGNORE INTO `pl_vehicle_personnel` ( + `id`, `vehicle_id`, `personnel_id`, `role`, `is_default`, + `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + vd.`id`, + vd.`vehicle_id`, + vd.`driver_id`, + 'driver', + vd.`is_default`, + vd.`tenant_no`, + vd.`order_num`, + vd.`remark`, + vd.`create_by`, + vd.`create_dept_id`, + vd.`create_time`, + vd.`update_by`, + vd.`update_time`, + vd.`del_flag` +FROM `pl_vehicle_driver` vd +WHERE vd.`del_flag` = 0 + AND NOT EXISTS (SELECT 1 FROM `pl_vehicle_personnel` vp WHERE vp.`id` = vd.`id`); + +-- ----------------------------------------------------------------------------- +-- 4. 从 pl_vehicle.default_driver_id 修正 is_default(每车最多一条 is_default=1) +-- ----------------------------------------------------------------------------- +-- 先清零所有关联的 is_default +UPDATE `pl_vehicle_personnel` vp +INNER JOIN `pl_vehicle` v ON v.`id` = vp.`vehicle_id` AND v.`del_flag` = 0 +SET vp.`is_default` = 0 +WHERE vp.`del_flag` = 0 + AND vp.`role` = 'driver' + AND v.`default_driver_id` IS NOT NULL + AND v.`default_driver_id` != ''; + +-- 按车辆 default_driver_id 设置默认司机 +UPDATE `pl_vehicle_personnel` vp +INNER JOIN `pl_vehicle` v ON v.`id` = vp.`vehicle_id` AND v.`del_flag` = 0 +SET vp.`is_default` = 1 +WHERE vp.`del_flag` = 0 + AND vp.`role` = 'driver' + AND vp.`personnel_id` = v.`default_driver_id` + AND v.`default_driver_id` IS NOT NULL + AND v.`default_driver_id` != ''; + +-- 若 default_driver_id 有值但尚无关联行,补插一条 +INSERT IGNORE INTO `pl_vehicle_personnel` ( + `id`, `vehicle_id`, `personnel_id`, `role`, `is_default`, + `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + CONCAT('mig-vp-', v.`id`, '-', v.`default_driver_id`), + v.`id`, + v.`default_driver_id`, + 'driver', + 1, + v.`tenant_no`, + NULL, + '迁移自 default_driver_id', + v.`create_by`, + v.`create_dept_id`, + v.`create_time`, + v.`update_by`, + v.`update_time`, + 0 +FROM `pl_vehicle` v +WHERE v.`del_flag` = 0 + AND v.`default_driver_id` IS NOT NULL + AND v.`default_driver_id` != '' + AND EXISTS (SELECT 1 FROM `pl_personnel` p WHERE p.`id` = v.`default_driver_id` AND p.`del_flag` = 0) + AND NOT EXISTS ( + SELECT 1 FROM `pl_vehicle_personnel` vp + WHERE vp.`vehicle_id` = v.`id` + AND vp.`personnel_id` = v.`default_driver_id` + AND vp.`role` = 'driver' + AND vp.`del_flag` = 0 + ); diff --git a/docs/sql/20260620_crm_product_hazard_flags.sql b/docs/sql/20260620_crm_product_hazard_flags.sql new file mode 100644 index 000000000..e1a332ef4 --- /dev/null +++ b/docs/sql/20260620_crm_product_hazard_flags.sql @@ -0,0 +1,4 @@ +-- CRM 产品:易制毒 / 易制爆属性(运输计划证件校验前置) +ALTER TABLE `crm_product` + ADD COLUMN `is_toxic` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制毒 0-否 1-是' AFTER `tax_rate`, + ADD COLUMN `is_explosive` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制爆 0-否 1-是' AFTER `is_toxic`; diff --git a/docs/sql/20260620_crm_product_hazard_flags_all_yes.sql b/docs/sql/20260620_crm_product_hazard_flags_all_yes.sql new file mode 100644 index 000000000..0142fe54a --- /dev/null +++ b/docs/sql/20260620_crm_product_hazard_flags_all_yes.sql @@ -0,0 +1,10 @@ +-- 将 CRM 产品表中所有未删除产品的易制毒、易制爆属性批量设为「是」 +-- 前置:已执行 docs/sql/20260620_crm_product_hazard_flags.sql 添加字段 +-- 说明:仅更新 del_flag=0 的有效产品;0=否,1=是 + +UPDATE `crm_product` +SET + `is_toxic` = 1, + `is_explosive` = 1, + `update_time` = NOW() +WHERE `del_flag` = 0; diff --git a/docs/sql/20260620_pl_arrange_dibang.sql b/docs/sql/20260620_pl_arrange_dibang.sql new file mode 100644 index 000000000..6bff6de6f --- /dev/null +++ b/docs/sql/20260620_pl_arrange_dibang.sql @@ -0,0 +1,27 @@ +-- 安排运输 + 司机免登录 + 地磅联动 +-- 2026-06-20 + +ALTER TABLE pl_transport + ADD COLUMN driver_access_token VARCHAR(64) NULL COMMENT '司机免登录访问令牌' AFTER qr_expire_date; + +CREATE UNIQUE INDEX uk_pl_transport_driver_token ON pl_transport(driver_access_token); + +CREATE TABLE IF NOT EXISTS pl_transport_db_link ( + id VARCHAR(64) NOT NULL PRIMARY KEY COMMENT '主键ID', + transport_id VARCHAR(64) NOT NULL COMMENT '运输单ID', + plan_id VARCHAR(64) NOT NULL COMMENT '运输计划ID', + plan_product_id VARCHAR(64) NOT NULL COMMENT '计划产品行ID', + db_purchase_plan_id VARCHAR(64) NOT NULL COMMENT '地磅计划ID', + db_inventory_id VARCHAR(64) NOT NULL COMMENT '出入库单ID', + tenant_no VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + order_num INT NULL COMMENT '排序号', + remark VARCHAR(512) NULL COMMENT '备注', + create_by VARCHAR(64) NULL COMMENT '创建人id', + create_dept_id VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + update_by VARCHAR(64) NULL COMMENT '更新人id', + update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + del_flag TINYINT NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + KEY idx_pl_tdb_link_transport (transport_id), + KEY idx_pl_tdb_link_plan (plan_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输-地磅出入库关联'; diff --git a/docs/sql/20260620_pl_menu_rename_hide.sql b/docs/sql/20260620_pl_menu_rename_hide.sql new file mode 100644 index 000000000..269af8f67 --- /dev/null +++ b/docs/sql/20260620_pl_menu_rename_hide.sql @@ -0,0 +1,19 @@ +-- ============================================================================= +-- 运输管理 · 一级菜单更名 + 隐藏子菜单(运输管理、库存台账) +-- 日期: 2026-06-20 +-- ============================================================================= + +SET NAMES utf8mb4; + +UPDATE `sys_menu` +SET + `menu_name` = '运输管理', + `remark` = '运输管理父菜单', + `update_time` = NOW() +WHERE `id` = 'PL_MENU_ROOT' AND `del_flag` = 0; + +UPDATE `sys_menu` +SET + `visible` = '0', + `update_time` = NOW() +WHERE `id` IN ('PL_TRANSPORT', 'PL_INVENTORY') AND `del_flag` = 0; diff --git a/docs/sql/20260620_pl_plan_cert_menu.sql b/docs/sql/20260620_pl_plan_cert_menu.sql new file mode 100644 index 000000000..c8d2ba0c5 --- /dev/null +++ b/docs/sql/20260620_pl_plan_cert_menu.sql @@ -0,0 +1,20 @@ +-- ============================================================================= +-- 运输计划 · 危化品证上传菜单 +-- 日期: 2026-06-20 +-- ============================================================================= + +SET NAMES utf8mb4; + +INSERT INTO `sys_menu` ( + `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, + `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + 'PL_PLAN_CERT', '危化品证上传', 'PL_MENU_ROOT', 'C', 'plan-cert', 'pl/plan-cert/index', + 'pl:plan-cert:list', 1, '1', '1', 'shanxia2.0', 11, '危化品购买证/运输证上传', + 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_PLAN_CERT' AND `del_flag` = 0 +); diff --git a/docs/sql/20260620_pl_plan_logistics_fields.sql b/docs/sql/20260620_pl_plan_logistics_fields.sql new file mode 100644 index 000000000..6a961ac81 --- /dev/null +++ b/docs/sql/20260620_pl_plan_logistics_fields.sql @@ -0,0 +1,22 @@ +-- 运输计划 · 新增计划弹窗 — 物流/产品/运输量字段增量 +-- 执行前请备份;MySQL 5.7+ + +ALTER TABLE `pl_plan` + ADD COLUMN `pickup_address` varchar(500) DEFAULT NULL COMMENT '取货地址' AFTER `has_freight`, + ADD COLUMN `pickup_time` datetime DEFAULT NULL COMMENT '取货时间' AFTER `pickup_address`, + ADD COLUMN `pickup_notes` varchar(500) DEFAULT NULL COMMENT '取货注意事项' AFTER `pickup_time`, + ADD COLUMN `destination_address` varchar(500) DEFAULT NULL COMMENT '目的地地址' AFTER `pickup_notes`, + ADD COLUMN `delivery_time` datetime DEFAULT NULL COMMENT '送达时间' AFTER `destination_address`, + ADD COLUMN `destination_notes` varchar(500) DEFAULT NULL COMMENT '目的地注意事项' AFTER `delivery_time`; + +ALTER TABLE `pl_plan_product` + ADD COLUMN `category_name` varchar(200) DEFAULT NULL COMMENT '产品分类' AFTER `unit`, + ADD COLUMN `package_spec` varchar(200) DEFAULT NULL COMMENT '包装规格' AFTER `category_name`, + ADD COLUMN `delivery_method` varchar(50) DEFAULT NULL COMMENT '送货方式' AFTER `package_spec`, + ADD COLUMN `quantity` decimal(15,3) DEFAULT NULL COMMENT '合同数量' AFTER `delivery_method`, + ADD COLUMN `tax_price` decimal(15,4) DEFAULT NULL COMMENT '含税单价' AFTER `quantity`, + ADD COLUMN `tax_amount` decimal(15,2) DEFAULT NULL COMMENT '税费' AFTER `tax_price`, + ADD COLUMN `tax_subtotal` decimal(15,2) DEFAULT NULL COMMENT '含税总价' AFTER `tax_amount`; + +ALTER TABLE `pl_transport` + ADD COLUMN `transport_qty` decimal(15,3) DEFAULT NULL COMMENT '运输量(按重量计费基数)' AFTER `unit`; diff --git a/docs/sql/20260620_pl_plan_product_actual_qty.sql b/docs/sql/20260620_pl_plan_product_actual_qty.sql new file mode 100644 index 000000000..fc55b7d27 --- /dev/null +++ b/docs/sql/20260620_pl_plan_product_actual_qty.sql @@ -0,0 +1,5 @@ +-- 运输计划产品明细 · 新增实际数量字段 +-- 执行前请备份;MySQL 5.7+ + +ALTER TABLE `pl_plan_product` + ADD COLUMN `actual_qty` decimal(15,3) DEFAULT NULL COMMENT '实际数量' AFTER `quantity`; diff --git a/docs/sql/20260620_pl_plan_transport_prefill_rollback.sql b/docs/sql/20260620_pl_plan_transport_prefill_rollback.sql new file mode 100644 index 000000000..e045bff87 --- /dev/null +++ b/docs/sql/20260620_pl_plan_transport_prefill_rollback.sql @@ -0,0 +1,11 @@ +-- 回滚:20260620_pl_plan_transport_prefill.sql +-- 撤销 pl_plan 上误加的运输预选冗余字段(改由 pl_transport 草稿子表承载) +-- 执行前请备份;MySQL 5.7+ + +ALTER TABLE `pl_plan` + DROP COLUMN `has_invoice`, + DROP COLUMN `freight_price`, + DROP COLUMN `transport_qty`, + DROP COLUMN `freight_type`, + DROP COLUMN `distance_km`, + DROP COLUMN `carrier_id`; diff --git a/docs/sql/20260620_pl_self_vehicle_menu.sql b/docs/sql/20260620_pl_self_vehicle_menu.sql new file mode 100644 index 000000000..4835fd686 --- /dev/null +++ b/docs/sql/20260620_pl_self_vehicle_menu.sql @@ -0,0 +1,27 @@ +-- ============================================================================= +-- 运输计划 · 山峡自有车辆菜单(更名 + 增量) +-- 日期: 2026-06-20 +-- ============================================================================= + +SET NAMES utf8mb4; + +INSERT INTO `sys_menu` ( + `id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, + `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, + `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag` +) +SELECT + 'PL_SELF_VEHICLE', '山峡自有车辆', 'PL_MENU_ROOT', 'C', 'self-vehicle', 'pl/self-vehicle/index', + 'pl:self-vehicle:list', 1, '1', '1', 'shanxia2.0', 4, '自有类型车辆管理', + 'system', '', NOW(), NULL, NOW(), 0 +FROM DUAL +WHERE NOT EXISTS ( + SELECT 1 FROM `sys_menu` WHERE `id` = 'PL_SELF_VEHICLE' AND `del_flag` = 0 +); + +UPDATE `sys_menu` +SET + `menu_name` = '山峡自有车辆', + `remark` = '自有类型车辆管理', + `update_time` = NOW() +WHERE `id` = 'PL_SELF_VEHICLE' AND `del_flag` = 0; diff --git a/docs/sql/20260620_portal_hide_dashboard.sql b/docs/sql/20260620_portal_hide_dashboard.sql new file mode 100644 index 000000000..63cf844f6 --- /dev/null +++ b/docs/sql/20260620_portal_hide_dashboard.sql @@ -0,0 +1,24 @@ +-- ============================================================================= +-- 一体化门户 · 隐藏控制台菜单 +-- 日期: 2026-06-20 +-- ============================================================================= + +SET NAMES utf8mb4; + +UPDATE `sys_menu` +SET + `visible` = '0', + `update_time` = NOW() +WHERE `id` = 'DSH000000000000000000000000000001' AND `del_flag` = 0; + +UPDATE `sys_menu` +SET + `visible` = '0', + `update_time` = NOW() +WHERE `menu_name` = '控制台' + AND `parent_id` IN ( + SELECT `id` FROM ( + SELECT `id` FROM `sys_menu` WHERE `menu_name` IN ('Web管理端', '管理端') AND `del_flag` = 0 LIMIT 1 + ) AS web_root + ) + AND `del_flag` = 0; diff --git a/docs/sql/20260621_bx_reimburse_apply_reimburse_date.sql b/docs/sql/20260621_bx_reimburse_apply_reimburse_date.sql new file mode 100644 index 000000000..53d7b5de7 --- /dev/null +++ b/docs/sql/20260621_bx_reimburse_apply_reimburse_date.sql @@ -0,0 +1,23 @@ +-- 报销申请单:报销日期 + 标题序号(同日报销日期下序号唯一,支持高并发) +-- 兼容 MySQL 5.7(不支持 DEFAULT (CURRENT_DATE) 表达式默认值) + +ALTER TABLE `bx_reimburse_apply` + ADD COLUMN `reimburse_date` date NULL COMMENT '报销日期' AFTER `title`, + ADD COLUMN `title_seq` int(11) DEFAULT NULL COMMENT '标题序号(同租户同报销日期下自增,自动生成标题时使用)' AFTER `reimburse_date`; + +UPDATE `bx_reimburse_apply` +SET `reimburse_date` = DATE(`create_time`) +WHERE `reimburse_date` IS NULL; + +ALTER TABLE `bx_reimburse_apply` + MODIFY COLUMN `reimburse_date` date NOT NULL COMMENT '报销日期'; + +UPDATE `bx_reimburse_apply` +SET `title_seq` = CAST(RIGHT(`title`, 3) AS UNSIGNED) +WHERE `title_seq` IS NULL + AND `title` REGEXP '报销单[0-9]{11}$' + AND RIGHT(`title`, 3) REGEXP '^[0-9]{3}$'; + +ALTER TABLE `bx_reimburse_apply` + ADD UNIQUE KEY `uk_tenant_reimburse_date_title_seq` (`tenant_no`, `reimburse_date`, `title_seq`), + ADD KEY `idx_reimburse_date` (`reimburse_date`); diff --git a/docs/sql/pl_tables.sql b/docs/sql/pl_tables.sql new file mode 100644 index 000000000..93b43e18e --- /dev/null +++ b/docs/sql/pl_tables.sql @@ -0,0 +1,620 @@ +-- ============================================================================= +-- 运输计划管理模块 DDL +-- 生成时间: 2026-06-11 +-- 说明: pl_ 前缀,所有计划相关表 +-- ============================================================================= + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ----------------------------------------------------------------------------- +-- 1. 基础数据:承运商、车辆、人员、证书 +-- ----------------------------------------------------------------------------- + +-- ---------------------------- +-- Table structure for pl_carrier (承运商表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_carrier`; +CREATE TABLE `pl_carrier` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `carrier_name` varchar(200) NOT NULL COMMENT '承运商名称', + `contact_name` varchar(100) DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(32) DEFAULT NULL COMMENT '联系电话', + `status` char(1) NOT NULL DEFAULT '1' COMMENT '合作状态 1-合作中 0-已终止', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='承运商表'; + +-- ---------------------------- +-- Table structure for pl_vehicle (车辆表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_vehicle`; +CREATE TABLE `pl_vehicle` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `vehicle_type` varchar(20) NOT NULL COMMENT '车辆类型 self-自有 carrier-承运商', + `carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID(类型为承运商时必填)', + `carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称(冗余)', + `license_plate` varchar(20) NOT NULL COMMENT '车牌号', + `load_capacity` decimal(10,2) DEFAULT NULL COMMENT '载重(吨)', + `vehicle_status` varchar(20) NOT NULL DEFAULT 'available' COMMENT '车辆状态 available-可用 maintaining-维修中 scrapped-报废', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_license_plate` (`license_plate`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_vehicle_type` (`vehicle_type`), + KEY `idx_carrier_id` (`carrier_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆表'; + +-- ---------------------------- +-- Table structure for pl_personnel (人员表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_personnel`; +CREATE TABLE `pl_personnel` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `personnel_name` varchar(100) NOT NULL COMMENT '姓名', + `phone_no` varchar(32) DEFAULT NULL COMMENT '手机号(非必填)', + `age` int(11) DEFAULT NULL COMMENT '年龄', + `id_card_no` varchar(32) DEFAULT NULL COMMENT '身份证号', + `status` char(1) NOT NULL DEFAULT '1' COMMENT '状态 1-在职 0-停用', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_phone` (`phone_no`), + KEY `idx_personnel_name` (`personnel_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-人员表'; + +-- ---------------------------- +-- Table structure for pl_cert (证书表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_cert`; +CREATE TABLE `pl_cert` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `owner_type` varchar(20) NOT NULL COMMENT '归属类型 vehicle-车辆 personnel-人员', + `owner_id` varchar(64) NOT NULL COMMENT '归属主体ID', + `cert_name` varchar(100) NOT NULL COMMENT '证书名称', + `cert_no` varchar(64) DEFAULT NULL COMMENT '证号', + `expire_date` date DEFAULT NULL COMMENT '有效期', + `remind_days` int(11) NOT NULL DEFAULT 30 COMMENT '提前提醒天数', + `attachment_urls` varchar(2000) DEFAULT NULL COMMENT '附件URL(逗号分隔)', + `status` varchar(20) NOT NULL DEFAULT 'valid' COMMENT '状态 valid-有效 expired-已过期 revoked-已作废', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_owner` (`owner_type`, `owner_id`), + KEY `idx_expire_date` (`expire_date`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输计划-证书表'; + +-- ---------------------------- +-- Table structure for pl_vehicle_personnel (车辆-人员关联表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_vehicle_personnel`; +CREATE TABLE `pl_vehicle_personnel` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `vehicle_id` varchar(64) NOT NULL COMMENT '车辆ID', + `personnel_id` varchar(64) NOT NULL COMMENT '人员ID', + `role` varchar(20) NOT NULL DEFAULT 'driver' COMMENT '角色 driver-司机 escort-押运员', + `is_default` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否默认司机 0-否 1-是', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '关联备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_personnel_id` (`personnel_id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_vehicle_role` (`vehicle_id`, `role`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆-人员关联表'; + +-- ----------------------------------------------------------------------------- +-- 2. 计划管理:计划主表、产品明细、变更记录 +-- ----------------------------------------------------------------------------- + +-- ---------------------------- +-- Table structure for pl_plan (计划主表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan`; +CREATE TABLE `pl_plan` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_no` varchar(32) NOT NULL COMMENT '计划订单编号 SXDDHYYYYMMDD######', + `plan_date` date NOT NULL COMMENT '计划日期', + `belongs_company` varchar(20) NOT NULL COMMENT '归属公司 shanxia-安庆山峡 yundong-安徽云栋', + `plan_type` varchar(20) NOT NULL COMMENT '单据类型 direct-直销单 inbound-入库单 outbound-出库单', + `follow_status` varchar(30) NOT NULL DEFAULT 'draft' COMMENT '跟进状态', + `transport_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '运输安排状态 pending-待安排 arranged-已安排', + `archive_status` varchar(20) NOT NULL DEFAULT 'unarchived' COMMENT '归档状态 unarchived-未归档 archived-已归档', + `complete_status` varchar(10) NOT NULL DEFAULT 'no' COMMENT '完成状态 yes-是 no-否', + `contract_id` varchar(64) DEFAULT NULL COMMENT 'CRM合同ID', + `contract_no` varchar(50) DEFAULT NULL COMMENT '合同编号', + `supplier_id` varchar(64) DEFAULT NULL COMMENT '供应商ID', + `supplier_name` varchar(200) DEFAULT NULL COMMENT '供应商名称', + `destination_id` varchar(64) DEFAULT NULL COMMENT '目的地ID', + `destination_name` varchar(200) DEFAULT NULL COMMENT '目的地名称', + `customer_id` varchar(64) DEFAULT NULL COMMENT '客户ID', + `customer_name` varchar(200) DEFAULT NULL COMMENT '客户名称', + `contact_name` varchar(100) DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(32) DEFAULT NULL COMMENT '联系电话', + `party_a` varchar(200) DEFAULT NULL COMMENT '甲方', + `party_b` varchar(200) DEFAULT NULL COMMENT '乙方', + `contract_start_date` date DEFAULT NULL COMMENT '合同开始日期', + `contract_end_date` date DEFAULT NULL COMMENT '合同结束日期', + `delivery_method` varchar(20) DEFAULT NULL COMMENT '送货方式 self_pick-山峡自提 one_ticket-一票制 customer_pick-客户自提', + `settlement_method` varchar(50) DEFAULT NULL COMMENT '结算方式', + `has_freight` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否有运输费用 0-否 1-是', + `transport_id` varchar(64) DEFAULT NULL COMMENT '运输ID', + `transport_no` varchar(32) DEFAULT NULL COMMENT '运输编号', + `vehicle_id` varchar(64) DEFAULT NULL COMMENT '车辆ID', + `license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号', + `driver_id` varchar(64) DEFAULT NULL COMMENT '司机ID', + `driver_name` varchar(100) DEFAULT NULL COMMENT '司机姓名', + `total_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '计划总金额', + `freight_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '运费合计', + `notify_message` text COMMENT '通知信息(标准模板)', + `follow_user_id` varchar(64) DEFAULT NULL COMMENT '跟进人ID', + `follow_user_name` varchar(100) DEFAULT NULL COMMENT '跟进人姓名', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_plan_no` (`plan_no`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_plan_type` (`plan_type`), + KEY `idx_follow_status` (`follow_status`), + KEY `idx_plan_date` (`plan_date`), + KEY `idx_contract_id` (`contract_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划主表'; + +-- ---------------------------- +-- Table structure for pl_plan_product (计划产品明细表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan_product`; +CREATE TABLE `pl_plan_product` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_id` varchar(64) NOT NULL COMMENT '计划ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_no` varchar(50) NOT NULL COMMENT '产品编号', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `model` varchar(100) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位', + `is_explosive` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制爆 0-否 1-是', + `is_toxic` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否易制毒 0-否 1-是', + `purchase_cert_url` varchar(500) DEFAULT NULL COMMENT '购买证URL', + `transport_cert_url` varchar(500) DEFAULT NULL COMMENT '运输证URL', + `inbound_estimate_qty` decimal(15,3) DEFAULT NULL COMMENT '入库预估数', + `inbound_qty` decimal(15,3) DEFAULT NULL COMMENT '入库数', + `inbound_price` decimal(15,4) DEFAULT NULL COMMENT '入库价', + `inbound_amount` decimal(15,2) DEFAULT NULL COMMENT '入库金额', + `outbound_estimate_qty` decimal(15,3) DEFAULT NULL COMMENT '出库预估数', + `outbound_qty` decimal(15,3) DEFAULT NULL COMMENT '出库数', + `outbound_price` decimal(15,4) DEFAULT NULL COMMENT '出库单价', + `outbound_amount` decimal(15,2) DEFAULT NULL COMMENT '出库金额', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_product_id` (`product_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划产品明细表'; + +-- ---------------------------- +-- Table structure for pl_plan_change (计划变更记录表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan_change`; +CREATE TABLE `pl_plan_change` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_id` varchar(64) NOT NULL COMMENT '计划ID', + `change_type` varchar(30) NOT NULL COMMENT '变更类型', + `change_content` text COMMENT '变更内容', + `change_user_id` varchar(64) DEFAULT NULL COMMENT '变更人ID', + `change_user_name` varchar(100) DEFAULT NULL COMMENT '变更人姓名', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划变更记录表'; + +-- ----------------------------------------------------------------------------- +-- 3. 运输管理:运输表、审批记录 +-- ----------------------------------------------------------------------------- + +-- ---------------------------- +-- Table structure for pl_transport (运输表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_transport`; +CREATE TABLE `pl_transport` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `transport_no` varchar(32) NOT NULL COMMENT '运输编号 SXYS######', + `vehicle_id` varchar(64) DEFAULT NULL COMMENT '车辆ID', + `license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号', + `driver_id` varchar(64) DEFAULT NULL COMMENT '司机ID', + `driver_name` varchar(100) DEFAULT NULL COMMENT '司机姓名', + `driver_phone` varchar(32) DEFAULT NULL COMMENT '司机电话', + `carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID', + `carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称', + `transport_medium` varchar(100) DEFAULT NULL COMMENT '运输介质', + `start_point` varchar(200) DEFAULT NULL COMMENT '运输起点', + `end_point` varchar(200) DEFAULT NULL COMMENT '运输终点', + `distance_km` decimal(10,2) DEFAULT NULL COMMENT '运输公里数', + `unit` varchar(20) DEFAULT NULL COMMENT '计量单位 吨/趟', + `freight_price` decimal(15,4) DEFAULT NULL COMMENT '运输单价', + `freight_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '运输费用', + `freight_type` varchar(20) NOT NULL DEFAULT 'by_weight' COMMENT '运费计算方式 by_weight-按重量 by_trip-按趟次', + `has_invoice` smallint(6) NOT NULL DEFAULT 0 COMMENT '是否开票 0-否 1-是', + `qr_code` varchar(500) DEFAULT NULL COMMENT '二维码内容', + `qr_expire_date` date DEFAULT NULL COMMENT '二维码有效期', + `driver_access_token` varchar(64) DEFAULT NULL COMMENT '司机免登录访问令牌', + `transport_status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT '运输状态 draft-草稿 pending-待执行 executing-执行中 completed-已完成 cancelled-已取消', + `approval_status` varchar(20) NOT NULL DEFAULT 'none' COMMENT '审批状态 none-无需 pending-审批中 approved-已通过 rejected-已拒绝', + `feedback_time` datetime DEFAULT NULL COMMENT '回传时间', + `feedback_qty` decimal(15,3) DEFAULT NULL COMMENT '回传数量', + `feedback_images` text COMMENT '回传图片URLs(JSON数组)', + `feedback_remark` varchar(500) DEFAULT NULL COMMENT '回传备注', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_transport_no` (`transport_no`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_transport_status` (`transport_status`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_driver_id` (`driver_id`), + UNIQUE KEY `uk_pl_transport_driver_token` (`driver_access_token`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输表'; + +-- ---------------------------- +-- Table structure for pl_transport_db_link (运输-地磅出入库关联) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_transport_db_link`; +CREATE TABLE `pl_transport_db_link` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输单ID', + `plan_id` varchar(64) NOT NULL COMMENT '运输计划ID', + `plan_product_id` varchar(64) NOT NULL COMMENT '计划产品行ID', + `db_purchase_plan_id` varchar(64) NOT NULL COMMENT '地磅计划ID', + `db_inventory_id` varchar(64) NOT NULL COMMENT '出入库单ID', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pl_tdb_link_transport` (`transport_id`), + KEY `idx_pl_tdb_link_plan` (`plan_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输-地磅出入库关联'; + +-- ---------------------------- +-- Table structure for pl_plan_transport (计划-运输关联表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan_transport`; +CREATE TABLE `pl_plan_transport` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_id` varchar(64) NOT NULL COMMENT '计划ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输ID', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_transport_id` (`transport_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划-运输关联表'; + +-- ---------------------------- +-- Table structure for pl_transport_approval (运输审批记录表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_transport_approval`; +CREATE TABLE `pl_transport_approval` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输ID', + `approver_id` varchar(64) NOT NULL COMMENT '审批人ID', + `approver_name` varchar(100) NOT NULL COMMENT '审批人姓名', + `approval_order` int(11) NOT NULL COMMENT '审批顺序', + `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '审批状态 pending-待审批 approved-已通过 rejected-已拒绝', + `comment` varchar(500) DEFAULT NULL COMMENT '审批意见', + `approval_time` datetime DEFAULT NULL COMMENT '审批时间', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_transport_id` (`transport_id`), + KEY `idx_approver_id` (`approver_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输审批记录表'; + +-- ----------------------------------------------------------------------------- +-- 4. 运费结算 +-- ----------------------------------------------------------------------------- + +-- ---------------------------- +-- Table structure for pl_freight_settlement (运费结算表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_freight_settlement`; +CREATE TABLE `pl_freight_settlement` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `settlement_no` varchar(32) NOT NULL COMMENT '结算单编号', + `total_freight` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '运费合计', + `invoice_amount` decimal(15,2) DEFAULT NULL COMMENT '发票金额', + `invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号', + `invoice_date` date DEFAULT NULL COMMENT '开票日期', + `settlement_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_settlement_no` (`settlement_no`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_settlement_status` (`settlement_status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费结算表'; + +-- ---------------------------- +-- Table structure for pl_freight_settlement_transport (结算单-运输关联表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_freight_settlement_transport`; +CREATE TABLE `pl_freight_settlement_transport` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `settlement_id` varchar(64) NOT NULL COMMENT '结算单ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输ID', + `freight_amount` decimal(15,2) NOT NULL COMMENT '运费金额', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_settlement_id` (`settlement_id`), + KEY `idx_transport_id` (`transport_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算单-运输关联表'; + +-- ---------------------------- +-- Table structure for pl_remittance_voucher (汇款凭证表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_remittance_voucher`; +CREATE TABLE `pl_remittance_voucher` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `settlement_id` varchar(64) NOT NULL COMMENT '结算单ID', + `voucher_no` varchar(32) DEFAULT NULL COMMENT '凭证编号', + `remittance_date` date DEFAULT NULL COMMENT '汇款日期', + `remittance_amount` decimal(15,2) DEFAULT NULL COMMENT '汇款金额', + `voucher_urls` text COMMENT '凭证文件URLs(JSON数组)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_settlement_id` (`settlement_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='汇款凭证表'; + +-- ----------------------------------------------------------------------------- +-- 5. 库存管理 +-- ----------------------------------------------------------------------------- + +-- ---------------------------- +-- Table structure for pl_inventory (库存表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_inventory`; +CREATE TABLE `pl_inventory` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_no` varchar(50) NOT NULL COMMENT '产品编号', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `model` varchar(100) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位', + `stock_qty` decimal(15,3) NOT NULL DEFAULT 0.000 COMMENT '库存数量', + `stock_amount` decimal(15,2) NOT NULL DEFAULT 0.00 COMMENT '库存金额', + `low_stock_warning` decimal(15,3) DEFAULT NULL COMMENT '最低库存预警值', + `high_stock_warning` decimal(15,3) DEFAULT NULL COMMENT '最高库存预警值', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_product_id` (`product_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表'; + +-- ---------------------------- +-- Table structure for pl_inventory_transaction (库存流水表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_inventory_transaction`; +CREATE TABLE `pl_inventory_transaction` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `transaction_type` varchar(20) NOT NULL COMMENT '事务类型 inbound-入库 outbound-出库', + `plan_id` varchar(64) DEFAULT NULL COMMENT '计划ID', + `plan_no` varchar(32) DEFAULT NULL COMMENT '计划编号', + `qty` decimal(15,3) NOT NULL COMMENT '变动数量(正数入库/负数出库)', + `unit_price` decimal(15,4) NOT NULL COMMENT '单价', + `amount` decimal(15,2) NOT NULL COMMENT '金额', + `stock_after` decimal(15,3) NOT NULL COMMENT '变动后库存', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_product_id` (`product_id`), + KEY `idx_transaction_type` (`transaction_type`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_create_time` (`create_time`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水表'; + +-- ---------------------------- +-- Table structure for pl_inventory_warning (库存预警表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_inventory_warning`; +CREATE TABLE `pl_inventory_warning` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `warning_type` varchar(20) NOT NULL COMMENT '预警类型 low-低于最低 high-高于最高', + `current_qty` decimal(15,3) NOT NULL COMMENT '当前库存', + `threshold_value` decimal(15,3) NOT NULL COMMENT '阈值', + `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 resolved-已处理', + `resolve_time` datetime DEFAULT NULL COMMENT '处理时间', + `resolve_remark` varchar(500) DEFAULT NULL COMMENT '处理备注', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_product_id` (`product_id`), + KEY `idx_warning_type` (`warning_type`), + KEY `idx_status` (`status`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存预警表'; + +-- ---------------------------- +-- Table structure for pl_document_reminder (证件到期提醒表) +-- ---------------------------- +DROP TABLE IF EXISTS `pl_document_reminder`; +CREATE TABLE `pl_document_reminder` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `cert_id` varchar(64) DEFAULT NULL COMMENT '证书ID', + `owner_type` varchar(20) DEFAULT NULL COMMENT '归属类型 vehicle/personnel', + `owner_id` varchar(64) DEFAULT NULL COMMENT '归属主体ID', + `owner_label` varchar(200) DEFAULT NULL COMMENT '归属展示名(车牌/姓名)', + `driver_id` varchar(64) DEFAULT NULL COMMENT '司机/人员ID(兼容)', + `driver_name` varchar(100) DEFAULT NULL COMMENT '司机/人员姓名(兼容)', + `document_type` varchar(100) NOT NULL COMMENT '证件类型/证书名称', + `document_no` varchar(50) DEFAULT NULL COMMENT '证件号', + `expire_date` date NOT NULL COMMENT '到期日期', + `days_remaining` int(11) NOT NULL COMMENT '剩余天数', + `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 resolved-已处理', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT 0 COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_cert_id` (`cert_id`), + KEY `idx_driver_id` (`driver_id`), + KEY `idx_document_type` (`document_type`), + KEY `idx_expire_date` (`expire_date`), + KEY `idx_status` (`status`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='证件到期提醒表'; + +SET FOREIGN_KEY_CHECKS = 1; + +-- ============================================================================= +-- DDL 完成 +-- 共计 16 张表(含 pl_cert;pl_driver 已由 pl_personnel 替代) +-- ============================================================================= diff --git a/docs/sql/shanxia2.0.sql b/docs/sql/shanxia2.0.sql index 3ac529b6f..98064698e 100644 --- a/docs/sql/shanxia2.0.sql +++ b/docs/sql/shanxia2.0.sql @@ -11,7 +11,7 @@ Target Server Version : 50736 (5.7.36) File Encoding : 65001 - Date: 10/06/2026 20:54:12 + Date: 19/06/2026 10:57:20 */ SET NAMES utf8mb4; @@ -240,6 +240,8 @@ CREATE TABLE `bx_reimburse_apply` ( `id` varchar(64) NOT NULL COMMENT '主键ID(UUID)', `apply_code` varchar(32) NOT NULL COMMENT '报销单号(如 BX20260424001)', `title` varchar(256) NOT NULL COMMENT '报销标题', + `reimburse_date` date NOT NULL COMMENT '报销日期', + `title_seq` int(11) DEFAULT NULL COMMENT '标题序号(同租户同报销日期下自增,自动生成标题时使用)', `applicant_id` varchar(64) NOT NULL COMMENT '申请人用户ID', `applicant_name` varchar(64) NOT NULL COMMENT '申请人姓名(冗余)', `expense_id` varchar(64) NOT NULL COMMENT '费用项目ID(二级项目)', @@ -268,7 +270,9 @@ CREATE TABLE `bx_reimburse_apply` ( `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_apply_code` (`apply_code`) USING BTREE, + UNIQUE KEY `uk_tenant_reimburse_date_title_seq` (`tenant_no`,`reimburse_date`,`title_seq`) USING BTREE, KEY `idx_applicant_id` (`applicant_id`) USING BTREE, + KEY `idx_reimburse_date` (`reimburse_date`) USING BTREE, KEY `idx_status` (`status`) USING BTREE, KEY `idx_expense_id` (`expense_id`) USING BTREE, KEY `idx_tenant_no` (`tenant_no`) USING BTREE @@ -2272,6 +2276,668 @@ INSERT INTO `db_weighing_slip` (`id`, `vehicle_no`, `plan_no`, `cargo_name`, `sp INSERT INTO `db_weighing_slip` (`id`, `vehicle_no`, `plan_no`, `cargo_name`, `specification`, `business_type`, `product_id`, `batch_no`, `supplier`, `consignee`, `gross_weight`, `gross_weight_time`, `tare_weight`, `tare_weight_time`, `deduction`, `net_weight`, `planned_quantity`, `executed_quantity`, `purchase_plan_id`, `inbound_outbound_id`, `weighing_point`, `current_quantity`, `is_voided`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('AD77788B1E584E528091DDD4D176B9D1', '皖AT0991', 'SX-20260609234501001', '试剂氨水', 'AR', '入库', '2060282538849169409', 'CRKDH0000003', '安徽哇哈哈有限责任公司', '安庆市山峡化工有限公司', 56901, '2026-06-10 00:24:53', 27890, '2026-06-10 00:25:15', 0, 29011, 31000, 75101, '264E5A0A1CF840B8A2C8D10E9257957C', '2', '山峡化工', 32000, 0, 'shanxia2.0', NULL, NULL, 'd3000000000000000000000000000001', 'b13c2be2-4e71-11f1-9f47-00163e3bdd96', '2026-06-10 00:24:55', 'd3000000000000000000000000000001', '2026-06-10 00:25:29', 0); COMMIT; +-- ---------------------------- +-- Table structure for pl_carrier +-- ---------------------------- +DROP TABLE IF EXISTS `pl_carrier`; +CREATE TABLE `pl_carrier` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `carrier_name` varchar(200) NOT NULL COMMENT '承运商名称', + `contact_name` varchar(100) DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(32) DEFAULT NULL COMMENT '联系电话', + `status` char(1) NOT NULL DEFAULT '1' COMMENT '合作状态 1-合作中 0-已终止', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='承运商表'; + +-- ---------------------------- +-- Records of pl_carrier +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_document_reminder +-- ---------------------------- +DROP TABLE IF EXISTS `pl_document_reminder`; +CREATE TABLE `pl_document_reminder` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `driver_id` varchar(64) NOT NULL COMMENT '司机ID', + `driver_name` varchar(100) NOT NULL COMMENT '司机姓名', + `document_type` varchar(20) NOT NULL COMMENT '证件类型 driving_license-驾驶证 vehicle_license-行驶证 hazmat_cert-危化品证', + `document_no` varchar(50) DEFAULT NULL COMMENT '证件号', + `expire_date` date NOT NULL COMMENT '到期日期', + `days_remaining` int(11) NOT NULL COMMENT '剩余天数', + `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 resolved-已处理', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_driver_id` (`driver_id`), + KEY `idx_document_type` (`document_type`), + KEY `idx_expire_date` (`expire_date`), + KEY `idx_status` (`status`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='证件到期提醒表'; + +-- ---------------------------- +-- Records of pl_document_reminder +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_driver +-- ---------------------------- +DROP TABLE IF EXISTS `pl_driver`; +CREATE TABLE `pl_driver` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `driver_name` varchar(100) NOT NULL COMMENT '姓名', + `phone_no` varchar(32) NOT NULL COMMENT '手机号', + `id_card_no` varchar(32) DEFAULT NULL COMMENT '身份证号', + `driving_license_no` varchar(32) DEFAULT NULL COMMENT '驾驶证号', + `driving_license_expire` date DEFAULT NULL COMMENT '驾驶证有效期', + `vehicle_license_no` varchar(32) DEFAULT NULL COMMENT '行驶证号', + `vehicle_license_expire` date DEFAULT NULL COMMENT '行驶证有效期', + `hazmat_cert_no` varchar(32) DEFAULT NULL COMMENT '危化品证号', + `hazmat_cert_expire` date DEFAULT NULL COMMENT '危化品证有效期', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_phone` (`phone_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='司机表'; + +-- ---------------------------- +-- Records of pl_driver +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_freight_settlement +-- ---------------------------- +DROP TABLE IF EXISTS `pl_freight_settlement`; +CREATE TABLE `pl_freight_settlement` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `settlement_no` varchar(32) NOT NULL COMMENT '结算单编号', + `total_freight` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '运费合计', + `invoice_amount` decimal(15,2) DEFAULT NULL COMMENT '发票金额', + `invoice_no` varchar(50) DEFAULT NULL COMMENT '发票号', + `invoice_date` date DEFAULT NULL COMMENT '开票日期', + `settlement_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '结算状态 pending-待提交 submitted-已提交 approved-审核通过 confirmed-已确认', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_settlement_no` (`settlement_no`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_settlement_status` (`settlement_status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运费结算表'; + +-- ---------------------------- +-- Records of pl_freight_settlement +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_freight_settlement_transport +-- ---------------------------- +DROP TABLE IF EXISTS `pl_freight_settlement_transport`; +CREATE TABLE `pl_freight_settlement_transport` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `settlement_id` varchar(64) NOT NULL COMMENT '结算单ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输ID', + `freight_amount` decimal(15,2) NOT NULL COMMENT '运费金额', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_settlement_id` (`settlement_id`), + KEY `idx_transport_id` (`transport_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='结算单-运输关联表'; + +-- ---------------------------- +-- Records of pl_freight_settlement_transport +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_inventory +-- ---------------------------- +DROP TABLE IF EXISTS `pl_inventory`; +CREATE TABLE `pl_inventory` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_no` varchar(50) NOT NULL COMMENT '产品编号', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `model` varchar(100) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位', + `stock_qty` decimal(15,3) NOT NULL DEFAULT '0.000' COMMENT '库存数量', + `stock_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '库存金额', + `low_stock_warning` decimal(15,3) DEFAULT NULL COMMENT '最低库存预警值', + `high_stock_warning` decimal(15,3) DEFAULT NULL COMMENT '最高库存预警值', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_product_id` (`product_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存表'; + +-- ---------------------------- +-- Records of pl_inventory +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_inventory_transaction +-- ---------------------------- +DROP TABLE IF EXISTS `pl_inventory_transaction`; +CREATE TABLE `pl_inventory_transaction` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `transaction_type` varchar(20) NOT NULL COMMENT '事务类型 inbound-入库 outbound-出库', + `plan_id` varchar(64) DEFAULT NULL COMMENT '计划ID', + `plan_no` varchar(32) DEFAULT NULL COMMENT '计划编号', + `qty` decimal(15,3) NOT NULL COMMENT '变动数量(正数入库/负数出库)', + `unit_price` decimal(15,4) NOT NULL COMMENT '单价', + `amount` decimal(15,2) NOT NULL COMMENT '金额', + `stock_after` decimal(15,3) NOT NULL COMMENT '变动后库存', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_product_id` (`product_id`), + KEY `idx_transaction_type` (`transaction_type`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_create_time` (`create_time`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存流水表'; + +-- ---------------------------- +-- Records of pl_inventory_transaction +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_inventory_warning +-- ---------------------------- +DROP TABLE IF EXISTS `pl_inventory_warning`; +CREATE TABLE `pl_inventory_warning` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `warning_type` varchar(20) NOT NULL COMMENT '预警类型 low-低于最低 high-高于最高', + `current_qty` decimal(15,3) NOT NULL COMMENT '当前库存', + `threshold_value` decimal(15,3) NOT NULL COMMENT '阈值', + `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '状态 pending-待处理 resolved-已处理', + `resolve_time` datetime DEFAULT NULL COMMENT '处理时间', + `resolve_remark` varchar(500) DEFAULT NULL COMMENT '处理备注', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_product_id` (`product_id`), + KEY `idx_warning_type` (`warning_type`), + KEY `idx_status` (`status`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存预警表'; + +-- ---------------------------- +-- Records of pl_inventory_warning +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_plan +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan`; +CREATE TABLE `pl_plan` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_no` varchar(32) NOT NULL COMMENT '计划订单编号 SXDDHYYYYMMDD######', + `plan_date` date NOT NULL COMMENT '计划日期', + `belongs_company` varchar(20) NOT NULL COMMENT '归属公司 shanxia-安庆山峡 yundong-安徽云栋', + `plan_type` varchar(20) NOT NULL COMMENT '单据类型 direct-直销单 inbound-入库单 outbound-出库单', + `follow_status` varchar(30) NOT NULL DEFAULT 'draft' COMMENT '跟进状态', + `transport_status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '运输安排状态 pending-待安排 arranged-已安排', + `archive_status` varchar(20) NOT NULL DEFAULT 'unarchived' COMMENT '归档状态 unarchived-未归档 archived-已归档', + `complete_status` varchar(10) NOT NULL DEFAULT 'no' COMMENT '完成状态 yes-是 no-否', + `contract_id` varchar(64) DEFAULT NULL COMMENT 'CRM合同ID', + `contract_no` varchar(50) DEFAULT NULL COMMENT '合同编号', + `supplier_id` varchar(64) DEFAULT NULL COMMENT '供应商ID', + `supplier_name` varchar(200) DEFAULT NULL COMMENT '供应商名称', + `destination_id` varchar(64) DEFAULT NULL COMMENT '目的地ID', + `destination_name` varchar(200) DEFAULT NULL COMMENT '目的地名称', + `customer_id` varchar(64) DEFAULT NULL COMMENT '客户ID', + `customer_name` varchar(200) DEFAULT NULL COMMENT '客户名称', + `contact_name` varchar(100) DEFAULT NULL COMMENT '联系人', + `contact_phone` varchar(32) DEFAULT NULL COMMENT '联系电话', + `party_a` varchar(200) DEFAULT NULL COMMENT '甲方', + `party_b` varchar(200) DEFAULT NULL COMMENT '乙方', + `contract_start_date` date DEFAULT NULL COMMENT '合同开始日期', + `contract_end_date` date DEFAULT NULL COMMENT '合同结束日期', + `delivery_method` varchar(20) DEFAULT NULL COMMENT '送货方式 self_pick-山峡自提 one_ticket-一票制 customer_pick-客户自提', + `settlement_method` varchar(50) DEFAULT NULL COMMENT '结算方式', + `has_freight` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否有运输费用 0-否 1-是', + `transport_id` varchar(64) DEFAULT NULL COMMENT '运输ID', + `transport_no` varchar(32) DEFAULT NULL COMMENT '运输编号', + `vehicle_id` varchar(64) DEFAULT NULL COMMENT '车辆ID', + `license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号', + `driver_id` varchar(64) DEFAULT NULL COMMENT '司机ID', + `driver_name` varchar(100) DEFAULT NULL COMMENT '司机姓名', + `total_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '计划总金额', + `freight_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '运费合计', + `notify_message` text COMMENT '通知信息(标准模板)', + `follow_user_id` varchar(64) DEFAULT NULL COMMENT '跟进人ID', + `follow_user_name` varchar(100) DEFAULT NULL COMMENT '跟进人姓名', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_plan_no` (`plan_no`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_plan_type` (`plan_type`), + KEY `idx_follow_status` (`follow_status`), + KEY `idx_plan_date` (`plan_date`), + KEY `idx_contract_id` (`contract_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划主表'; + +-- ---------------------------- +-- Records of pl_plan +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_plan_change +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan_change`; +CREATE TABLE `pl_plan_change` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_id` varchar(64) NOT NULL COMMENT '计划ID', + `change_type` varchar(30) NOT NULL COMMENT '变更类型', + `change_content` text COMMENT '变更内容', + `change_user_id` varchar(64) DEFAULT NULL COMMENT '变更人ID', + `change_user_name` varchar(100) DEFAULT NULL COMMENT '变更人姓名', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划变更记录表'; + +-- ---------------------------- +-- Records of pl_plan_change +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_plan_product +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan_product`; +CREATE TABLE `pl_plan_product` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_id` varchar(64) NOT NULL COMMENT '计划ID', + `product_id` varchar(64) NOT NULL COMMENT '产品ID', + `product_no` varchar(50) NOT NULL COMMENT '产品编号', + `product_name` varchar(200) NOT NULL COMMENT '产品名称', + `model` varchar(100) DEFAULT NULL COMMENT '规格型号', + `unit` varchar(20) NOT NULL DEFAULT '吨' COMMENT '单位', + `is_explosive` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否易制爆 0-否 1-是', + `is_toxic` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否易制毒 0-否 1-是', + `purchase_cert_url` varchar(500) DEFAULT NULL COMMENT '购买证URL', + `transport_cert_url` varchar(500) DEFAULT NULL COMMENT '运输证URL', + `inbound_estimate_qty` decimal(15,3) DEFAULT NULL COMMENT '入库预估数', + `inbound_qty` decimal(15,3) DEFAULT NULL COMMENT '入库数', + `inbound_price` decimal(15,4) DEFAULT NULL COMMENT '入库价', + `inbound_amount` decimal(15,2) DEFAULT NULL COMMENT '入库金额', + `outbound_estimate_qty` decimal(15,3) DEFAULT NULL COMMENT '出库预估数', + `outbound_qty` decimal(15,3) DEFAULT NULL COMMENT '出库数', + `outbound_price` decimal(15,4) DEFAULT NULL COMMENT '出库单价', + `outbound_amount` decimal(15,2) DEFAULT NULL COMMENT '出库金额', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_product_id` (`product_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划产品明细表'; + +-- ---------------------------- +-- Records of pl_plan_product +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_plan_transport +-- ---------------------------- +DROP TABLE IF EXISTS `pl_plan_transport`; +CREATE TABLE `pl_plan_transport` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `plan_id` varchar(64) NOT NULL COMMENT '计划ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输ID', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_plan_id` (`plan_id`), + KEY `idx_transport_id` (`transport_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='计划-运输关联表'; + +-- ---------------------------- +-- Records of pl_plan_transport +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_remittance_voucher +-- ---------------------------- +DROP TABLE IF EXISTS `pl_remittance_voucher`; +CREATE TABLE `pl_remittance_voucher` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `settlement_id` varchar(64) NOT NULL COMMENT '结算单ID', + `voucher_no` varchar(32) DEFAULT NULL COMMENT '凭证编号', + `remittance_date` date DEFAULT NULL COMMENT '汇款日期', + `remittance_amount` decimal(15,2) DEFAULT NULL COMMENT '汇款金额', + `voucher_urls` text COMMENT '凭证文件URLs(JSON数组)', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_settlement_id` (`settlement_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='汇款凭证表'; + +-- ---------------------------- +-- Records of pl_remittance_voucher +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_transport +-- ---------------------------- +DROP TABLE IF EXISTS `pl_transport`; +CREATE TABLE `pl_transport` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `transport_no` varchar(32) NOT NULL COMMENT '运输编号 SXYS######', + `vehicle_id` varchar(64) DEFAULT NULL COMMENT '车辆ID', + `license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号', + `driver_id` varchar(64) DEFAULT NULL COMMENT '司机ID', + `driver_name` varchar(100) DEFAULT NULL COMMENT '司机姓名', + `driver_phone` varchar(32) DEFAULT NULL COMMENT '司机电话', + `carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID', + `carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称', + `transport_medium` varchar(100) DEFAULT NULL COMMENT '运输介质', + `start_point` varchar(200) DEFAULT NULL COMMENT '运输起点', + `end_point` varchar(200) DEFAULT NULL COMMENT '运输终点', + `distance_km` decimal(10,2) DEFAULT NULL COMMENT '运输公里数', + `unit` varchar(20) DEFAULT NULL COMMENT '计量单位 吨/趟', + `freight_price` decimal(15,4) DEFAULT NULL COMMENT '运输单价', + `freight_amount` decimal(15,2) NOT NULL DEFAULT '0.00' COMMENT '运输费用', + `freight_type` varchar(20) NOT NULL DEFAULT 'by_weight' COMMENT '运费计算方式 by_weight-按重量 by_trip-按趟次', + `has_invoice` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否开票 0-否 1-是', + `qr_code` varchar(500) DEFAULT NULL COMMENT '二维码内容', + `qr_expire_date` date DEFAULT NULL COMMENT '二维码有效期', + `driver_access_token` varchar(64) DEFAULT NULL COMMENT '司机免登录访问令牌', + `transport_status` varchar(20) NOT NULL DEFAULT 'draft' COMMENT '运输状态 draft-草稿 pending-待执行 executing-执行中 completed-已完成 cancelled-已取消', + `approval_status` varchar(20) NOT NULL DEFAULT 'none' COMMENT '审批状态 none-无需 pending-审批中 approved-已通过 rejected-已拒绝', + `feedback_time` datetime DEFAULT NULL COMMENT '回传时间', + `feedback_qty` decimal(15,3) DEFAULT NULL COMMENT '回传数量', + `feedback_images` text COMMENT '回传图片URLs(JSON数组)', + `feedback_remark` varchar(500) DEFAULT NULL COMMENT '回传备注', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_transport_no` (`transport_no`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_transport_status` (`transport_status`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_driver_id` (`driver_id`), + UNIQUE KEY `uk_pl_transport_driver_token` (`driver_access_token`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输表'; + +-- ---------------------------- +-- Records of pl_transport +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_transport_db_link +-- ---------------------------- +DROP TABLE IF EXISTS `pl_transport_db_link`; +CREATE TABLE `pl_transport_db_link` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输单ID', + `plan_id` varchar(64) NOT NULL COMMENT '运输计划ID', + `plan_product_id` varchar(64) NOT NULL COMMENT '计划产品行ID', + `db_purchase_plan_id` varchar(64) NOT NULL COMMENT '地磅计划ID', + `db_inventory_id` varchar(64) NOT NULL COMMENT '出入库单ID', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_pl_tdb_link_transport` (`transport_id`), + KEY `idx_pl_tdb_link_plan` (`plan_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输-地磅出入库关联'; + +-- ---------------------------- +-- Records of pl_transport_db_link +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_transport_approval +-- ---------------------------- +DROP TABLE IF EXISTS `pl_transport_approval`; +CREATE TABLE `pl_transport_approval` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `transport_id` varchar(64) NOT NULL COMMENT '运输ID', + `approver_id` varchar(64) NOT NULL COMMENT '审批人ID', + `approver_name` varchar(100) NOT NULL COMMENT '审批人姓名', + `approval_order` int(11) NOT NULL COMMENT '审批顺序', + `status` varchar(20) NOT NULL DEFAULT 'pending' COMMENT '审批状态 pending-待审批 approved-已通过 rejected-已拒绝', + `comment` varchar(500) DEFAULT NULL COMMENT '审批意见', + `approval_time` datetime DEFAULT NULL COMMENT '审批时间', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_transport_id` (`transport_id`), + KEY `idx_approver_id` (`approver_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='运输审批记录表'; + +-- ---------------------------- +-- Records of pl_transport_approval +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_vehicle +-- ---------------------------- +DROP TABLE IF EXISTS `pl_vehicle`; +CREATE TABLE `pl_vehicle` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `vehicle_type` varchar(20) NOT NULL COMMENT '车辆类型 self-自有 carrier-承运商', + `carrier_id` varchar(64) DEFAULT NULL COMMENT '承运商ID(类型为承运商时必填)', + `carrier_name` varchar(200) DEFAULT NULL COMMENT '承运商名称(冗余)', + `license_plate` varchar(20) NOT NULL COMMENT '车牌号', + `default_driver_id` varchar(64) DEFAULT NULL COMMENT '默认司机ID', + `default_driver_name` varchar(100) DEFAULT NULL COMMENT '默认司机姓名(冗余)', + `load_capacity` decimal(10,2) DEFAULT NULL COMMENT '载重(吨)', + `vehicle_status` varchar(20) NOT NULL DEFAULT 'available' COMMENT '车辆状态 available-可用 maintaining-维修中 scrapped-报废', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_license_plate` (`license_plate`), + KEY `idx_tenant` (`tenant_no`), + KEY `idx_vehicle_type` (`vehicle_type`), + KEY `idx_carrier_id` (`carrier_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆表'; + +-- ---------------------------- +-- Records of pl_vehicle +-- ---------------------------- +BEGIN; +COMMIT; + +-- ---------------------------- +-- Table structure for pl_vehicle_driver +-- ---------------------------- +DROP TABLE IF EXISTS `pl_vehicle_driver`; +CREATE TABLE `pl_vehicle_driver` ( + `id` varchar(64) NOT NULL COMMENT '主键ID', + `vehicle_id` varchar(64) NOT NULL COMMENT '车辆ID', + `driver_id` varchar(64) NOT NULL COMMENT '司机ID', + `is_default` smallint(6) NOT NULL DEFAULT '0' COMMENT '是否默认 0-否 1-是', + `tenant_no` varchar(64) NOT NULL DEFAULT 'shanxia2.0' COMMENT '租户编号', + `order_num` int(11) DEFAULT NULL COMMENT '排序号', + `remark` varchar(512) DEFAULT NULL COMMENT '备注', + `create_by` varchar(64) DEFAULT NULL COMMENT '创建人id', + `create_dept_id` varchar(64) NOT NULL DEFAULT '' COMMENT '创建人部门ID', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_by` varchar(64) DEFAULT NULL COMMENT '更新人id', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `del_flag` smallint(6) NOT NULL DEFAULT '0' COMMENT '删除标记:0-正常 1-已删除', + PRIMARY KEY (`id`), + KEY `idx_vehicle_id` (`vehicle_id`), + KEY `idx_driver_id` (`driver_id`), + KEY `idx_tenant` (`tenant_no`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆-司机关联表'; + +-- ---------------------------- +-- Records of pl_vehicle_driver +-- ---------------------------- +BEGIN; +COMMIT; + -- ---------------------------- -- Table structure for sys_api_request_log -- ---------------------------- @@ -2306,6 +2972,261 @@ CREATE TABLE `sys_api_request_log` ( -- Records of sys_api_request_log -- ---------------------------- BEGIN; +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('006C1E3C3AFC47EE9ED3CF3555C8F56C', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781128988564}', 200, 342, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:09', NULL, NULL, '2026-06-11 06:03:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('01A8365F4E834FD5B981C75F7A40C873', 'GET', '/api/transport/vehicle', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:55:34', NULL, NULL, '2026-06-11 05:55:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('02E3DEC99E6D42398CDEF5FC359F1D87', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 175, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:05', NULL, NULL, '2026-06-11 06:23:05', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('03F1036B25B94BF68706D0B7BD5A3F8C', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCmgpBpbdIigkbPz/Bgj\\nBYYLoOq/AeE9PGl57dPsezGVWNF1piJYWcmGRWtfi42pUB7TOiVwdSRQKzl5lNFt\\n50vHVskKUcMZFbNhMzlHhPrrULglS3GxSs+3iSxvdNlBuE6r8y2saiEGfQqyeQNZ\\nAWouTmXbFHodaeVwcIhOQblGcsvthklMd5/TPGIozChMKpz30NK948J3i3GkMbgT\\niYIrb5PUBQadsGr4B7ggWCl0ybDIqiTT3blf3bOZ3p6N/MUCYFsN3WQwA/xVjHry\\nxjeoRQFPOurBkvLyjcdVG3zXpy2j9pVqNzwA8ghm2nLCDVWeMLzfZAeYyFWiIhRW\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131764086}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:24', NULL, NULL, '2026-06-11 06:49:24', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('05EAB64199FC4D50A62B6682D1200A62', 'GET', '/api/transport/driver', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:26', NULL, NULL, '2026-06-11 06:00:26', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('068CBA885F4B4401B438EE54994BA60F', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781131740977}', 200, 121, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:01', NULL, NULL, '2026-06-11 06:49:01', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('091AE960C2234440B0E6D459DD02B08E', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 5, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:42:23', NULL, NULL, '2026-06-11 06:42:23', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('09A09D32308E4130851DCD6C55812274', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 178, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:07', NULL, NULL, '2026-06-11 06:23:08', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0A1D7C07A9324811B5157C9F43EE3E21', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130928439}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:28', NULL, NULL, '2026-06-11 06:35:28', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0B67A4AE858B46D59BAA92C414E9DBB8', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCmgpBpbdIigkbPz/Bgj\\nBYYLoOq/AeE9PGl57dPsezGVWNF1piJYWcmGRWtfi42pUB7TOiVwdSRQKzl5lNFt\\n50vHVskKUcMZFbNhMzlHhPrrULglS3GxSs+3iSxvdNlBuE6r8y2saiEGfQqyeQNZ\\nAWouTmXbFHodaeVwcIhOQblGcsvthklMd5/TPGIozChMKpz30NK948J3i3GkMbgT\\niYIrb5PUBQadsGr4B7ggWCl0ybDIqiTT3blf3bOZ3p6N/MUCYFsN3WQwA/xVjHry\\nxjeoRQFPOurBkvLyjcdVG3zXpy2j9pVqNzwA8ghm2nLCDVWeMLzfZAeYyFWiIhRW\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131709952}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:30', NULL, NULL, '2026-06-11 06:48:30', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0BD8B1135FA44DD79530983AC94B9F75', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781127873669}', 200, 155, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:34', NULL, NULL, '2026-06-11 05:44:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0BEDBED91AA64678BFEF019B1EBB8AFB', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', 'Timeout reading from 47.99.164.66:16379', 500, 30422, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:18', NULL, NULL, '2026-06-11 06:48:18', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0CA634D179D64790B853BBFAC12479DC', 'GET', '/api/transport/order/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:06', NULL, NULL, '2026-06-11 06:49:06', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0D46C9A7DF7F4F2FA20106100931A4AB', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 3278, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:53', NULL, NULL, '2026-06-11 06:34:53', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0E56BF93F48C4F3C8BAF3204114B22A9', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArINifqADXyIEEwR1LmxD\\ntOs2tw+pNe3GLVfhwRT/97JjuwifjD6kWtNcpGIrdmtvJTiSSmUYeX1bBtPyv8wM\\nL2LhV88siyZUHlVBEOAh5St6CCbIMwRWwdxJKxFnUNIlwIlxiWGWz2ib/HzcZvR2\\nv9gik/cm4e94gFlOo8NvRcIRJFf6YAlUfwE93W6hKSsDOmLDvnkdwbWboz9A01fa\\nRYkbOF42U7ibsP4hsOXBZtpM//WAZFU9UlqZ39PE2ABpVn+TE2pj+zgEMsyK9X5c\\n9OgEEFp2hY7SxqJfUUEb0Na/v0nItrJwZmCBImmdmRtRF0761HQ21PL717sc+JZo\\ngwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781128987842}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:08', NULL, NULL, '2026-06-11 06:03:08', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('0FFA17D706C8483D861F60594FB17030', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781131188920}', 200, 151, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:39:49', NULL, NULL, '2026-06-11 06:39:49', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('10080849EBC2460995EB15E846C04096', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128776420}', 200, 333, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:36', NULL, NULL, '2026-06-11 05:59:36', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('106636FCE9E2486DBCBF902934F9362D', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"无效的认证凭据\"}', 401, 7, 'd30000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:42:16', NULL, NULL, '2026-06-11 06:42:16', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('10B1B79B95CD47E79D78DD929D2A85E5', 'GET', '/api/payments/pending', 'page=1&pageSize=10', NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"rows\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10}}', 200, 500, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:48:50', NULL, NULL, '2026-06-11 05:48:50', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('12B346B6E04B4C7C9202C505D7C979D2', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781131764410}', 200, 341, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:24', NULL, NULL, '2026-06-11 06:49:24', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('12D15760F96F402E9E1259793433856A', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 318, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:11', NULL, NULL, '2026-06-11 06:35:11', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('13901ABE00A4408B96FA1A755D246AA5', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:44', NULL, NULL, '2026-06-11 06:17:44', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1404224A386D40B4BF64ECBF3CC1AB6C', 'POST', '/api/web/crm/clue/mine', NULL, '{\"page\": 1, \"pageSize\": 10}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10, \"totalPages\": 0}, \"timestamp\": 1781127888406}', 200, 298, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:48', NULL, NULL, '2026-06-11 05:44:48', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('16C8FB436C22401694BC22FE068E3EC5', 'POST', '/api/web/crm/product-categories/tree', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": [{\"id\": \"1975766404158746625\", \"parentId\": \"0\", \"categoryName\": \"有机原料\", \"categoryCode\": \"\", \"level\": 1, \"status\": \"0\", \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2025-10-08 11:33:13\", \"updateTime\": \"2026-05-31 06:07:57\", \"children\": []}, {\"id\": \"1975766458781167617\", \"parentId\": \"0\", \"categoryName\": \"无机原料\", \"categoryCode\": \"\", \"level\": 1, \"status\": \"0\", \"orderNum\": 1, \"remark\": \"\", \"createTime\": \"2025-10-08 11:33:26\", \"updateTime\": \"2026-05-31 06:07:58\", \"children\": []}, {\"id\": \"1975766539550879745\", \"parentId\": \"0\", \"categoryName\": \"水处理溶剂\", \"categoryCode\": \"\", \"level\": 1, \"status\": \"0\", \"orderNum\": 2, \"remark\": \"\", \"createTime\": \"2025-10-08 11:33:46\", \"updateTime\": \"2026-05-31 06:08:03\", \"children\": []}, {\"id\": \"1975766588632625154\", \"parentId\": \"0\", \"categoryName\": \"其他\", \"categoryCode\": \"\", \"level\": 1, \"status\": \"0\", \"orderNum\": 3, \"remark\": \"\", \"createTime\": \"2025-10-08 03:33:57\", \"updateTime\": \"2026-05-31 06:08:04\", \"children\": []}, {\"id\": \"1975766650771238913\", \"parentId\": \"0\", \"categoryName\": \"未分类\", \"categoryCode\": \"\", \"level\": 1, \"status\": \"0\", \"orderNum\": 4, \"remark\": \"\", \"createTime\": \"2025-10-08 11:34:12\", \"updateTime\": \"2026-05-31 06:08:06\", \"children\": []}], \"timestamp\": 1781131338880}', 200, 204, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:42:19', NULL, NULL, '2026-06-11 06:42:19', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('16FAAB5202E54E25869A75B6B67FFC81', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781131757224}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:17', NULL, NULL, '2026-06-11 06:49:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('19CCC2A1183A409C88B8CC4DF1AF3D7F', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 400, \"message\": \"用户名或密码错误\", \"data\": null, \"timestamp\": 1781130376326}', 200, 315, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:16', NULL, NULL, '2026-06-11 06:26:16', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1A8FA5B2491C476CB20F9885689C2D87', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:27', NULL, NULL, '2026-06-11 06:00:27', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1AA307081CA74EB781F000F69AD6F652', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 135, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:05', NULL, NULL, '2026-06-11 05:44:05', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1BCA930FB5A04C9ABCD245B6C9AFC7E5', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 400, \"message\": \"用户名或密码错误\", \"data\": null, \"timestamp\": 1781131187083}', 200, 337, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:39:47', NULL, NULL, '2026-06-11 06:39:47', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1BD0F21969444926AE3549FFF067C7DE', 'GET', '/api/payments/pending', 'page=1&pageSize=10', NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"rows\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10}}', 200, 297, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:49:20', NULL, NULL, '2026-06-11 05:49:20', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1C7D29290482445485FA257AA40EB6DF', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781128971262}', 200, 381, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:02:51', NULL, NULL, '2026-06-11 06:02:51', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('1F76B3CD02734EA98507C17CCB1E85F5', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 546, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:42', NULL, NULL, '2026-06-11 06:17:42', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('20F15636A12B489AA586D612EF5852B2', 'GET', '/api/transport/order/', 'page=1&pageSize=20', NULL, '{\"total\": 0, \"list\": []}', 200, 218, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:23', NULL, NULL, '2026-06-11 06:57:23', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('210369488A59467D9BE2ED9ED4E69657', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781131016887}', 200, 143, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:36:57', NULL, NULL, '2026-06-11 06:36:57', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('228C49235B6C4573A5637964396BFDF8', 'GET', '/api/transport/order', 'page=1&pageSize=20', NULL, NULL, 307, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:06', NULL, NULL, '2026-06-11 06:49:06', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('22A1E790D16D4615A036D31F18C87E4D', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 165, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:36:58', NULL, NULL, '2026-06-11 06:36:58', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('24D66AB8C83545EA8F0625F4546674A5', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 7, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:25', NULL, NULL, '2026-06-11 06:00:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('25AF2C8E9C0B4432819C80670F060DBB', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781836965184}', 200, 393, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:45', NULL, NULL, '2026-06-19 10:42:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2635462D3123401B851CA9A7F6299F87', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 352, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:14:37', NULL, NULL, '2026-06-11 06:14:37', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2AB7C1BC012A408492EBE3F2CFCED9B4', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130366786}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:07', NULL, NULL, '2026-06-11 06:26:07', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2B4C3FC4E57D4A078E48F4EA0C18F671', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 3429, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:43', NULL, NULL, '2026-06-11 06:29:43', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2B7DF0D30A494BB3BDE785FC90CE06C6', 'GET', '/api/transport/driver', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 2, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:55:34', NULL, NULL, '2026-06-11 05:55:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2C752508205542BDA82B40928FC46CB8', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130585231}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:45', NULL, NULL, '2026-06-11 06:29:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2E8F63BFF8BB49A09C9F8561756E3708', 'POST', '/api/web/crm/clue/mine', NULL, '{\"page\": 1, \"pageSize\": 10}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10, \"totalPages\": 0}, \"timestamp\": 1781127878982}', 200, 220, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:39', NULL, NULL, '2026-06-11 05:44:39', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2F0E641C448F4B8CAB66CC8F56EEF0D9', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 311, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:25', NULL, NULL, '2026-06-11 06:49:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('2FCC905F7E0C40058854E8ADD2064910', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130573493}', 200, 474, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:34', NULL, NULL, '2026-06-11 06:29:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('30A8EFA4889442F0A14C15991C167DDD', 'POST', '/api/web/crm/clue/mine', NULL, '{\"page\": 1, \"pageSize\": 10}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10, \"totalPages\": 0}, \"timestamp\": 1781128011120}', 200, 209, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:46:51', NULL, NULL, '2026-06-11 05:46:51', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('30F8E43A28A648C199CA05011B473A77', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128129085}', 200, 122, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:48:49', NULL, NULL, '2026-06-11 05:48:49', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('30FCA6A5A3DB4CAF8FD162B1A852265B', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 138, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:32', NULL, NULL, '2026-06-11 06:48:32', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('346A888293334F4295EE7D6C2F482327', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:37:00', NULL, NULL, '2026-06-11 06:37:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('35E55D378F1B410CA4E1BA219A757B16', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128971541}', 200, 258, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:02:52', NULL, NULL, '2026-06-11 06:02:52', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('370F757731C84BF48AE04222DB593140', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCmgpBpbdIigkbPz/Bgj\\nBYYLoOq/AeE9PGl57dPsezGVWNF1piJYWcmGRWtfi42pUB7TOiVwdSRQKzl5lNFt\\n50vHVskKUcMZFbNhMzlHhPrrULglS3GxSs+3iSxvdNlBuE6r8y2saiEGfQqyeQNZ\\nAWouTmXbFHodaeVwcIhOQblGcsvthklMd5/TPGIozChMKpz30NK948J3i3GkMbgT\\niYIrb5PUBQadsGr4B7ggWCl0ybDIqiTT3blf3bOZ3p6N/MUCYFsN3WQwA/xVjHry\\nxjeoRQFPOurBkvLyjcdVG3zXpy2j9pVqNzwA8ghm2nLCDVWeMLzfZAeYyFWiIhRW\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131753796}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:14', NULL, NULL, '2026-06-11 06:49:14', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3798BAD226804611856874EC69C9B2BE', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781132235779}', 200, 3322, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:16', NULL, NULL, '2026-06-11 06:57:16', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3841AB8FEF4C47EAB67AD297423B12F6', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ZnHv9Bv4fFQv6rkUyjZ\\nJ/0+KM/dDjWmz12MPCni0q5cAdFL5blIglP23t4pJlRBQ3RDTRPnmKltD2hI5jFk\\n0iY7oWAibj67zG1GfFhFql7+Z1qB4xFyrPNeAKDb4JkvDsOBFJVx7azaEBbyew/8\\nMMp+YFoxws+sHN9b0/DFBPTTfoGf6LlE//HfP9GdXCSZow/s8Ug6JL1cETudm6tI\\nyxrxGrHwzXJocifFWIRmeoXLUxqIyRXIIja88cUN+Vkufua966Shr4Yu/NpOK2Z1\\nAVM5Wib4gAXN+fw+zcR3/8sWhA+fPbQO8SXN2N3rn1EOgWQn6Pq8N+u+4Wtl9+Cj\\npwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781836964395}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:44', NULL, NULL, '2026-06-19 10:42:44', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('38D744A53DED40A8BBF804A44AFD39B3', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781836687792}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:38:08', NULL, NULL, '2026-06-19 10:38:08', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('394B0CDCC5F0483D834D494F8EF72FE1', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:02', NULL, NULL, '2026-06-11 06:03:02', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('39AB21A67229400F8D7CEC45C479915F', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 6, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:24', NULL, NULL, '2026-06-11 06:00:24', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('39D2C6C75F7945CF8D0F4344877E0E69', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 160, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:17', NULL, NULL, '2026-06-11 06:57:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3A861C9D88CD47C49BDD3264F22618C4', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 6, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:54:26', NULL, NULL, '2026-06-11 05:54:26', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3B97A15B998744369E805EAB1475BECF', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781131020078}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:37:00', NULL, NULL, '2026-06-11 06:37:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3C8B18F352264BAC99391E36155843BF', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 273, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:10', NULL, NULL, '2026-06-11 06:23:10', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3D39334D0C0B4EA083AADB00C98EEA18', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 512, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:09', NULL, NULL, '2026-06-11 06:23:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3DDF5D4B828E461A80F339B1ABAB8CC9', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128353681}', 200, 260, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:52:34', NULL, NULL, '2026-06-11 05:52:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('3FACEF2ACCD54351B99FDB970B7B7C42', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131186798}', 200, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:39:47', NULL, NULL, '2026-06-11 06:39:47', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('40559FFCB3044B879035B86E3040B68E', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131667515}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:47:48', NULL, NULL, '2026-06-11 06:47:48', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('408DB8C4F4824A5BAF90D5F0DFD3334D', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781131710735}', 200, 888, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:31', NULL, NULL, '2026-06-11 06:48:31', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('419B37432E7D4D27807E629BF0DBDAB1', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130593578}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:54', NULL, NULL, '2026-06-11 06:29:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('41BCA5106A2940C4AB5A5A695A246BD3', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781131757086}', 200, 276, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:17', NULL, NULL, '2026-06-11 06:49:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('431C99B5F53C43DD89A9FE3BACBEC0A2', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130183859}', 200, 152, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:04', NULL, NULL, '2026-06-11 06:23:04', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('44109819D52C4D16B5CE40F8DC982CF1', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 5, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:30:04', NULL, NULL, '2026-06-11 06:30:05', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('44FEF6B5CC3144498B2CDAFD96AD2985', 'GET', '/api/transport/vehicle', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 10, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:00', NULL, NULL, '2026-06-11 06:03:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('452E999D1A3148C3B7D624569D84EEEE', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128254307}', 200, 207, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:50:54', NULL, NULL, '2026-06-11 05:50:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('45E60A60E1D9409B8D80CE94C349000A', 'GET', '/api/transport/carrier', NULL, NULL, '{\"code\": 503, \"message\": \"数据库不可用:(1064, \\\"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'NULLS LAST, pl_carrier.create_time DESC\' at line 3\\\")\", \"data\": null, \"timestamp\": 1781129508043}', 503, 367, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:11:48', NULL, NULL, '2026-06-11 06:11:48', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('461E4975C32F48A2B751E57C78C4BD3F', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130678655}', 200, 278, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:31:19', NULL, NULL, '2026-06-11 06:31:19', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('46AB7180F7834EF19CA6D5FBDF33B952', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781129115228}', 200, 196, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:15', NULL, NULL, '2026-06-11 06:05:15', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('4C15184EADD84F52944A965D04E438A7', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 379, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:23', NULL, NULL, '2026-06-11 06:05:23', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('4DE960F9AF7F4B438AC710A9645CED14', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 401, \"message\": \"Token无效或已过期\", \"data\": null, \"timestamp\": 1781127843097}', 200, 23, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:03', NULL, NULL, '2026-06-11 05:44:03', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('4E8DA6BF68A545BE94EF5EA88C869E88', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 205, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:48', NULL, NULL, '2026-06-19 10:42:48', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('507E8F9B23F342B39268DB3296F41E4C', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:55', NULL, NULL, '2026-06-11 06:34:55', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('51CAA9A6200D414CAEA0D735E9384460', 'GET', '/api/transport/vehicle', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 7, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:25', NULL, NULL, '2026-06-11 06:00:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('52AFE2846C1445AC941B680BD7907BA2', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130594245}', 200, 296, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:54', NULL, NULL, '2026-06-11 06:29:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('54CE46D7AA2E47D598A422DD934CB9BF', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArINifqADXyIEEwR1LmxD\\ntOs2tw+pNe3GLVfhwRT/97JjuwifjD6kWtNcpGIrdmtvJTiSSmUYeX1bBtPyv8wM\\nL2LhV88siyZUHlVBEOAh5St6CCbIMwRWwdxJKxFnUNIlwIlxiWGWz2ib/HzcZvR2\\nv9gik/cm4e94gFlOo8NvRcIRJFf6YAlUfwE93W6hKSsDOmLDvnkdwbWboz9A01fa\\nRYkbOF42U7ibsP4hsOXBZtpM//WAZFU9UlqZ39PE2ABpVn+TE2pj+zgEMsyK9X5c\\n9OgEEFp2hY7SxqJfUUEb0Na/v0nItrJwZmCBImmdmRtRF0761HQ21PL717sc+JZo\\ngwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781128987849}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:08', NULL, NULL, '2026-06-11 06:03:08', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('55167411BD2E4EDEA505C2B41D4044AC', 'GET', '/api/payments/stats', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"pendingCount\": 0, \"paidCount\": 4, \"offsetCount\": 0, \"monthProcessedAmount\": 168123.0}}', 200, 325, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:49:20', NULL, NULL, '2026-06-11 05:49:20', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('56476F7A24E44625A122322149C4B6ED', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 5, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:11', NULL, NULL, '2026-06-11 06:23:11', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('56922A5A051142DF994495716446076F', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781131756795}', 200, 463, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:17', NULL, NULL, '2026-06-11 06:49:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('5741767449D044E5A09F1CD24E725140', 'GET', '/api/transport/driver', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:00', NULL, NULL, '2026-06-11 06:03:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('58A84084053446E49CBD940FA6CE83D8', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781131188748}', 200, 420, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:39:49', NULL, NULL, '2026-06-11 06:39:49', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('5D463E2D43234A0FBB6E3A9732EF3708', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781131745909}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:06', NULL, NULL, '2026-06-11 06:49:06', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('5E27FB4DC0604D078BB45CA0E2D30BA0', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:27', NULL, NULL, '2026-06-11 06:00:27', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('5EBF0D41E3D94FFDB4642A5E843E8138', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130678354}', 200, 460, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:31:18', NULL, NULL, '2026-06-11 06:31:19', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('5F48769E197E43E3B067622561059564', 'POST', '/api/web/crm/clue/mine', NULL, '{\"page\": 1, \"pageSize\": 10}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10, \"totalPages\": 0}, \"timestamp\": 1781127893647}', 200, 248, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:54', NULL, NULL, '2026-06-11 05:44:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('5F5D7BCF781C4383A9E9C8F7A36A2C2F', 'GET', '/api/transport/inventory/document-reminders', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 2, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:59', NULL, NULL, '2026-06-11 06:00:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('615A8E77CBE444C8801203E05D16F79E', 'GET', '/api/transport/order', 'page=1&pageSize=20', NULL, NULL, 307, 8, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:56:03', NULL, NULL, '2026-06-11 06:56:21', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('65B0B6A81D844ABD8EA774A1A48E875B', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 337, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:39:49', NULL, NULL, '2026-06-11 06:39:49', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('66AF7940A00E403AA57166E6191F8ACC', 'POST', '/api/transport/carrier', NULL, '{\"id\": \"\", \"carrierName\": \"测试承运商\", \"contactName\": \"李\", \"contactPhone\": \"13098900901\", \"status\": \"1\", \"remark\": \"测试\"}', '{\"detail\": [{\"type\": \"missing\", \"loc\": [\"body\", \"carrier_name\"], \"msg\": \"Field required\", \"input\": {\"id\": \"\", \"carrierName\": \"测试承运商\", \"contactName\": \"李\", \"contactPhone\": \"13098900901\", \"status\": \"1\", \"remark\": \"测试\"}, \"url\": \"https://errors.pydantic.dev/2.5/v/missing\"}]}', 422, 145, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:51:41', NULL, NULL, '2026-06-19 10:51:41', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('68E56805F95A4E5F9D65C2C225D2F020', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:34', NULL, NULL, '2026-06-11 06:48:35', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('69B5BE0C32D14BF08A455670F2401155', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:16', NULL, NULL, '2026-06-11 06:05:16', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6A13EDCBF4764FC78C72FE32896947D2', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781128981895}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:02', NULL, NULL, '2026-06-11 06:03:02', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6A8A749BC0994B3CAA055287726C1952', 'GET', '/api/payments/stats', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"pendingCount\": 0, \"paidCount\": 4, \"offsetCount\": 0, \"monthProcessedAmount\": 168123.0}}', 200, 525, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:48:50', NULL, NULL, '2026-06-11 05:48:50', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6AA512D4EB19419AA2E0FE4D4F197FB8', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 401, \"message\": \"Token无效或已过期\", \"data\": null, \"timestamp\": 1781836687154}', 200, 12, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:38:07', NULL, NULL, '2026-06-19 10:38:08', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6ABD2C02A0A24F6FB6075BB060ED5015', 'GET', '/api/transport/inventory/document-reminders', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:54', NULL, NULL, '2026-06-11 05:59:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6CB95B54AA164B748D76BB4DD7C4ED0F', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:28', NULL, NULL, '2026-06-11 06:05:28', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6DD94586144B4A8C99215B47BBE731B5', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:33', NULL, NULL, '2026-06-11 06:05:33', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6E20E5DB1EB8478096E7C373F13190B0', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 170, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:30:01', NULL, NULL, '2026-06-11 06:30:01', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6E8A78FD96584251B4DC54510FA37487', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130895311}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:55', NULL, NULL, '2026-06-11 06:34:55', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6EEC148BEECE48A4804F356BB11D6E73', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 303, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:09', NULL, NULL, '2026-06-11 06:03:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6F8CCF2DF88F4432B70BDEE9D905871C', 'GET', '/api/bx/health', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"status\": \"ok\", \"module\": \"bx\"}}', 200, 6, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:46:17', NULL, NULL, '2026-06-11 06:46:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('6FA5DC13BCB94BBC8592ACB1EC583930', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"detail\": \"无效的认证凭据\"}', 401, 3, 'd30000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:47:05', NULL, NULL, '2026-06-11 06:47:05', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7470F9CBF8CF4EF19D8162AFB843B9D8', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 400, \"message\": \"用户名或密码错误\", \"data\": null, \"timestamp\": 1781131754131}', 200, 358, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:14', NULL, NULL, '2026-06-11 06:49:14', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('787626C8A324482CB57170AD265DE540', 'GET', '/api/payments/pending', 'page=1&pageSize=10', NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"rows\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10}}', 200, 327, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:47:03', NULL, NULL, '2026-06-11 05:47:03', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('79D212991B6F452EAF6974C935D3F031', 'GET', '/api/transport/inventory/ledger', 'page=1&pageSize=20', NULL, '{\"total\": 0, \"list\": []}', 200, 272, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:25', NULL, NULL, '2026-06-11 06:57:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7A49CDE5D5C54EC5BBEB1DD5A7A3888A', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 514, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:09', NULL, NULL, '2026-06-11 06:23:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7B3EA1AD8F6C48A1B3B51A0089DE9EAE', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130931347}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:31', NULL, NULL, '2026-06-11 06:35:31', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7DD28BC0A96E4BBF826E7DC937847093', 'GET', '/api/transport/vehicle', NULL, NULL, '[]', 200, 441, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:09', NULL, NULL, '2026-06-11 06:23:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7E3BDBF911BF491B892D2D17A33EC1CC', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128489674}', 200, 272, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:54:50', NULL, NULL, '2026-06-11 05:54:50', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7FB3AA18804A4511AAEB8972F5CD3ECF', 'POST', '/api/web/crm/clue/mine', NULL, '{\"page\": 1, \"pageSize\": 10}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10, \"totalPages\": 0}, \"timestamp\": 1781127897225}', 200, 352, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:57', NULL, NULL, '2026-06-11 05:44:57', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('7FFBB1DF40E2479CA3FD1FF198D4D59A', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"total\": 0, \"list\": []}', 200, 297, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:21', NULL, NULL, '2026-06-11 06:57:21', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8084D4A6ABB14AEFA0B347F70C4B8610', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130909414}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:09', NULL, NULL, '2026-06-11 06:35:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('81BBE61CB7B041789B15E122624CF5CD', 'GET', '/api/bx/health', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"status\": \"ok\", \"module\": \"bx\"}}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:46:53', NULL, NULL, '2026-06-11 06:46:53', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('829D0D62747741D0AD2AC7BC46937CB3', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781129675777}', 200, 596, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:14:36', NULL, NULL, '2026-06-11 06:14:36', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('834D08DC421C4F85BC88F9DA30F6B8A8', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781128827280}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:27', NULL, NULL, '2026-06-11 06:00:27', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('83583023C11743A082BAAB943B5222D1', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781128988538}', 200, 722, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:09', NULL, NULL, '2026-06-11 06:03:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('84B6A7694A7C48A0902016A23BD84C7C', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 2, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:45', NULL, NULL, '2026-06-11 06:29:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('84F8F1DF64004B56B5CB425905FC3713', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 5, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:42:23', NULL, NULL, '2026-06-11 06:42:23', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('852C183EE017498D835399E891A8FF35', 'GET', '/api/transport/vehicle', NULL, NULL, '[]', 200, 327, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:40', NULL, NULL, '2026-06-11 06:29:40', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('85C2DE4BAFD44E308F7380CFB54484CA', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 330, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:39', NULL, NULL, '2026-06-11 06:29:39', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('863E489713324AEF9192171F6236841D', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128777641}', 200, 3175, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:38', NULL, NULL, '2026-06-11 05:59:38', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('870E546792B049848F7C6871613FAACE', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128778777}', 200, 3161, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:39', NULL, NULL, '2026-06-11 05:59:39', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('87A9AB56083347359A67B9B688DED350', 'GET', '/api/transport/inventory/document-reminders', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:12', NULL, NULL, '2026-06-11 06:03:12', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('87E293185286420F846DB26675D32384', 'GET', '/api/transport/inventory/document-reminders', NULL, NULL, '[]', 200, 226, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:25', NULL, NULL, '2026-06-11 06:57:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8870EF0C3CBB4B4E8DC92421782D5C1A', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781131343035}', 200, 5, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:42:23', NULL, NULL, '2026-06-11 06:42:23', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('88BBABDD362546DB8578172E3D356AD7', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:11', NULL, NULL, '2026-06-11 06:23:11', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('89FE6E1865144B2A83D6227C7A6447EA', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 400, \"message\": \"用户名或密码错误\", \"data\": null, \"timestamp\": 1781130924951}', 200, 301, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:25', NULL, NULL, '2026-06-11 06:35:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8B0FAB03F74E41D0B80A34040FFC7E89', 'GET', '/api/reimburses', 'page=1&pageSize=20', NULL, NULL, 307, 2, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:56:10', NULL, NULL, '2026-06-11 06:56:11', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8B396D5ADEEB458EA1680BA87091ECC1', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130183687}', 200, 958, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:04', NULL, NULL, '2026-06-11 06:23:04', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8C47DAF59EBB42E6A56929268AA1024B', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 168, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:43', NULL, NULL, '2026-06-11 06:17:43', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8E0D9B15BE9A4EFE916CA6F98B70BB7B', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:55:34', NULL, NULL, '2026-06-11 05:55:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8F8D0F93A8A14728BDC52EC575574E1A', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130190916}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:11', NULL, NULL, '2026-06-11 06:23:11', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('8FD684C5999D4B10AB1A7783818863C3', 'GET', '/api/transport/order', 'page=1&pageSize=20', NULL, NULL, 307, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:17', NULL, NULL, '2026-06-11 06:49:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9047A918BB444AB4A794CE86DF0682A6', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 400, \"message\": \"用户名或密码错误\", \"data\": null, \"timestamp\": 1781130566619}', 200, 350, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:27', NULL, NULL, '2026-06-11 06:29:27', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('918D5844194E4CF29472E626A9AA8EE5', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:45', NULL, NULL, '2026-06-11 06:29:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('92777FD146C741E6A6EF921F88985807', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 400, \"message\": \"用户名或密码错误\", \"data\": null, \"timestamp\": 1781130367076}', 200, 367, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:07', NULL, NULL, '2026-06-11 06:26:07', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('92C0840B27E4423B8A278C95056F7523', 'GET', '/api/transport/order/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:56:03', NULL, NULL, '2026-06-11 06:56:21', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('960DA458A7B74D0DA26BD244B33A2EC0', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:31', NULL, NULL, '2026-06-11 06:35:31', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('99E33DDF15D94E6FAC0DBB93244DDC4B', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781131711026}', 200, 124, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:31', NULL, NULL, '2026-06-11 06:48:31', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9AA5AA8773374848B4AE314FBEF9A66A', 'GET', '/api/inventory/', 'dateFrom=2026-06-11&dateTo=2026-06-11', NULL, '[]', 200, 330, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:37', NULL, NULL, '2026-06-11 05:44:37', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9B088DE4B6634ED2AAB5B8005053C79B', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 5, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:25', NULL, NULL, '2026-06-11 06:26:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9BDE9821248D4DA596E73D2080709E42', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 334, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:09', NULL, NULL, '2026-06-11 06:34:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9C5B39482A47429CB750B3282F4C9A7D', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131188359}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:39:48', NULL, NULL, '2026-06-11 06:39:48', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9DA19FD46E8F43CA8BE795FCAC31C61B', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130909980}', 200, 145, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:10', NULL, NULL, '2026-06-11 06:35:10', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('9DD26FBFD85B494E9ABC5E233F65753B', 'GET', '/api/web/admin/users/options', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": [{\"label\": \"测试账号1\", \"value\": \"BFB4CBEAB7054F48BDE82B55A985798C\", \"nickName\": \"测试账号1\", \"userNo\": \"ceshi1\"}, {\"label\": \"系统管理员\", \"value\": \"d3000000000000000000000000000001\", \"nickName\": \"系统管理员\", \"userNo\": \"admin\"}], \"timestamp\": 1781128023238}', 200, 269, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:47:03', NULL, NULL, '2026-06-11 05:47:03', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A06F83A7431945CF9AB980B5B4769389', 'GET', '/api/transport/carrier', NULL, NULL, '{\"code\": 503, \"message\": \"数据库不可用:(1064, \\\"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'NULLS LAST, pl_carrier.create_time DESC\' at line 3\\\")\", \"data\": null, \"timestamp\": 1781129523680}', 503, 313, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:12:04', NULL, NULL, '2026-06-11 06:12:04', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A1754F1362944C8199BFFD14EC5E1B9C', 'GET', '/api/transport/inventory/document-reminders', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 6, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:55:06', NULL, NULL, '2026-06-11 05:55:06', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A18527AED075419F9D65B5A0D77CC824', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 7, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:00', NULL, NULL, '2026-06-11 06:03:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A4447768A0B64CD9A18590A8BC7A70CD', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 8, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:02', NULL, NULL, '2026-06-11 06:03:02', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A66E169B913E42F5956AD004DA47C241', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128793222}', 200, 317, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:53', NULL, NULL, '2026-06-11 05:59:53', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A6FE5B80067A4710ACC07432B0B54505', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 140, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:55:17', NULL, NULL, '2026-06-11 05:55:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A7CF676CC496422FA4B3C14F5EE8A8A9', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 274, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:35', NULL, NULL, '2026-06-11 05:44:35', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A950B199AAD64335B4606CDA5C1F0B35', 'GET', '/api/web/admin/users/options', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": [{\"label\": \"测试账号1\", \"value\": \"BFB4CBEAB7054F48BDE82B55A985798C\", \"nickName\": \"测试账号1\", \"userNo\": \"ceshi1\"}, {\"label\": \"系统管理员\", \"value\": \"d3000000000000000000000000000001\", \"nickName\": \"系统管理员\", \"userNo\": \"admin\"}], \"timestamp\": 1781128130075}', 200, 423, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:48:50', NULL, NULL, '2026-06-11 05:48:50', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A979BDB36F034FDBA067461E79F95E23', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 173, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:30', NULL, NULL, '2026-06-11 06:35:30', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('A98B8DFBB41F4B88A4D5AA89E7AC65C6', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781129863941}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:44', NULL, NULL, '2026-06-11 06:17:44', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ABD9D9DD690E4BB68913B97884507358', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCmgpBpbdIigkbPz/Bgj\\nBYYLoOq/AeE9PGl57dPsezGVWNF1piJYWcmGRWtfi42pUB7TOiVwdSRQKzl5lNFt\\n50vHVskKUcMZFbNhMzlHhPrrULglS3GxSs+3iSxvdNlBuE6r8y2saiEGfQqyeQNZ\\nAWouTmXbFHodaeVwcIhOQblGcsvthklMd5/TPGIozChMKpz30NK948J3i3GkMbgT\\niYIrb5PUBQadsGr4B7ggWCl0ybDIqiTT3blf3bOZ3p6N/MUCYFsN3WQwA/xVjHry\\nxjeoRQFPOurBkvLyjcdVG3zXpy2j9pVqNzwA8ghm2nLCDVWeMLzfZAeYyFWiIhRW\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131740416}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:00', NULL, NULL, '2026-06-11 06:49:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('AC7E730E60A84FF3AEE86F23F7869C00', 'POST', '/api/transport/carrier', NULL, '{\"id\": \"\", \"carrierName\": \"测试承运商\", \"contactName\": \"李\", \"contactPhone\": \"13098900901\", \"status\": \"1\", \"remark\": \"测试\"}', '{\"detail\": [{\"type\": \"missing\", \"loc\": [\"body\", \"carrier_name\"], \"msg\": \"Field required\", \"input\": {\"id\": \"\", \"carrierName\": \"测试承运商\", \"contactName\": \"李\", \"contactPhone\": \"13098900901\", \"status\": \"1\", \"remark\": \"测试\"}, \"url\": \"https://errors.pydantic.dev/2.5/v/missing\"}]}', 422, 188, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:51:33', NULL, NULL, '2026-06-19 10:51:33', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ACF1889E33AA4726B18098C120BD36F8', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:30', NULL, NULL, '2026-06-11 06:05:30', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('AD5AA56F3472457499BC2251D3868808', 'GET', '/api/transport/driver', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 78, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:56:19', NULL, NULL, '2026-06-11 05:56:19', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ADBCFE2DE5814E5CBD4726075F58389D', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128988844}', 200, 287, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:09', NULL, NULL, '2026-06-11 06:03:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ADE02A366B284F0C9AA16DC9DF218797', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128799274}', 200, 190, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:59', NULL, NULL, '2026-06-11 05:59:59', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('AE00562C300B4BEC84821950F5EEFC17', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3ZnHv9Bv4fFQv6rkUyjZ\\nJ/0+KM/dDjWmz12MPCni0q5cAdFL5blIglP23t4pJlRBQ3RDTRPnmKltD2hI5jFk\\n0iY7oWAibj67zG1GfFhFql7+Z1qB4xFyrPNeAKDb4JkvDsOBFJVx7azaEBbyew/8\\nMMp+YFoxws+sHN9b0/DFBPTTfoGf6LlE//HfP9GdXCSZow/s8Ug6JL1cETudm6tI\\nyxrxGrHwzXJocifFWIRmeoXLUxqIyRXIIja88cUN+Vkufua966Shr4Yu/NpOK2Z1\\nAVM5Wib4gAXN+fw+zcR3/8sWhA+fPbQO8SXN2N3rn1EOgWQn6Pq8N+u+4Wtl9+Cj\\npwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781836964386}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:44', NULL, NULL, '2026-06-19 10:42:44', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('AEC9A97928714F8AB8EADF82B6820F06', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:13', NULL, NULL, '2026-06-11 06:35:13', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('AF44F81083634300A62292ED1B53F766', 'GET', '/api/transport/vehicle', NULL, NULL, '[]', 200, 185, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:50', NULL, NULL, '2026-06-11 06:34:50', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('B07AE33404E94F678DFA57E39BE71953', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130385060}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:25', NULL, NULL, '2026-06-11 06:26:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('B1EB6975927249DF9E55B8AE7CE27872', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 394, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:31:19', NULL, NULL, '2026-06-11 06:31:19', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('B32FD33DB23849C18764BC9BDCE556AB', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130924688}', 200, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:25', NULL, NULL, '2026-06-11 06:35:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('B51D5D7C49954B3795C2280CAAAD07E8', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130604523}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:30:05', NULL, NULL, '2026-06-11 06:30:05', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('B5466CDAA1B04FAABA71419D08A2B77C', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 6, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:13', NULL, NULL, '2026-06-11 06:35:13', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('B606A11622994ED78392E118C7FA32DD', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130380364}', 200, 153, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:20', NULL, NULL, '2026-06-11 06:26:20', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('BAC9B7C88947431090541B1FF3BA6280', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 314, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:44', NULL, NULL, '2026-06-11 06:29:44', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('BBA42165C9DC4D20B9931FB1A6F6DC66', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 570, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:42', NULL, NULL, '2026-06-11 06:17:42', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('BCDF88B20BBB4508B49A2D06AC12097E', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130929212}', 200, 290, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:29', NULL, NULL, '2026-06-11 06:35:29', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('BDF7B5A1F1AA4AD8B8E12AA30A58F767', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128158359}', 200, 148, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:49:18', NULL, NULL, '2026-06-11 05:49:18', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('BE5CAF309CD94BF694CB7E39A743F0CC', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781131740821}', 200, 431, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:01', NULL, NULL, '2026-06-11 06:49:01', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('BF59C9D4903E41E391C2F6FF35EA6D1C', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130573049}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:33', NULL, NULL, '2026-06-11 06:29:33', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C0BD6FB5B9C144C3A2663C5895C31097', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 3280, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:53', NULL, NULL, '2026-06-11 06:34:53', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C199EE7CD4344C3F969C85D04D87D512', 'POST', '/api/transport/carrier', NULL, '{\"id\": \"\", \"carrierName\": \"测试承运商\", \"contactName\": \"李\", \"contactPhone\": \"13098900901\", \"status\": \"1\", \"remark\": \"测试\"}', '{\"detail\": [{\"type\": \"missing\", \"loc\": [\"body\", \"carrier_name\"], \"msg\": \"Field required\", \"input\": {\"id\": \"\", \"carrierName\": \"测试承运商\", \"contactName\": \"李\", \"contactPhone\": \"13098900901\", \"status\": \"1\", \"remark\": \"测试\"}, \"url\": \"https://errors.pydantic.dev/2.5/v/missing\"}]}', 422, 142, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:51:51', NULL, NULL, '2026-06-19 10:51:51', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C280D07A598743CFBA86791074A35C55', 'GET', '/api/reimburses/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:56:03', NULL, NULL, '2026-06-11 06:56:21', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C303851055F141A7B5761A3CD5120569', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128352511}', 200, 142, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:52:33', NULL, NULL, '2026-06-11 05:52:33', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C382FEDD5DE4433C818BC53A395BF857', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781127843777}', 200, 118, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:04', NULL, NULL, '2026-06-11 05:44:04', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C589A012B7C04390A9342DD0643E4A10', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128386484}', 200, 133, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:53:07', NULL, NULL, '2026-06-11 05:53:07', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C6C47E12C5854022A6E4A2F4BF922BC6', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781131714469}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:34', NULL, NULL, '2026-06-11 06:48:35', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C6E6019202F647A8AF0E616C23296680', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 145, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:02:53', NULL, NULL, '2026-06-11 06:02:53', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C72818A3A53C4457A46175901B543202', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131016103}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:36:56', NULL, NULL, '2026-06-11 06:36:56', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C99E0A916F9D43749AA63EE1D221BC7D', 'POST', '/api/web/crm/products/list', NULL, '{\"page\": 1, \"pageSize\": 10}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [{\"id\": \"A6CCEAC7A7EB4427B602A75BD3C6203E\", \"productNo\": \"CP20260606002\", \"productName\": \"测试盐酸\", \"categoryId\": \"1975766404158746625\", \"categoryName\": \"有机原料\", \"model\": \"95%\", \"unit\": \"ping\", \"barcode\": \"20260606000001\", \"price\": 2000.0, \"costPrice\": 120.0, \"cost\": 120.0, \"stock\": 1000, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"产品描述\", \"images\": \"crm/product/202606/06/357446e946d24867bb23a5324203df82.jpeg\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"产品备注\", \"createTime\": \"2026-06-06 13:12:55\", \"updateTime\": \"2026-06-06 13:13:24\"}, {\"id\": \"2060282814905675777\", \"productNo\": \"PRD2026052907e3\", \"productName\": \"试剂硝酸\", \"categoryId\": \"1975766588632625154\", \"categoryName\": \"其他\", \"model\": \"98%\", \"unit\": \"ping\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"off\", \"description\": \"试剂硝酸\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"备注\", \"createTime\": \"2026-05-29 16:51:16\", \"updateTime\": \"2026-06-06 16:29:25\"}, {\"id\": \"2060282715597139969\", \"productNo\": \"PRD20260529a466\", \"productName\": \"试剂硝酸\", \"categoryId\": \"1975766588632625154\", \"categoryName\": \"其他\", \"model\": \"AR\", \"unit\": \"ping\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:50:52\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060282619430137857\", \"productNo\": \"PRD202605293eeb\", \"productName\": \"试剂氨水\", \"categoryId\": \"\", \"categoryName\": \"\", \"model\": \"25%\", \"unit\": \"ping\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:50:29\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060282538849169409\", \"productNo\": \"PRD202605299a00\", \"productName\": \"试剂氨水\", \"categoryId\": \"\", \"categoryName\": \"\", \"model\": \"AR\", \"unit\": \"ping\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:50:10\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060281787460579330\", \"productNo\": \"PRD202605293610\", \"productName\": \"氨水\", \"categoryId\": \"1975766588632625154\", \"categoryName\": \"其他\", \"model\": \"25%\", \"unit\": \"kg\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:47:11\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060281732267732994\", \"productNo\": \"PRD20260529e91d\", \"productName\": \"氨水\", \"categoryId\": \"1975766588632625154\", \"categoryName\": \"其他\", \"model\": \"20%\", \"unit\": \"kg\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:46:58\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060280159806386177\", \"productNo\": \"PRD20260529f66a\", \"productName\": \"试剂盐酸\", \"categoryId\": \"1975766588632625154\", \"categoryName\": \"其他\", \"model\": \"/\", \"unit\": \"ping\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:40:43\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060280030110117889\", \"productNo\": \"PRD202605295237\", \"productName\": \"36%盐酸\", \"categoryId\": \"\", \"categoryName\": \"\", \"model\": \"36%\", \"unit\": \"kg\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 16:40:12\", \"updateTime\": \"2026-05-31 06:23:49\"}, {\"id\": \"2060229752782548994\", \"productNo\": \"SXWL00951\", \"productName\": \"亚硫酸钠\", \"categoryId\": \"1975766588632625154\", \"categoryName\": \"其他\", \"model\": \"液体\", \"unit\": \"dun\", \"barcode\": \"\", \"price\": 0.0, \"costPrice\": 0.0, \"cost\": 0.0, \"stock\": 0, \"lowStock\": 10, \"taxRate\": 13.0, \"status\": \"on\", \"description\": \"\", \"images\": \"\", \"saleCount\": 0, \"orderNum\": 0, \"remark\": \"\", \"createTime\": \"2026-05-29 13:20:25\", \"updateTime\": \"2026-05-31 06:23:49\"}], \"total\": 224, \"page\": 1, \"pageSize\": 10, \"totalPages\": 23}, \"timestamp\": 1781131341999}', 200, 3324, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:42:22', NULL, NULL, '2026-06-11 06:42:22', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('C9CB7FD6E6814F8BBC420B26CD258B9E', 'POST', '/api/web/auth/refresh-token', NULL, '{\"refreshToken\": \"***\"}', '{\"code\": 401, \"message\": \"refreshToken已过期\", \"data\": null, \"timestamp\": 1781836687271}', 200, 1, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:38:07', NULL, NULL, '2026-06-19 10:38:08', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CB30A5696FCB466298982D386565BE18', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781836965142}', 200, 781, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:45', NULL, NULL, '2026-06-19 10:42:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CCA2BC18AD6543BE8C6CB34689A0432F', 'POST', '/api/web/auth/logout', NULL, NULL, '{\"code\": 401, \"message\": \"未授权\", \"data\": null, \"timestamp\": 1781130912821}', 200, 5, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:13', NULL, NULL, '2026-06-11 06:35:13', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CD3A5D49AE72409590600691FA9FB477', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:48:34', NULL, NULL, '2026-06-11 06:48:35', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CDA2B6889EDB42B8804EE681E9320216', 'GET', '/api/transport/driver', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:01', NULL, NULL, '2026-06-11 06:03:01', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CE675E2317604CFE86AD3D6A10EDDFDF', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130182697}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:23:03', NULL, NULL, '2026-06-11 06:23:03', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CED2B9EAA19A4F75B90AD7D150503FE5', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:02:59', NULL, NULL, '2026-06-11 06:02:59', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CED73C19290943998C06FE33C572371C', 'GET', '/api/transport/driver', NULL, NULL, '[]', 200, 172, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:54', NULL, NULL, '2026-06-11 06:34:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CF2E1D5DE2EE462FB0C102F5AEE1DE30', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130380043}', 200, 501, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:20', NULL, NULL, '2026-06-11 06:26:20', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('CF906CD7D4EE4B329FE591FBF1EBE23C', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 158, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:45:48', NULL, NULL, '2026-06-19 10:45:48', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D04B456572574B23A880EEAD77E7B0B4', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 4, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:56:10', NULL, NULL, '2026-06-11 06:56:11', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D10CFAF3DA994E7388567EA91190D73D', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128988994}', 200, 151, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:09', NULL, NULL, '2026-06-11 06:03:09', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D15F1E1017744109A70E90AADEB985A6', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:37:00', NULL, NULL, '2026-06-11 06:37:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D204826BA97C4423A27F09BCE6A84175', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:53:07', NULL, NULL, '2026-06-11 05:53:07', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D34D19240E634EA99CBB4EB7EC205B51', 'GET', '/api/payments/stats', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"pendingCount\": 0, \"paidCount\": 4, \"offsetCount\": 0, \"monthProcessedAmount\": 168123.0}}', 200, 637, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:46:56', NULL, NULL, '2026-06-11 05:46:56', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D503F1D1431B4A9F928E83D219AA29E2', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130909822}', 200, 423, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:10', NULL, NULL, '2026-06-11 06:35:10', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('D8204062E6CD42FEA3EE3BC810335AFF', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 1, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:03:21', NULL, NULL, '2026-06-11 06:03:21', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('DB1C30E1D28B4853BAB42193308A95A1', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781131016721}', 200, 642, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:36:57', NULL, NULL, '2026-06-11 06:36:57', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('DB6FCCDD0F5543F6A0A10DCD6E5D4677', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130677914}', 200, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:31:18', NULL, NULL, '2026-06-11 06:31:18', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('DC79F583D39A4A46A7678FCEA9DFA60D', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130884670}', 200, 310, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:45', NULL, NULL, '2026-06-11 06:34:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('DE093BD1CD7F4CACBBA42ED4F15ED02A', 'GET', '/api/web/admin/users/options', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": [{\"label\": \"测试账号1\", \"value\": \"BFB4CBEAB7054F48BDE82B55A985798C\", \"nickName\": \"测试账号1\", \"userNo\": \"ceshi1\"}, {\"label\": \"系统管理员\", \"value\": \"d3000000000000000000000000000001\", \"nickName\": \"系统管理员\", \"userNo\": \"admin\"}], \"timestamp\": 1781128016333}', 200, 547, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:46:56', NULL, NULL, '2026-06-11 05:46:56', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('DE6CD681B6EC4BE680DDD56035C5765A', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781131764554}', 200, 136, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:25', NULL, NULL, '2026-06-11 06:49:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('DEE0458D2EC545AE96788BDA8A180E30', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 1, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:54:50', NULL, NULL, '2026-06-11 05:54:50', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E07C87084CA342B4A5BD36D265ED02FF', 'GET', '/api/plans/', 'startDateFrom=2026-06-01&startDateTo=2026-06-30', NULL, '[{\"planNo\": \"SX-20260609234501001\", \"planDate\": \"2026-06-09\", \"startDate\": \"2026-06-09\", \"endDate\": \"2026-06-30\", \"businessType\": \"入库\", \"productId\": \"2060282538849169409\", \"product\": \"试剂氨水\", \"specification\": \"AR\", \"plannedQuantity\": 31.0, \"vehicleNo\": \"\", \"customerName\": \"安徽哇哈哈有限责任公司\", \"remarks\": \"备注\", \"executionStatus\": \"已入库\", \"executedAt\": null, \"lastWeighingSlipId\": null, \"executedQuantity\": 75101.0, \"autoGenerateEnabled\": 0, \"autoGenerateEndMonth\": null, \"autoGenerateLastMonth\": null, \"id\": \"264E5A0A1CF840B8A2C8D10E9257957C\", \"isDeleted\": 0, \"createdAt\": \"2026-06-09 23:45:02\", \"fillLinkInventoryId\": null}, {\"planNo\": \"SX-20260608233448001\", \"planDate\": \"2026-06-08\", \"startDate\": \"2026-06-08\", \"endDate\": \"2026-06-30\", \"businessType\": \"出库\", \"productId\": null, \"product\": \"试剂硝酸\", \"specification\": \"\", \"plannedQuantity\": 320.0, \"vehicleNo\": \"\", \"customerName\": \"安徽哇哈哈有限责任公司\", \"remarks\": \"备注信息\", \"executionStatus\": \"待入库\", \"executedAt\": null, \"lastWeighingSlipId\": null, \"executedQuantity\": 0.0, \"autoGenerateEnabled\": 1, \"autoGenerateEndMonth\": \"2026-12\", \"autoGenerateLastMonth\": null, \"id\": \"74005B7A389C4175B959DA5F2773A69B\", \"isDeleted\": 0, \"createdAt\": \"2026-06-08 23:34:48\", \"fillLinkInventoryId\": null}]', 200, 221, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:38', NULL, NULL, '2026-06-11 05:44:38', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E1318A6C4DC94BF2BFEA7F4E6514F14D', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781129506608}', 200, 834, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:11:47', NULL, NULL, '2026-06-11 06:11:47', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E173EC2ED3EF4B4C85D2A744B9634169', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCmgpBpbdIigkbPz/Bgj\\nBYYLoOq/AeE9PGl57dPsezGVWNF1piJYWcmGRWtfi42pUB7TOiVwdSRQKzl5lNFt\\n50vHVskKUcMZFbNhMzlHhPrrULglS3GxSs+3iSxvdNlBuE6r8y2saiEGfQqyeQNZ\\nAWouTmXbFHodaeVwcIhOQblGcsvthklMd5/TPGIozChMKpz30NK948J3i3GkMbgT\\niYIrb5PUBQadsGr4B7ggWCl0ybDIqiTT3blf3bOZ3p6N/MUCYFsN3WQwA/xVjHry\\nxjeoRQFPOurBkvLyjcdVG3zXpy2j9pVqNzwA8ghm2nLCDVWeMLzfZAeYyFWiIhRW\\nrQIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781131756355}', 200, 1, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:16', NULL, NULL, '2026-06-11 06:49:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E22BEDC605AE46A9A641DA4065B6A11A', 'POST', '/api/web/auth/refresh-token', NULL, '{\"refreshToken\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200}, \"timestamp\": 1781127843651}', 200, 499, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:44:04', NULL, NULL, '2026-06-11 05:44:04', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E311FFDF6C1946EB8BAC48E60DFCB4A6', 'GET', '/api/transport/plan', 'page=1&pageSize=20', NULL, NULL, 307, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:25', NULL, NULL, '2026-06-11 06:26:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E38217AD7DFC4E3E9CD9F3CBC9A9E871', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:31', NULL, NULL, '2026-06-11 06:35:31', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E3930208B8EF4E97A67A7CB6D2E33115', 'GET', '/api/transport/vehicle', NULL, NULL, '[]', 200, 482, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:42', NULL, NULL, '2026-06-11 06:17:42', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E3D8871377274B0A9EA993FDADA72606', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 3431, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:43', NULL, NULL, '2026-06-11 06:29:43', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E402AA5E8B2948DDB7423352A3B0C923', 'GET', '/api/payments/pending', 'page=1&pageSize=10', NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"rows\": [], \"total\": 0, \"page\": 1, \"pageSize\": 10}}', 200, 559, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:46:56', NULL, NULL, '2026-06-11 05:46:56', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E409F2435C7143CAB0E330FDFFE273D1', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130928907}', 200, 501, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:35:29', NULL, NULL, '2026-06-11 06:35:29', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E454186B194845F7B5EFB3094B8823AC', 'GET', '/api/transport/order/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 5, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:17', NULL, NULL, '2026-06-11 06:49:17', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E4F219382E0F4185807A584B3DDAB6FB', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130599480}', 200, 145, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:30:00', NULL, NULL, '2026-06-11 06:30:00', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E4F7CA76A5264A2F8F45712ED80B3827', 'GET', '/api/transport/driver', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 4, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:00:25', NULL, NULL, '2026-06-11 06:00:25', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E7C4E3012E224E888BDE06352F2E9362', 'POST', '/api/web/auth/login', NULL, '{\"encryptedLogin\": \"***\"}', '{\"code\": 200, \"message\": \"success\", \"data\": {\"token\": \"***\", \"refreshToken\": \"***\", \"expiresIn\": 43200, \"userInfo\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"avatarUrl\": null}}, \"timestamp\": 1781130593929}', 200, 383, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:54', NULL, NULL, '2026-06-11 06:29:54', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E809BD99F0524A6C9544728E859F41D8', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 171, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:53', NULL, NULL, '2026-06-19 10:42:53', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E81CE5A5BCA744319804824E0FCAF4B3', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:30:05', NULL, NULL, '2026-06-11 06:30:05', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('E927BD3F54764A8699F4C4FF878CF8E7', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781128778143}', 200, 3202, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:38', NULL, NULL, '2026-06-11 05:59:38', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('EB1269F536FA48ACAA8DC46E8B44B673', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130379718}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:20', NULL, NULL, '2026-06-11 06:26:20', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('EB8AEC7CEBF34A47BDDE8720BD488921', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArINifqADXyIEEwR1LmxD\\ntOs2tw+pNe3GLVfhwRT/97JjuwifjD6kWtNcpGIrdmtvJTiSSmUYeX1bBtPyv8wM\\nL2LhV88siyZUHlVBEOAh5St6CCbIMwRWwdxJKxFnUNIlwIlxiWGWz2ib/HzcZvR2\\nv9gik/cm4e94gFlOo8NvRcIRJFf6YAlUfwE93W6hKSsDOmLDvnkdwbWboz9A01fa\\nRYkbOF42U7ibsP4hsOXBZtpM//WAZFU9UlqZ39PE2ABpVn+TE2pj+zgEMsyK9X5c\\n9OgEEFp2hY7SxqJfUUEb0Na/v0nItrJwZmCBImmdmRtRF0761HQ21PL717sc+JZo\\ngwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781128970891}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:02:51', NULL, NULL, '2026-06-11 06:02:51', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('EC0B58ADED9E42929DDFD89E856B3722', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 172, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:46', NULL, NULL, '2026-06-11 06:34:46', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ECC588B2EDB74CCE82CC9DB1337A64E8', 'GET', '/api/payments/stats', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": {\"pendingCount\": 0, \"paidCount\": 4, \"offsetCount\": 0, \"monthProcessedAmount\": 168123.0}}', 200, 361, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:47:03', NULL, NULL, '2026-06-11 05:47:03', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ED4EFA00C9884E288EA759BC195249C0', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 317, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:49:01', NULL, NULL, '2026-06-11 06:49:01', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('ED5B2731BAB44C23B15D9B1FAD36939E', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 358, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:21', NULL, NULL, '2026-06-11 06:26:21', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('EF35AD11274341919F23F8AAD99D2D38', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 175, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:14:39', NULL, NULL, '2026-06-11 06:14:39', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('EF3C46E0EFF64834957B4D3CC003B37E', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130376039}', 200, 0, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:26:16', NULL, NULL, '2026-06-11 06:26:16', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('F0E793B49D4A41098D364A31C67D23DB', 'GET', '/api/transport/inventory/document-reminders', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 1, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:59:37', NULL, NULL, '2026-06-11 05:59:37', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('F0EB6BE2266F433AB83B7DDDEA0DF88F', 'GET', '/api/web/admin/users/options', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": [{\"label\": \"测试账号1\", \"value\": \"BFB4CBEAB7054F48BDE82B55A985798C\", \"nickName\": \"测试账号1\", \"userNo\": \"ceshi1\"}, {\"label\": \"系统管理员\", \"value\": \"d3000000000000000000000000000001\", \"nickName\": \"系统管理员\", \"userNo\": \"admin\"}], \"timestamp\": 1781128159532}', 200, 242, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 05:49:20', NULL, NULL, '2026-06-11 05:49:20', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('F363682151EC481583A2BAF8AB4ECC61', 'GET', '/api/web/auth/login-rsa-public-key', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"publicKeyPem\": \"-----BEGIN PUBLIC KEY-----\\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuCScPfTF6VDqLChYnIFz\\n0NUALdYx3OlzBPg8OYXYTtEm0YV93Fpj+Xs+spj7OwZaGOqKChd1CTsxLytOBEA+\\ngH65TOdGIU4z1uXzoCm5ANyHctkr+GqiIpl3DTvguTr4uOjesm8EyGpCuxn1akNo\\nspV7vjVu+W5bi0+D8dxO+6Lbd7YHEKET3pTPo+FtXSJpuHwVcyBn3ikxy2V2J6bp\\nzYBVriWb88nzJ7bgPljrAq29ElRFcGUBL9kxwky4QjkkZNW2glsLJtUax/bv1u2g\\nPDjEGc4gC4lAgYGvCh0Eg5bJi+m4T8ztcIN09VPWB/SnYn1v6RAQBzO5IJmqpoVt\\nOwIDAQAB\\n-----END PUBLIC KEY-----\\n\"}, \"timestamp\": 1781130566284}', 200, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:26', NULL, NULL, '2026-06-11 06:29:26', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('F9BDF1CA21C347D9B9DCEE41537C8088', 'GET', '/api/web/admin/role-management', 'page=1&pageSize=10', NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"list\": [{\"id\": \"097bd2c6-4e72-11f1-9f47-00163e3bdd96\", \"roleName\": \"超级管理员\", \"dataScope\": \"1\", \"status\": \"1\", \"tenantNo\": \"shanxia2.0\", \"orderNum\": 1, \"remark\": \"\", \"createTime\": \"2026-05-13 10:18:31\", \"updateTime\": \"2026-05-30 17:06:32\"}], \"total\": 1, \"page\": 1, \"pageSize\": 10, \"totalPages\": 1}, \"timestamp\": 1781132239396}', 200, 280, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:19', NULL, NULL, '2026-06-11 06:57:19', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('F9DD2E8ED1A648A5B95C1806DDF04D8F', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 330, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:35', NULL, NULL, '2026-06-11 06:29:35', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('F9E6412CF44F430C9821099FF6953871', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781836965470}', 200, 622, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:46', NULL, NULL, '2026-06-19 10:42:46', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FB18924AB9074E969050251603DEBE4C', 'GET', '/api/transport/carrier', NULL, NULL, '{\"detail\": \"Not Found\"}', 404, 3, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:05:29', NULL, NULL, '2026-06-11 06:05:29', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FC5FC3489D27461C9A542B21FAB6DDC5', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"code\": 0, \"msg\": \"success\", \"data\": [{\"id\": \"CC86C05523BD4CF090C881C08B007843\", \"parentId\": \"0\", \"itemName\": \"报销费用\", \"itemCode\": \"BXFY\", \"level\": 1, \"sortOrder\": 1, \"status\": 1, \"remark\": \"\", \"childCount\": 2, \"children\": [{\"id\": \"918697AA47A04A74AE96430892BA14F5\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"项目费用11\", \"itemCode\": \"XMFY1\", \"level\": 2, \"sortOrder\": 2, \"status\": 0, \"remark\": \"1\", \"childCount\": 0, \"children\": null}, {\"id\": \"DA7F1453221E46329872B5F1EF4F0354\", \"parentId\": \"CC86C05523BD4CF090C881C08B007843\", \"itemName\": \"差旅费用\", \"itemCode\": \"CLFY\", \"level\": 2, \"sortOrder\": 2, \"status\": 1, \"remark\": \"\", \"childCount\": 0, \"children\": null}]}]}', 200, 320, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:55', NULL, NULL, '2026-06-11 06:29:55', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FCEA7C03878B425982CAB8BF88F3031D', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:55', NULL, NULL, '2026-06-11 06:34:55', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FD9DB0AB34EE424BB4771642663C6396', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781130573797}', 200, 284, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:29:34', NULL, NULL, '2026-06-11 06:29:34', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FE65AEE5EADA4E20BBBA7DFDE962931A', 'GET', '/api/transport/plan/', 'page=1&pageSize=20', NULL, '{\"detail\": \"Not authenticated\"}', 401, 2, NULL, NULL, NULL, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:17:44', NULL, NULL, '2026-06-11 06:17:44', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FE8BEC288A2745C6ABC3F3F0DF118FBB', 'GET', '/api/transport/carrier', NULL, NULL, '[]', 200, 344, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:34:49', NULL, NULL, '2026-06-11 06:34:49', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FEF622B7E17545639E0B36564C1DADE4', 'GET', '/api/web/auth/current-user', NULL, NULL, '{\"code\": 200, \"message\": \"success\", \"data\": {\"id\": \"d3000000000000000000000000000001\", \"username\": \"admin\", \"realName\": \"系统管理员\", \"phone\": \"19115582687\", \"email\": \"admin@zkxw.local\", \"role\": \"super_admin\", \"isSuperAdmin\": true, \"regionId\": \"b13c2be2-4e71-11f1-9f47-00163e3bdd96\", \"regionName\": null, \"regionIds\": [], \"isActive\": true, \"avatarUrl\": null}, \"timestamp\": 1781836965313}', 200, 144, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36', 0, '2026-06-19 10:42:45', NULL, NULL, '2026-06-19 10:42:45', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FF0B9031DAAC427B9E162C84D09D8969', 'GET', '/api/transport/freight/', 'page=1&pageSize=20', NULL, '{\"total\": 0, \"list\": []}', 200, 261, 'd3000000000000000000000000000001', 'admin', 'super_admin', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/148.0.0.0 Safari/537.36', 0, '2026-06-11 06:57:24', NULL, NULL, '2026-06-11 06:57:24', NULL); +INSERT INTO `sys_api_request_log` (`id`, `http_method`, `path`, `query_string`, `request_body`, `response_body`, `status_code`, `duration_ms`, `user_id`, `username`, `role`, `ip_address`, `user_agent`, `is_del`, `create_at`, `create_by`, `create_name`, `update_at`, `update_by`) VALUES ('FFF4EB5C70B3433480D4A724EF1D6C04', 'GET', '/api/expense-items/tree', NULL, NULL, '{\"detail\": \"无效的认证凭据\"}', 401, 3, NULL, NULL, NULL, '127.0.0.1', 'curl/8.7.1', 0, '2026-06-11 06:46:43', NULL, NULL, '2026-06-11 06:46:43', NULL); COMMIT; -- ---------------------------- @@ -2463,6 +3384,36 @@ INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d25a5dde-4e71-11f1-9f47-00163e3bdd96', '细胞存储', 'xbcc', '', 'zdywfw', 'shanxia2.0', 4, NULL, NULL, '', '2026-05-13 10:16:59', NULL, '2026-05-13 10:16:59', 0); INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d25a5e36-4e71-11f1-9f47-00163e3bdd96', '停用', '0', '', 'bmzt', 'shanxia2.0', 1, NULL, NULL, '', '2026-05-13 10:16:59', NULL, '2026-05-13 10:16:59', 0); INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d25a5e7c-4e71-11f1-9f47-00163e3bdd96', '正常', '1', '', 'bmzt', 'shanxia2.0', 2, NULL, NULL, '', '2026-05-13 10:16:59', NULL, '2026-05-13 10:16:59', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_APPROVAL_STATUS_APPROVED', '已通过', 'approved', 'success', 'pl_approval_status', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_APPROVAL_STATUS_NONE', '无需审批', 'none', 'info', 'pl_approval_status', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_APPROVAL_STATUS_PENDING', '审批中', 'pending', 'warning', 'pl_approval_status', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_APPROVAL_STATUS_REJECTED', '已拒绝', 'rejected', 'danger', 'pl_approval_status', 'shanxia2.0', 4, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_COMPANY_SHANXIA', '安庆山峡', 'shanxia', 'primary', 'pl_belongs_company', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_COMPANY_YUNDONG', '安徽云栋', 'yundong', 'success', 'pl_belongs_company', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DELIVERY_CUSTOMER', '客户自提', 'customer_pick', 'warning', 'pl_delivery_method', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DELIVERY_ONE_TICKET', '一票制', 'one_ticket', 'success', 'pl_delivery_method', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DELIVERY_SELF', '山峡自提', 'self_pick', 'primary', 'pl_delivery_method', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DOCUMENT_TYPE_HAZMAT', '危化品证', 'hazmat_cert', 'danger', 'pl_document_type', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DOCUMENT_TYPE_LICENSE', '驾驶证', 'driving_license', 'primary', 'pl_document_type', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DOCUMENT_TYPE_VEHICLE', '行驶证', 'vehicle_license', 'success', 'pl_document_type', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_FREIGHT_BY_TRIP', '按趟次', 'by_trip', 'success', 'pl_freight_type', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_FREIGHT_BY_WEIGHT', '按重量', 'by_weight', 'primary', 'pl_freight_type', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_PLAN_TYPE_DIRECT', '直销单', 'direct', 'primary', 'pl_plan_type', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_PLAN_TYPE_INBOUND', '入库单', 'inbound', 'success', 'pl_plan_type', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_PLAN_TYPE_OUTBOUND', '出库单', 'outbound', 'warning', 'pl_plan_type', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_SETTLEMENT_STATUS_CONFIRMED', '已确认', 'confirmed', 'success', 'pl_settlement_status', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_SETTLEMENT_STATUS_PENDING', '待提交', 'pending', 'info', 'pl_settlement_status', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_SETTLEMENT_STATUS_SUBMITTED', '已提交', 'submitted', 'warning', 'pl_settlement_status', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT_STATUS_CANCELLED', '已取消', 'cancelled', 'danger', 'pl_transport_status', 'shanxia2.0', 5, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT_STATUS_COMPLETED', '已完成', 'completed', 'success', 'pl_transport_status', 'shanxia2.0', 4, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT_STATUS_DRAFT', '草稿', 'draft', 'info', 'pl_transport_status', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT_STATUS_EXECUTING', '执行中', 'executing', 'primary', 'pl_transport_status', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT_STATUS_PENDING', '待执行', 'pending', 'warning', 'pl_transport_status', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_STATUS_AVAILABLE', '可用', 'available', 'success', 'pl_vehicle_status', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_STATUS_MAINTAINING', '维修中', 'maintaining', 'warning', 'pl_vehicle_status', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_STATUS_SCRAPPED', '报废', 'scrapped', 'danger', 'pl_vehicle_status', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_TYPE_CARRIER', '承运商', 'carrier', 'warning', 'pl_vehicle_type', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_TYPE_SELF', '自有', 'self', 'success', 'pl_vehicle_type', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SXDC0000000000000001', '男', '0', '', 'sys_user_sex', 'shanxia2.0', 1, '性别男', '1', '', '2025-06-20 16:22:24', NULL, '2025-06-20 16:22:24', 0); INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SXDC0000000000000002', '女', '1', '', 'sys_user_sex', 'shanxia2.0', 2, '性别女', '1', '', '2025-06-20 16:22:24', NULL, '2025-06-20 16:22:24', 0); INSERT INTO `sys_dict_data` (`id`, `dict_label`, `dict_value`, `tag_type`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SXDC0000000000000004', '显示', '0', '', 'sys_show_hide', 'shanxia2.0', 1, '显示菜单', '1', '', '2025-06-20 16:22:24', NULL, '2025-06-20 16:22:24', 0); @@ -7161,6 +8112,16 @@ INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d2565c69-4e71-11f1-9f47-00163e3bdd96', '站点类型', 'zdlx', 'shanxia2.0', 2, NULL, NULL, '', '2026-05-13 10:16:59', NULL, '2026-05-13 10:16:59', 0); INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d2565ff8-4e71-11f1-9f47-00163e3bdd96', '站点业务范围', 'zdywfw', 'shanxia2.0', 3, NULL, NULL, '', '2026-05-13 10:16:59', NULL, '2026-05-13 10:16:59', 0); INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('d25660b0-4e71-11f1-9f47-00163e3bdd96', '部门状态', 'bmzt', 'shanxia2.0', 4, NULL, NULL, '', '2026-05-13 10:16:59', NULL, '2026-05-13 10:16:59', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_APPROVAL_STATUS', '审批状态', 'pl_approval_status', 'shanxia2.0', 5, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_BELONGS_COMPANY', '归属公司', 'pl_belongs_company', 'shanxia2.0', 10, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DELIVERY_METHOD', '送货方式', 'pl_delivery_method', 'shanxia2.0', 8, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DOCUMENT_TYPE', '证件类型', 'pl_document_type', 'shanxia2.0', 7, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_FREIGHT_TYPE', '运费计算方式', 'pl_freight_type', 'shanxia2.0', 9, NULL, 'system', '', '2026-06-11 05:17:14', NULL, '2026-06-11 05:17:14', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_PLAN_TYPE', '单据类型', 'pl_plan_type', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_SETTLEMENT_STATUS', '结算状态', 'pl_settlement_status', 'shanxia2.0', 6, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT_STATUS', '运输状态', 'pl_transport_status', 'shanxia2.0', 4, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_STATUS', '车辆状态', 'pl_vehicle_status', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE_TYPE', '车辆类型', 'pl_vehicle_type', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SXDT0000000000000001', '用户性别', 'sys_user_sex', 'shanxia2.0', 0, '用户性别列表', NULL, '', '2025-06-20 16:22:24', NULL, '2025-06-20 16:22:24', 0); INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SXDT0000000000000002', '菜单状态', 'sys_show_hide', 'shanxia2.0', 0, '菜单状态列表', NULL, '', '2025-06-20 16:22:24', NULL, '2025-06-20 16:22:24', 0); INSERT INTO `sys_dict_type` (`id`, `dict_name`, `dict_type`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SXDT0000000000000003', '系统开关', 'sys_normal_disable', 'shanxia2.0', 0, '系统开关列表', NULL, '', '2025-06-20 16:22:24', NULL, '2025-06-20 16:22:24', 0); @@ -7623,6 +8584,15 @@ INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `co INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('DB10000000000000000000000000016', '车牌删除', 'DB00000000000000000000000000006', 'F', '', NULL, 'db:vehicle:remove', 1, '1', '1', 'shanxia2.0', 3, NULL, NULL, '', '2026-06-07 10:00:00', NULL, '2026-06-07 10:00:00', 0); INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('DB10000000000000000000000000017', '车牌查看', 'DB00000000000000000000000000006', 'F', '', NULL, 'db:vehicle:query', 1, '1', '1', 'shanxia2.0', 4, NULL, NULL, '', '2026-06-07 10:00:00', NULL, '2026-06-07 10:00:00', 0); INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PIL00000000000000000000000000001', '中试服务', '2', 'M', '/pilot-service', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 3, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 18:15:56', 1); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_CARRIER', '承运商管理', 'PL_MENU_ROOT', 'C', 'carrier', 'pl/carrier/index', 'pl:carrier:list', 1, '1', '1', 'shanxia2.0', 1, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-11 05:17:12', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DOC_REMINDER', '证件提醒', 'PL_MENU_ROOT', 'C', 'document-reminder', 'pl/inventory/document-reminder', 'pl:document:list', 1, '1', '1', 'shanxia2.0', 50, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_DRIVER', '司机管理', 'PL_MENU_ROOT', 'C', 'driver', 'pl/driver/index', 'pl:driver:list', 1, '1', '1', 'shanxia2.0', 3, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-11 05:17:12', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_FREIGHT', '运费结算', 'PL_MENU_ROOT', 'C', 'freight', 'pl/freight/index', 'pl:freight:list', 1, '1', '1', 'shanxia2.0', 30, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_INVENTORY', '盘存统计', 'PL_MENU_ROOT', 'C', 'inventory', 'pl/inventory/ledger', 'pl:inventory:list', 1, '0', '1', 'shanxia2.0', 40, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_MENU_ROOT', '运输管理', '0', 'M', '/pl', NULL, '', 1, '1', '1', 'shanxia2.0', 8, '运输管理父菜单', 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-11 05:17:12', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_PLAN', '运输计划', 'PL_MENU_ROOT', 'C', 'plan', 'pl/plan/index', 'pl:plan:list', 1, '1', '1', 'shanxia2.0', 10, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-11 05:17:12', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_TRANSPORT', '运输管理', 'PL_MENU_ROOT', 'C', 'transport', 'pl/transport/index', 'pl:transport:list', 1, '0', '1', 'shanxia2.0', 20, NULL, 'system', '', '2026-06-11 05:17:13', NULL, '2026-06-11 05:17:13', 0); +INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('PL_VEHICLE', '车辆管理', 'PL_MENU_ROOT', 'C', 'vehicle', 'pl/vehicle/index', 'pl:vehicle:list', 1, '1', '1', 'shanxia2.0', 2, NULL, 'system', '', '2026-06-11 05:17:12', NULL, '2026-06-11 05:17:12', 0); INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SYSB000000000000000000000000000001', '系统基础信息', '2', 'M', '/system-base', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 11, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 18:16:14', 1); INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('SYSM000000000000000000000000000001', '系统管理', '2', 'M', '/system', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 13, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 17:06:32', 0); INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `menu_type`, `path`, `component`, `perms`, `is_frame`, `visible`, `status`, `tenant_no`, `order_num`, `remark`, `create_by`, `create_dept_id`, `create_time`, `update_by`, `update_time`, `del_flag`) VALUES ('WKF00000000000000000000000000001', '工作流管理', '2', 'M', '/workflow', '/index/index', NULL, 1, '1', '1', 'shanxia2.0', 12, NULL, NULL, '', '2026-05-27 16:26:30', NULL, '2026-05-30 17:06:32', 0); diff --git a/docs/superpowers/plans/2026-06-19-pl-vehicle-personnel-cert.md b/docs/superpowers/plans/2026-06-19-pl-vehicle-personnel-cert.md new file mode 100644 index 000000000..00eea9c08 --- /dev/null +++ b/docs/superpowers/plans/2026-06-19-pl-vehicle-personnel-cert.md @@ -0,0 +1,410 @@ +# 运输计划 · 车辆/人员/证书重构 Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 将运输计划车辆/人员/证书改为主数据 + 动态证书 + 车辆弹窗双子表(人员、证书),并统一证件到期提醒。 + +**Architecture:** 新增 `pl_personnel`、`pl_cert`,`pl_vehicle_personnel` 替代 `pl_vehicle_driver`;车辆/人员 API 嵌套保存 `personnelList` 与 `certList`;提醒引擎改为扫描 `pl_cert`;前端车辆/人员页采用与 `pl/plan/form.vue` 相同的内嵌子表模式。 + +**Tech Stack:** FastAPI + SQLAlchemy + Pydantic v2 + Vue 3 + Element Plus + MySQL 5.7 + +**设计文档:** `docs/superpowers/specs/2026-06-19-pl-vehicle-personnel-cert-design.md` + +--- + +## 文件清单 + +| 操作 | 路径 | 职责 | +|------|------|------| +| Create | `docs/sql/20260619_pl_personnel_cert.sql` | 新表 DDL | +| Create | `docs/sql/20260619_pl_personnel_cert_migration.sql` | 数据迁移 | +| Modify | `docs/sql/pl_tables.sql` | 基线 DDL 同步 | +| Modify | `backend/app/models/pl_models.py` | ORM | +| Create | `backend/app/schemas/pl/base_data.py` | 从 `__init__.py` 拆出 Schema | +| Modify | `backend/app/schemas/pl/__init__.py` | 导出新 Schema | +| Create | `backend/app/services/pl_personnel_service.py` | 人员 upsert、关联保存 | +| Create | `backend/app/services/pl_cert_service.py` | 证书 CRUD、到期扫描 | +| Modify | `backend/app/api/pl/base_data.py` | 车辆嵌套保存、personnel API | +| Modify | `backend/app/api/pl/inventory.py` | `check_document_expiry` | +| Modify | `backend/app/api/pl/transport.py` | 安排运输默认司机来源 | +| Modify | `web-admin/src/api/pl/index.ts` | 类型与 API | +| Modify | `web-admin/src/views/pl/vehicle/index.vue` | 双子表弹窗 | +| Rename/refactor | `web-admin/src/views/pl/driver/` → `personnel/` | 人员管理 | +| Modify | `web-admin/src/views/pl/inventory/document-reminder.vue` | 提醒列扩展 | +| Modify | `web-admin/src/views/pl/plan/arrange.vue` | 默认司机逻辑 | +| Modify | `web-admin/src/router/modules/pl.ts` | 路由 personnel | +| Modify | `openspec/changes/transport-plan-management/specs/vehicle-driver/spec.md` | 规范更新 | + +--- + +## Task 1: DDL 与新表 + +**Files:** +- Create: `docs/sql/20260619_pl_personnel_cert.sql` +- Modify: `docs/sql/pl_tables.sql` + +- [ ] **Step 1: 编写增量 DDL** + +在 `docs/sql/20260619_pl_personnel_cert.sql` 中创建: + +- `pl_personnel` +- `pl_cert` +- `pl_vehicle_personnel`(若已有 `pl_vehicle_driver`,用 RENAME + ADD COLUMN `role`, `remark`) +- `pl_document_reminder` 增加 `cert_id`, `owner_type`, `owner_id`, `owner_label` + +- [ ] **Step 2: 同步 `pl_tables.sql` 基线** + +将上述表定义合并进 `docs/sql/pl_tables.sql` 第 1 节「基础数据」,删除 `pl_driver` 证件写死列的定义,改为新结构。 + +- [ ] **Step 3: 在开发库执行 DDL** + +```bash +cd /Users/zlwu/work/00code/shanxia2.0 +mysql -u ... -p ... shanxia < docs/sql/20260619_pl_personnel_cert.sql +``` + +Expected: 表创建成功,无报错。 + +--- + +## Task 2: 数据迁移脚本 + +**Files:** +- Create: `docs/sql/20260619_pl_personnel_cert_migration.sql` + +- [ ] **Step 1: pl_driver → pl_personnel** + +```sql +INSERT INTO pl_personnel (id, personnel_name, phone_no, id_card_no, status, tenant_no, ...) +SELECT id, driver_name, phone_no, id_card_no, '1', tenant_no, ... +FROM pl_driver WHERE del_flag = 0; +``` + +- [ ] **Step 2: 司机证件 → pl_cert(owner_type=personnel)** + +为每条 `driving_license_expire`、`vehicle_license_expire`、`hazmat_cert_expire` 非空记录插入 `pl_cert`,`cert_name` 分别为驾驶证、行驶证、危化品证,`remind_days=30`。 + +- [ ] **Step 3: pl_vehicle_driver → pl_vehicle_personnel** + +```sql +INSERT INTO pl_vehicle_personnel (..., role, is_default, remark) +SELECT ..., 'driver', is_default, remark FROM pl_vehicle_driver WHERE del_flag = 0; +``` + +- [ ] **Step 4: 从 vehicle.default_driver_id 修正 is_default** + +确保每车仅一条 `is_default=1`。 + +--- + +## Task 3: ORM 模型 + +**Files:** +- Modify: `backend/app/models/pl_models.py` +- Modify: `backend/app/models/__init__.py`(若需导出) + +- [ ] **Step 1: 新增 `PlPersonnel`、`PlCert`** + +字段对齐设计文档;`PlCert.owner_type` 使用 String(20)。 + +- [ ] **Step 2: 将 `PlVehicleDriver` 重命名/替换为 `PlVehiclePersonnel`** + +增加 `role`、`remark`;`driver_id` → `personnel_id`。 + +- [ ] **Step 3: 扩展 `PlDocumentReminder`** + +增加 `cert_id`, `owner_type`, `owner_id`, `owner_label`。 + +- [ ] **Step 4: `PlVehicle` 标记废弃列** + +保留 `default_driver_id` 只读兼容,新写入逻辑不再更新。 + +--- + +## Task 4: Pydantic Schema + +**Files:** +- Create: `backend/app/schemas/pl/base_data.py` +- Modify: `backend/app/schemas/pl/__init__.py` + +- [ ] **Step 1: 定义子表行 Schema** + +```python +class VehiclePersonnelRow(BaseModel): + personnel_id: Optional[str] = Field(default=None, alias="personnelId") + personnel_name: str = Field(..., alias="personnelName") + phone_no: Optional[str] = Field(default=None, alias="phoneNo") + age: Optional[int] = None + role: str = Field(..., description="driver|escort") + is_default: int = Field(default=0, alias="isDefault") + remark: Optional[str] = None + model_config = {"populate_by_name": True} + +class CertRow(BaseModel): + cert_id: Optional[str] = Field(default=None, alias="certId") + cert_name: str = Field(..., alias="certName") + cert_no: Optional[str] = Field(default=None, alias="certNo") + expire_date: Optional[date] = Field(default=None, alias="expireDate") + remind_days: int = Field(default=30, alias="remindDays") + attachment_urls: Optional[str] = Field(default=None, alias="attachmentUrls") + model_config = {"populate_by_name": True} +``` + +- [ ] **Step 2: 扩展 `VehicleCreate`/`VehicleUpdate`/`VehicleRead`** + +- `personnel_list: list[VehiclePersonnelRow] = Field(default_factory=list, alias="personnelList")` +- `cert_list: list[CertRow] = Field(default_factory=list, alias="certList")` +- `VehicleDetailRead` 继承 `VehicleRead` 并含上述列表 + +- [ ] **Step 3: 新增 `PersonnelCreate`/`PersonnelUpdate`/`PersonnelRead`** + +`phone_no` 改为 Optional;删除写死证件字段;增加 `cert_list`。 + +- [ ] **Step 4: 从 `__init__.py` 迁出并 re-export** + +保持 `from app.schemas.pl import PersonnelCreate` 等导入路径可用。 + +--- + +## Task 5: 服务层 — 人员与证书 + +**Files:** +- Create: `backend/app/services/pl_personnel_service.py` +- Create: `backend/app/services/pl_cert_service.py` + +- [ ] **Step 1: `upsert_personnel(tenant_no, row: VehiclePersonnelRow) -> str`** + +实现设计文档中的 phone → name 去重逻辑,返回 `personnel_id`。 + +- [ ] **Step 2: `save_vehicle_personnel(db, vehicle_id, rows, tenant_no, user)`** + +校验:每车 `is_default=1` 的 driver 行 ≤1;软删旧关联后批量插入。 + +- [ ] **Step 3: `save_owner_certs(db, owner_type, owner_id, cert_rows, tenant_no, user)`** + +按 `cert_id` upsert;列表中不存在的旧证软删。 + +- [ ] **Step 4: `scan_cert_expiry(db, tenant_no=None) -> int`** + +扫描 `pl_cert` 生成 `pl_document_reminder`,返回新建条数。 + +--- + +## Task 6: 车辆 API 嵌套保存 + +**Files:** +- Modify: `backend/app/api/pl/base_data.py` + +- [ ] **Step 1: 修改 `create_vehicle` / `update_vehicle`** + +事务内:保存车辆 → `save_vehicle_personnel` → `save_owner_certs(vehicle)`。 + +- [ ] **Step 2: 新增 `GET /vehicle/{id}` 返回 `VehicleDetailRead`** + +联接查询 personnelList(含姓名、手机、年龄)与 certList。 + +- [ ] **Step 3: 修改 `list_vehicles`** + +每条附加 `personnelSummary`、`defaultDriverName`(从关联表计算)。 + +- [ ] **Step 4: 保留 `/driver` 路由别名** + +内部转发到 personnel 列表,响应字段兼容旧前端(`driverName` = `personnelName`)直至 Task 9 完成。 + +--- + +## Task 7: 人员 API + +**Files:** +- Modify: `backend/app/api/pl/base_data.py` + +- [ ] **Step 1: 新增 `/personnel` CRUD** + +路径前缀与现有 `/carrier`、`/vehicle` 一致(`/api/admin/transport/personnel`)。 + +- [ ] **Step 2: create/update 嵌套 `certList`** + +复用 `save_owner_certs(owner_type='personnel')`。 + +- [ ] **Step 3: list 返回证书摘要** + +可选字段 `nearestExpireDate` 供列表 Tag 展示。 + +--- + +## Task 8: 证件提醒重构 + +**Files:** +- Modify: `backend/app/api/pl/inventory.py` +- Modify: `backend/app/schemas/pl/inventory.py` + +- [ ] **Step 1: 重写 `check_document_expiry`** + +调用 `scan_cert_expiry`;删除对 `PlDriver` 三字段的硬编码循环。 + +- [ ] **Step 2: 扩展 `DocumentReminderRead`** + +增加 `ownerType`, `ownerId`, `ownerLabel`, `certId`。 + +- [ ] **Step 3: 更新 `list_document_reminders`** + +按新字段返回;`documentType` 展示 `cert_name`。 + +--- + +## Task 9: 前端 API 类型 + +**Files:** +- Modify: `web-admin/src/api/pl/index.ts` + +- [ ] **Step 1: 新增类型** + +`VehiclePersonnelRow`, `CertRow`, `Personnel`, `VehicleDetail` + +- [ ] **Step 2: 扩展 `vehicleApi.create/update`** + +请求体包含 `personnelList`, `certList`;`get` 返回 `VehicleDetail`。 + +- [ ] **Step 3: 新增 `personnelApi`** + +CRUD + `certList`;`driverApi` 保留为 `personnelApi` 别名并标 `@deprecated` 注释。 + +--- + +## Task 10: 车辆管理页 — 双子表弹窗 + +**Files:** +- Modify: `web-admin/src/views/pl/vehicle/index.vue` + +- [ ] **Step 1: 弹窗加宽至 800px,移除「默认司机」下拉** + +- [ ] **Step 2: 新增「关联人员」子表** + +`formData.personnelList`;列:姓名、手机号、年龄、人员类型(字典 driver/escort)、备注、默认司机 radio、删除;参考 `pl/plan/form.vue` 产品明细。 + +- [ ] **Step 3: 新增「车辆证书」子表** + +`formData.certList`;列:证书名称、证号、有效期、提醒天数(默认 30)、删除。 + +- [ ] **Step 4: 提交前校验** + +至少校验人员行姓名、角色;证书行证名;默认司机唯一。 + +- [ ] **Step 5: 编辑时 `vehicleApi.get` 回填两个子表** + +- [ ] **Step 6: 列表列改为 `personnelSummary`** + +--- + +## Task 11: 人员管理页 + +**Files:** +- Create: `web-admin/src/views/pl/personnel/index.vue`(可从 driver 复制改造) +- Modify: `web-admin/src/router/modules/pl.ts` + +- [ ] **Step 1: 新建 personnel 页面** + +菜单标题「人员管理」;列表:姓名、手机、年龄、状态、最近到期 Tag。 + +- [ ] **Step 2: 弹窗含人员证书子表** + +字段:姓名*、手机、年龄、身份证、状态、备注 + certList 子表。 + +- [ ] **Step 3: 路由 `/pl/personnel`** + +`/pl/driver` redirect 到 `/pl/personnel`。 + +- [ ] **Step 4: 删除或保留 driver/index.vue 仅作 redirect 壳** + +--- + +## Task 12: 证件提醒与运输安排 + +**Files:** +- Modify: `web-admin/src/views/pl/inventory/document-reminder.vue` +- Modify: `web-admin/src/views/pl/plan/arrange.vue` + +- [ ] **Step 1: 提醒页增加列「主体类型」「主体名称」** + +- [ ] **Step 2: arrange.vue 选车变更** + +`handleVehicleChange`:从 `vehicle.personnelList` 找 `isDefault===1 && role==='driver'`,设置 `formData.driverId`(实为 personnelId)。 + +- [ ] **Step 3: 司机下拉数据源** + +改为该车 `role==='driver'` 的关联人员,标签 `${name} (${phone || '无手机'})`。 + +--- + +## Task 13: 字典与菜单 SQL + +**Files:** +- Create: `docs/sql/20260619_pl_personnel_cert_dict_menu.sql` + +- [ ] **Step 1: 插入 `pl_personnel_role` 字典** + +driver-司机, escort-押运员 + +- [ ] **Step 2: 插入 `pl_cert_name` 常用证种** + +- [ ] **Step 3: 菜单「司机管理」改名为「人员管理」**,path 改为 `personnel` + +--- + +## Task 14: OpenSpec 与验收 + +**Files:** +- Modify: `openspec/changes/transport-plan-management/specs/vehicle-driver/spec.md` + +- [ ] **Step 1: 更新 Requirement Scenario** + +覆盖人员子表、动态证书、提醒扫描 pl_cert。 + +- [ ] **Step 2: 运行字段一致性检查** + +```bash +cd backend && source venv/bin/activate +python scripts/check_pl_json_aliases.py +``` + +- [ ] **Step 3: 手工验收清单** + +1. 新增车辆 + 2 行人员(含无手机押运员)+ 1 行车辆证书 → 保存回显 +2. 人员管理独立维护证书 +3. 调用 `POST /transport/check-document-expiry` 生成提醒 +4. 运输安排选车带出默认司机 +5. 迁移后旧司机数据可见 + +- [ ] **Step 4: 更新 graphify** + +```bash +./scripts/update-graph.sh backend +./scripts/update-graph.sh frontend +``` + +--- + +## 实施顺序建议 + +``` +Task 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14 +``` + +后端 Task 1–8 可先于前端 Task 9–12 完成;Task 6 Step 4 兼容层可支撑过渡期。 + +--- + +## Spec 覆盖自检 + +| 设计章节 | 对应 Task | +|----------|-----------| +| pl_personnel | 1, 2, 3, 7 | +| pl_vehicle_personnel 子表 | 1, 5, 6, 10 | +| pl_cert 动态证书 | 1, 4, 5, 6, 7, 10, 11 | +| 手机非必填 + upsert | 4, 5, 10 | +| 提醒引擎 | 8, 12 | +| 运输安排默认司机 | 6, 12 | +| 迁移 | 2 | +| 字典菜单 | 13 | + +无 TBD/占位任务。 diff --git a/docs/superpowers/plans/2026-06-20-pl-arrange-dibang.md b/docs/superpowers/plans/2026-06-20-pl-arrange-dibang.md new file mode 100644 index 000000000..cd208f07b --- /dev/null +++ b/docs/superpowers/plans/2026-06-20-pl-arrange-dibang.md @@ -0,0 +1,237 @@ +# 安排运输 + 司机免登录页 + 地磅联动 Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** 改造安排运输弹窗(上下布局 + Tab 对照 + 地磅勾选 + 复制能力),实现司机免登录 H5 公共页,并在勾选时按产品行联动地磅计划与出入库单。 + +**Architecture:** 后端在 `arrange_transport` 同事务内生成 `driver_access_token`、可选调用 `pl_dibang_bridge_service`;公共 API 挂载 `/api/public/pl/transport` 且免 JWT/加密;前端公共路由懒加载 Vant,管理端继续 Element Plus。 + +**Tech Stack:** FastAPI + SQLAlchemy + Vue 3 + Element Plus + Vant 4(仅 public 路由)+ MySQL 5.7 + +**设计文档:** `docs/superpowers/specs/2026-06-20-pl-arrange-dibang-design.md` + +--- + +## 文件清单 + +| 操作 | 路径 | 职责 | +|------|------|------| +| Create | `docs/sql/20260620_pl_arrange_dibang.sql` | DDL:`driver_access_token`、`pl_transport_db_link` | +| Modify | `docs/sql/pl_tables.sql` | 基线同步 | +| Modify | `docs/sql/shanxia2.0.sql` | 全量快照同步(`driver_access_token`、`pl_transport_db_link`) | +| Modify | `backend/app/models/pl_models.py` | 新字段/关联表 ORM | +| Create | `backend/app/services/pl_dibang_bridge_service.py` | 地磅查建 + 出入库创建 | +| Create | `backend/app/api/pl/public_transport.py` | 司机免登录 API | +| Modify | `backend/app/api/pl/transport.py` | arrange 扩展 | +| Modify | `backend/app/schemas/pl/transport.py` | 请求/响应 Schema | +| Modify | `backend/app/main.py` | 注册 public 路由、加密白名单 | +| Modify | `backend/app/core/config.py` | `PUBLIC_WEB_ORIGIN` | +| Create | `web-admin/src/components/business/pl-plan-view-tabs/index.vue` | 三 Tab 只读区 | +| Modify | `web-admin/src/components/business/pl-plan-view-dialog/index.vue` | 引用 Tabs | +| Modify | `web-admin/src/components/business/pl-plan-arrange-dialog/index.vue` | 上下布局 + 成功态 | +| Create | `web-admin/src/components/business/db/DbPoundSlipQrcodeDialog.vue` | 磅单二维码 | +| Create | `web-admin/src/layouts/PublicMobileShell.vue` | 移动壳 | +| Create | `web-admin/src/views/public/pl/transport/index.vue` | 司机 Vant 页 | +| Create | `web-admin/src/utils/http/public-pl.ts` | 无鉴权 HTTP | +| Create | `web-admin/src/api/pl/public-transport.ts` | 公共 API 类型 | +| Modify | `web-admin/src/api/pl/index.ts` | arrange 类型扩展 | +| Modify | `web-admin/src/router/routes/staticRoutes.ts` | 公共路由 | +| Modify | `web-admin/vite.config.ts` | Vant resolver(可选独立 chunk) | +| Modify | `web-admin/package.json` | 添加 vant | + +--- + +## Task 1: 数据库 DDL + +**Files:** +- Create: `docs/sql/20260620_pl_arrange_dibang.sql` +- Modify: `docs/sql/pl_tables.sql` +- Modify: `backend/app/models/pl_models.py` + +- [ ] **Step 1: 编写增量 SQL** + +```sql +ALTER TABLE pl_transport + ADD COLUMN driver_access_token VARCHAR(64) NULL COMMENT '司机免登录访问令牌' AFTER qr_expire_date; + +CREATE UNIQUE INDEX uk_pl_transport_driver_token ON pl_transport(driver_access_token); + +CREATE TABLE pl_transport_db_link ( + id VARCHAR(64) NOT NULL PRIMARY KEY, + transport_id VARCHAR(64) NOT NULL, + plan_id VARCHAR(64) NOT NULL, + plan_product_id VARCHAR(64) NOT NULL, + db_purchase_plan_id VARCHAR(64) NOT NULL, + db_inventory_id VARCHAR(64) NOT NULL, + tenant_no VARCHAR(64) NOT NULL DEFAULT 'shanxia2.0', + order_num INT NULL, + remark VARCHAR(512) NULL, + create_by VARCHAR(64) NULL, + create_dept_id VARCHAR(64) NOT NULL DEFAULT '', + create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + update_by VARCHAR(64) NULL, + update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + del_flag TINYINT NOT NULL DEFAULT 0 +) COMMENT='运输-地磅出入库关联'; +``` + +- [ ] **Step 2: ORM 增加 `PlTransport.driver_access_token`、`PlTransportDbLink`** + +- [ ] **Step 3: 开发库执行 DDL**(本地环境) + +--- + +## Task 2: 地磅桥接服务 + +**Files:** +- Create: `backend/app/services/pl_dibang_bridge_service.py` + +- [ ] **Step 1: 实现 `resolve_partner_company(plan, plan_type)`** + +入库 → `supplier_name or party_a`;出库 → `customer_name or party_b`。 + +- [ ] **Step 2: 实现 `find_monthly_db_plan(db, tenant_no, plan_date, business_type, customer_name, product_id, specification)`** + +- [ ] **Step 3: 实现 `ensure_db_plan_and_inventory(...)`** — 每产品行调用,返回 `InventoryLinkResult` + +复用 `backend/app/api/db/plans.py` 创建计划逻辑与 `inventory` 批次号生成(抽内部函数,避免 HTTP 自调用)。 + +--- + +## Task 3: 扩展 arrange API + +**Files:** +- Modify: `backend/app/schemas/pl/transport.py` +- Modify: `backend/app/api/pl/transport.py` + +- [ ] **Step 1: `TransportArrange` 增加 `generate_dibang_plan: bool = False`** + +- [ ] **Step 2: 新增 `TransportArrangeResult` 响应模型**(含 `driverAccessToken`, `driverUrl`, `inventoryRecords`) + +- [ ] **Step 3: arrange 内:创建 transport 时若 `driver_access_token` 为空则 `uuid4()`** + +- [ ] **Step 4: 若 `generate_dibang_plan` 且 plan_type in inbound/outbound,循环 products 调 bridge** + +- [ ] **Step 5: `driver_url = f"{settings.PUBLIC_WEB_ORIGIN}/#/public/pl/transport/{token}"`** + +--- + +## Task 4: 司机公共 API + +**Files:** +- Create: `backend/app/api/pl/public_transport.py` +- Modify: `backend/app/main.py` +- Modify: `backend/app/core/config.py` + +- [ ] **Step 1: `GET /api/public/pl/transport/{token}`** — 计划摘要 + transport + feedback + +- [ ] **Step 2: `POST /api/public/pl/transport/{token}/feedback`** — 更新 remark/images + +- [ ] **Step 3: `POST /api/public/pl/transport/{token}/attachments`** — multipart 上传 MinIO + +- [ ] **Step 4: 注册 router;`API_ENCRYPT_EXCLUDE_PATHS` 增加 `/api/public/pl/transport`** + +--- + +## Task 5: PlPlanViewTabs 组件 + +**Files:** +- Create: `web-admin/src/components/business/pl-plan-view-tabs/index.vue` +- Modify: `web-admin/src/components/business/pl-plan-view-dialog/index.vue` + +- [ ] **Step 1: 从 view-dialog 抽取三 Tab 模板与 script(props: `planId` 或 `plan`+`products` 预加载)** + +- [ ] **Step 2: view-dialog 改为 ``** + +--- + +## Task 6: 安排运输弹窗改造 + +**Files:** +- Modify: `web-admin/src/components/business/pl-plan-arrange-dialog/index.vue` +- Modify: `web-admin/src/api/pl/index.ts` + +- [ ] **Step 1: 模板拆为 `.arrange-top`(表单)+ `.arrange-bottom`(`PlPlanViewTabs`)** + +- [ ] **Step 2: 增加 `generateDibangPlan` checkbox(direct 禁用)** + +- [ ] **Step 3: 提交 payload 带 `generateDibangPlan`;解析扩展响应** + +- [ ] **Step 4: 成功态:司机链接、复制简述、复制磅单二维码(多产品选择)** + +- [ ] **Step 5: 抽取 `DbPoundSlipQrcodeDialog`,inventory 页改用该组件** + +--- + +## Task 7: 司机公共 H5 页 + +**Files:** +- Modify: `web-admin/package.json` +- Modify: `web-admin/vite.config.ts` +- Create: `web-admin/src/utils/http/public-pl.ts` +- Create: `web-admin/src/api/pl/public-transport.ts` +- Create: `web-admin/src/layouts/PublicMobileShell.vue` +- Create: `web-admin/src/views/public/pl/transport/index.vue` +- Modify: `web-admin/src/router/routes/staticRoutes.ts` + +- [ ] **Step 1: `pnpm add vant @vant/use`;vite 配置 VantResolver(仅 public 入口按需)** + +- [ ] **Step 2: `public-pl.ts` — axios baseURL `/api/public/pl/transport`,无 token/加密** + +- [ ] **Step 3: 司机页:加载 GET、展示摘要、Vant Uploader + Field、POST feedback** + +- [ ] **Step 4: staticRoutes 注册 `/public/pl/transport/:token`** + +--- + +## Task 8: 验收 + +- [ ] **V1–V9** 按下方 checklist 手工走查(设计文档 §七 + 再安排场景) +- [ ] 开发库已执行 `docs/sql/20260620_pl_arrange_dibang.sql`(或从已同步的 `shanxia2.0.sql` 建库) +- [ ] 生产环境配置 `PUBLIC_WEB_ORIGIN`(司机链接域名) +- [ ] `pnpm build:typecheck`(web-admin,允许关注本模块相关报错) +- [ ] `./scripts/update-graph.sh backend` + `frontend` + +### 验收 Checklist(2026-06-20) + +**前置** + +| # | 检查项 | 通过 | +|---|--------|------| +| P1 | 开发库存在 `pl_transport.driver_access_token` 与唯一索引 `uk_pl_transport_driver_token` | ☐ | +| P2 | 开发库存在表 `pl_transport_db_link` | ☐ | +| P3 | `.env` / `.env.local` 配置 `PUBLIC_WEB_ORIGIN`(如 `http://localhost:3006`) | ☐ | + +**功能(设计 §七 + 扩展)** + +| # | 场景 | 操作步骤 | 预期 | 通过 | +|---|------|----------|------|------| +| V1 | 入库不勾地磅 | 入库计划 → 安排运输,不勾选地磅 | 安排成功;可复制司机链接;`db_purchase_plan` / `db_inbound_outbound` 无新增 | ☐ | +| V2 | 出库勾地磅多产品 | 出库计划 ≥2 个产品 → 勾选地磅 → 安排 | 每个产品各 1 条出入库单;当月无地磅计划则新建 | ☐ | +| V3 | 复用地磅月计划 | 同月、同往来单位、同产品+规格已有地磅计划 | 不重复建 `db_purchase_plan`,仅新建出入库单 | ☐ | +| V4 | 直销单 | 直销计划打开安排弹窗 | 地磅勾选禁用;司机链接仍生成 | ☐ | +| V5 | 司机 H5 | 手机浏览器打开 `/#/public/pl/transport/{token}` | 免登录查看摘要;可上传回执;刷新仍可见 | ☐ | +| V6 | 复制简述 | 安排成功后点「复制计划简述」 | 剪贴板含计划号、车牌、产品、路线、司机链接 | ☐ | +| V7 | 复制磅单二维码 | 勾地磅且多产品 → 复制二维码 | 与 `/#/db/inventory` 磅单二维码弹窗一致 | ☐ | +| V8 | 弹窗三 Tab | 安排弹窗下半区切换 Tab | 与「查看」弹窗三 Tab 信息一致 | ☐ | +| V9 | 再安排 + 地磅 | 已安排且曾勾地磅 → 修改计划/安排信息后再次勾选地磅并确认 | 弹窗提示「将作废…再重建」;待处理出入库单软删后按当前计划重建;已关联磅单时后端 400 明确提示 | ☐ | + +**回归** + +| # | 场景 | 预期 | 通过 | +|---|------|------|------| +| R1 | 点击「安排运输」打开弹窗 | 不再出现「加载运输计划失败」;上半表单 + 下半三 Tab 正常 | ☐ | +| R2 | 自有车辆安排 | 承运商自动带出「安庆市山峡化工有限公司」 | ☐ | + +--- + +## Spec 覆盖自检 + +| Spec 条目 | Task | +|-----------|------| +| 上下布局 + Tab | Task 5, 6 | +| 地磅勾选 + 多产品 | Task 2, 3, 6 | +| 司机免登录链接 | Task 3, 4, 7 | +| 复制简述/二维码 | Task 6 | +| planDate 当月 | Task 2 | +| Vant 公共页 | Task 7 | diff --git a/docs/superpowers/specs/2026-06-19-pl-vehicle-personnel-cert-design.md b/docs/superpowers/specs/2026-06-19-pl-vehicle-personnel-cert-design.md new file mode 100644 index 000000000..9839f8b5d --- /dev/null +++ b/docs/superpowers/specs/2026-06-19-pl-vehicle-personnel-cert-design.md @@ -0,0 +1,256 @@ +# 运输计划 · 车辆/人员/证书重构 — 设计文档 + +> **日期**: 2026-06-19 +> **状态**: 已批准 +> **前置**: `docs/运输计划管理-需求说明文档.md`、`openspec/changes/transport-plan-management/specs/vehicle-driver/spec.md` + +## 目标 + +将运输计划基础数据从「司机表写死证件字段 + 车辆默认司机下拉」重构为: + +1. **人员主数据**(司机、押运员等)独立维护; +2. **车辆-人员关联**在车辆弹窗以**子表**维护(姓名、手机、年龄、人员类型、备注); +3. **证书**从主体表拆出,车辆与人员均支持**动态多证**(证名、证号、有效期、提醒天数,默认 30 天); +4. **证件到期提醒**基于 `pl_cert` 统一扫描,覆盖车辆与人员。 + +## 非目标(本期不做) + +- 人员跨车合并去重工具(同名无手机重复建人可接受); +- 运输单多人明细表 `pl_transport_personnel`(仍用 `driver_id`,从车辆默认司机关联推导); +- 安排运输时证书硬性拦截(本期仅提醒,排班阻断放二期); +- `pl_cert_type` 必检证种字典(首期证名手输/字典可选,不配置必检规则)。 + +--- + +## 现状与差距 + +| 项 | 现状 | 目标 | +|----|------|------| +| 人员 | `pl_driver`,证件 6 字段写死 | `pl_personnel` + 动态 `pl_cert` | +| 车辆-人 | `default_driver_id` 下拉 + `pl_vehicle_driver` | 车辆弹窗**人员子表**,含角色 | +| 车辆证件 | 无 | `pl_cert`(owner=vehicle) | +| 提醒 | 扫 `pl_driver` 三字段,仅司机 | 扫 `pl_cert`,车辆+人员 | +| 人员类型 | 仅司机 | driver / escort(字典 `pl_personnel_role`) | + +--- + +## 数据模型 + +### 1. `pl_personnel`(人员主表,替代 `pl_driver`) + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| id | varchar(64) | ✅ | UUID | +| personnel_name | varchar(100) | ✅ | 姓名 | +| phone_no | varchar(32) | ❌ | 手机号(非必填) | +| age | int | ❌ | 年龄 | +| id_card_no | varchar(32) | ❌ | 身份证 | +| status | char(1) | ✅ | 1-在职 0-停用,默认 1 | +| tenant_no … del_flag | | ✅ | 公共字段 | + +**删除**:`driving_license_*`、`vehicle_license_*`、`hazmat_cert_*` 等写死证件列。 + +### 2. `pl_vehicle_personnel`(车辆-人员关联,替代 `pl_vehicle_driver`) + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| id | varchar(64) | ✅ | UUID | +| vehicle_id | varchar(64) | ✅ | 车辆 ID | +| personnel_id | varchar(64) | ✅ | 人员 ID | +| role | varchar(20) | ✅ | `driver` 司机 / `escort` 押运员 | +| is_default | smallint | ✅ | 是否默认司机,仅 role=driver;每车最多 1 个为 1 | +| remark | varchar(512) | ❌ | 本条关联备注 | +| tenant_no … del_flag | | ✅ | 公共字段 | + +**唯一约束**:`(vehicle_id, personnel_id, role)` 在 `del_flag=0` 下唯一。 + +### 3. `pl_cert`(证书实例,核心新表) + +| 字段 | 类型 | 必填 | 说明 | +|------|------|------|------| +| id | varchar(64) | ✅ | UUID | +| owner_type | varchar(20) | ✅ | `vehicle` / `personnel` | +| owner_id | varchar(64) | ✅ | 主体 ID | +| cert_name | varchar(100) | ✅ | 证书名称(可手输,可参考字典 `pl_cert_name`) | +| cert_no | varchar(64) | ❌ | 证号 | +| expire_date | date | ❌ | 有效期(空则不参与到期扫描) | +| remind_days | int | ✅ | 提前提醒天数,默认 30 | +| attachment_urls | varchar(2000) | ❌ | 附件 URL,逗号分隔 | +| status | varchar(20) | ✅ | `valid` / `expired` / `revoked`,默认 valid | +| tenant_no … del_flag | | ✅ | 公共字段 | + +**索引**:`(tenant_no, owner_type, owner_id)`、`(expire_date)`。 + +### 4. `pl_document_reminder`(提醒工单,扩展) + +| 变更 | 说明 | +|------|------| +| + cert_id | 关联 `pl_cert.id` | +| + owner_type, owner_id | 冗余主体 | +| + owner_label | 冗余展示:车牌或人员姓名 | +| document_type | 改为存 `cert_name` 快照(兼容旧数据保留原枚举) | +| driver_id | 保留列兼容;新数据 personnel 类型时写 personnel_id 到 owner_id | + +### 5. `pl_vehicle`(车辆表,精简) + +| 变更 | 说明 | +|------|------| +| 保留 | vehicle_type, carrier_id, license_plate, load_capacity, vehicle_status 等 | +| 废弃(迁移后删列) | default_driver_id, default_driver_name | + +### 6. 字典(`sys_dict_type` / `sys_dict_data`) + +| dict_type | 值示例 | +|-----------|--------| +| pl_personnel_role | driver-司机, escort-押运员 | +| pl_cert_name | 行驶证, 道路运输证, 驾驶证, 押运员证, 危化品从业资格证…(引导录入,非强制) | + +--- + +## 人员 Upsert 规则(车辆保存时) + +保存 `personnelList` 每条时: + +``` +若行带 personnelId 且存在 → 更新 pl_personnel 基础字段 +否则若 phone_no 非空 → 按 tenant_no + phone_no 查找 +否则若 personnel_name 非空 → 按 tenant_no + personnel_name 查找(弱匹配,可能新建) +否则 → 新建 pl_personnel +``` + +然后:软删该车全部旧 `pl_vehicle_personnel`,批量插入新关联;校验 `is_default` 仅 driver 行、每车 ≤1。 + +--- + +## API 设计 + +### 车辆(嵌套保存) + +`POST/PUT /api/admin/transport/vehicle` 请求体扩展: + +```json +{ + "licensePlate": "皖A12345", + "vehicleType": "self", + "vehicleStatus": "available", + "personnelList": [ + { + "personnelId": "optional", + "personnelName": "张三", + "phoneNo": "13800138000", + "age": 42, + "role": "driver", + "isDefault": 1, + "remark": "主驾" + } + ], + "certList": [ + { + "certId": "optional", + "certName": "行驶证", + "certNo": "xxx", + "expireDate": "2027-01-01", + "remindDays": 30 + } + ] +} +``` + +`GET /vehicle/{id}` 返回 `VehicleDetail`:`VehicleRead` + `personnelList[]` + `certList[]`。 + +列表 `GET /vehicle` 增加计算字段 `personnelSummary`(如 `张三(司机)、李四(押运员)`)、`defaultDriverName`。 + +### 人员 + +- `GET/POST/PUT/DELETE /transport/personnel` — CRUD(替代 `/driver`) +- 兼容期保留 `/driver` 路由别名 → personnel,标记 deprecated + +### 证书 + +- `GET /transport/cert?ownerType=vehicle&ownerId=xxx` — 按主体查证书 +- 车辆/人员保存时嵌套 `certList` 一并写入;人员管理页也可独立维护 `certList` + +### 提醒 + +- `POST /transport/check-document-expiry` 改为扫描 `pl_cert`: + - `days_remaining = (expire_date - today).days` + - 当 `0 <= days_remaining <= remind_days` 且不存在同 cert_id 的 pending 提醒 → 创建提醒 + +--- + +## 前端设计 + +### 车辆管理 `web-admin/src/views/pl/vehicle/index.vue` + +弹窗宽度 **800px**,`dialog-form-layout`,结构: + +1. 主表字段(车牌、类型、承运商、载重、状态、备注) +2. **关联人员**子表(`el-table` + 行内编辑) + - 列:姓名*、手机号、年龄、人员类型*、备注、默认司机(radio)、删除 + - 工具栏:「添加人员」 +3. **车辆证书**子表 + - 列:证书名称*、证号、有效期、提醒天数(默认 30)、删除 + - 工具栏:「添加证书」 + +列表列:去掉「默认司机」单列,改为「关联人员」`personnelSummary`。 + +### 人员管理(原司机管理) + +- 路径:`/pl/personnel`,菜单名「人员管理」 +- 列表:姓名、手机、年龄、状态、证书摘要(最近到期日 Tag) +- 弹窗:基础信息 + **人员证书**子表(同车辆证书列) +- 兼容:旧 `/pl/driver` 路由 redirect 到 personnel + +### 证件提醒 `document-reminder.vue` + +- 列增加:主体类型(车辆/人员)、主体名称(车牌/姓名) +- 数据来源改为 `pl_document_reminder` 新字段 + +### 运输安排 `plan/arrange.vue` + +- 选车后:`driverId` 默认取该车 `is_default=1` 的 driver 行对应 personnel_id +- 司机下拉:仅列出该车 `role=driver` 的关联人员 +- 手机号展示在司机选项标签中 + +--- + +## 数据迁移 + +1. 创建 `pl_personnel`、`pl_cert`,重建 `pl_vehicle_personnel`(或 ALTER 加 role/remark) +2. `INSERT pl_personnel SELECT … FROM pl_driver` +3. 每条 driver 的三类证件 → 三条 `pl_cert`(owner_type=personnel);**行驶证**迁移时业务上应挂车辆,若无法自动关联则保留在人员并标记待人工调整 +4. `pl_vehicle_driver` → `pl_vehicle_personnel`(role=driver, is_default 从 vehicle.default_driver_id 推导) +5. 重写 `check_document_expiry` +6. 确认无引用后废弃 `pl_driver` 表及 vehicle 上 default_driver 列 + +迁移 SQL 独立文件:`docs/sql/20260619_pl_personnel_cert_migration.sql`。 + +--- + +## OpenSpec 变更 + +在 `openspec/changes/transport-plan-management/` 下更新或新增: + +- `specs/vehicle-driver/spec.md` → 重命名为 `vehicle-personnel-cert/spec.md` 并修订 Scenario +- `specs/pl-api-json/spec.md` 补充嵌套 JSON 字段 + +--- + +## 验收标准 + +1. 车辆新增/编辑可在弹窗内维护人员子表(含非必填手机)与证书子表,保存后回显正确。 +2. 人员管理页可独立 CRUD 人员及其证书。 +3. 定时任务对车辆、人员证书均生成到期提醒;提醒列表展示主体与证名。 +4. 运输安排选车自动带出默认司机(来自人员子表 is_default)。 +5. 旧 `pl_driver` 数据迁移后证件提醒不丢失。 +6. `python scripts/check_pl_json_aliases.py` 与字段一致性检查通过。 + +--- + +## 风险 + +| 风险 | 缓解 | +|------|------| +| 无手机同名重复人员 | 弱匹配仅用于 upsert;二期可做合并 | +| 行驶证原在司机表 | 迁移脚本 + 文档说明人工调整到车辆 | +| 下游仍用 driver_id | transport/plan 字段名暂保留,值改为 personnel_id | diff --git a/docs/superpowers/specs/2026-06-20-pl-arrange-dibang-design.md b/docs/superpowers/specs/2026-06-20-pl-arrange-dibang-design.md new file mode 100644 index 000000000..cc009f0d2 --- /dev/null +++ b/docs/superpowers/specs/2026-06-20-pl-arrange-dibang-design.md @@ -0,0 +1,389 @@ +# 运输计划 · 安排运输弹窗 + 司机免登录页 + 地磅联动 — 设计文档 + +> **日期**: 2026-06-20 +> **状态**: 已批准(2026-06-20) +> **前置**: `docs/运输计划管理-需求说明文档.md`(§6 流程、§8 运输与二维码)、`docs/business-inventory/02-地磅业务明细.md`、`docs/superpowers/specs/2026-06-20-pl-plan-form-dialog-design.md` +> **界面模式**: 安排弹窗参考 `PlPlanViewDialog`;地磅二维码复用 `/#/db/inventory` 磅单弹窗;司机 H5 参考 `simple-dibang-xiaoshou/mobile-h5/src/views/inventory/fill.vue` + +## 目标 + +改造 `#/pl/plan`「安排运输」弹窗为 **上填写、下只读对照** 布局;安排成功后 **始终** 生成司机免登录链接;可选勾选「生成地磅计划」时按产品行联动 `db_purchase_plan` + `db_inbound_outbound`;并提供 **复制计划简述**、**复制磅单二维码** 能力。 + +--- + +## 已确认决策(2026-06-20) + +| # | 决策 | 说明 | +|---|------|------| +| D1 | **多产品地磅** | 勾选地磅时,**每个产品行**各创建一套「地磅计划 + 出入库单」 | +| D2 | **司机链接** | **无论是否勾选地磅**,安排运输成功后都生成司机链接 | +| D3 | **当月判定** | 以运输计划 **`planDate` 所在自然月** 为准(非安排操作日) | +| D4 | **司机 H5 承载** | 放在 **`web-admin` 公共静态路由**;UI 移动端样式;**全程免登录** | +| D5 | **移动端 UI** | 公共页 **局部引入 Vant 4**(仅 `/public/**` 懒加载);管理端继续 Element Plus | +| D6 | **司机页鉴权** | **不使用门户 JWT**;链接内 `token` 校验;打开即可查看与提交回执 | + +--- + +## 非目标(本期不做) + +- 地磅硬件对接;地磅单自动过磅 +- 直销单(`plan_type=direct`)生成地磅计划(勾选框禁用) +- 司机链接过期策略变更(默认长期有效;`qr_expire_date` 可后续扩展) +- 将地磅三方填写页 `/#/public/db/inventory/:id` 一并迁移(可 Phase 2 独立 PR) +- 运输 N:N 拼车场景下的地磅合并(本期按 **一计划一运输 1:1** 处理,与当前 `arrange` 一致) + +--- + +## 一、安排运输弹窗(`PlPlanArrangeDialog`) + +### 1.1 布局结构 + +``` +┌──────────────────────────────────────────────────────────────┐ +│ 安排运输 · {planNo} [×] │ +├──────────────────────────────────────────────────────────────┤ +│ ▲ 上区:安排表单(max-height ~42vh,内部可滚动) │ +│ · 车辆 / 司机 / 承运商 / 起终点 / 运费(沿用现有字段) │ +│ · □ 是否生成地磅计划(仅 inbound/outbound 可勾选) │ +│ · 安排成功后展示:司机链接(只读 + 复制) │ +├──────────────────────────────────────────────────────────────┤ +│ ▼ 下区:计划单查看(flex:1,min-height 280px) │ +│ el-tabs(默认 Tab1) │ +│ [计划概况] [运输信息] [合同信息] │ +└──────────────────────────────────────────────────────────────┘ +│ 取消 │ 确认安排 │(成功后)复制简述 │ 复制磅单二维码 │ +└──────────────────────────────────────────────────────────────┘ +``` + +**尺寸**:`width: min(1680px, calc(100vw - 80px))`;`dialog-form-layout`;`align-center`;无 backdrop blur。 + +### 1.2 下区 Tab 内容(复用 `PlPlanViewDialog`) + +抽取只读子组件 `PlPlanViewTabs`(新建),三 Tab: + +| Tab | 包含区块 | 数据来源 | +|-----|----------|----------| +| **计划概况** | 基础信息 + 产品信息 + 危化品证书 | `planApi.get` + 合同快照 | +| **运输信息** | 车牌/承运商、取送货、运费、车辆详情面板 | plan + transport(草稿时 transport 可为空) | +| **合同信息** | 合同 KV + 供方/需方 + 合同产品预览 | `contractId` → CRM 合同 | + +打开弹窗时与现逻辑一致:`loadMasterData` + `planApi.get` + 可选 `transportApi.get`。 + +### 1.3 「是否生成地磅计划」 + +| 条件 | UI | +|------|-----| +| `planType === 'direct'` | `el-checkbox` **disabled**,tooltip:「直销单不涉及地磅」 | +| `planType === 'inbound' \| 'outbound'` | 可勾选,默认 **不勾选** | + +勾选后提交时 `generateDibangPlan: true` 传给后端。 + +### 1.4 安排成功态 + +提交成功后 **不立即关闭弹窗**,切换为成功区: + +1. **司机链接**:`{origin}/#/public/pl/transport/{driverAccessToken}` +「复制链接」 +2. **复制计划简述**(始终可用) +3. **复制磅单二维码**(仅当 `generateDibangPlan` 且返回 `inventoryRecords.length > 0`) + - 多产品时:下拉选择对应产品行的出入库单,或逐条展示复制按钮 + - 交互复用 `db/inventory` 的 `db-qrcode-dialog` 组件(抽为 `DbPoundSlipQrcodeDialog`) + +**计划简述模板**(换行符 `\n`): + +``` +【运输安排】 +计划号:{planNo} +车牌:{licensePlate} +时间:{pickupTime 或 planDate} +产品:{productName} {model} / {qty}{unit} +路线:{pickupAddress} → {destinationAddress} +司机链接:{driverUrl} +``` + +--- + +## 二、司机免登录页(公共路由) + +### 2.1 路由 + +在 `staticRoutes.ts` 注册(**不需登录**): + +```ts +{ + path: '/public/pl/transport/:token', + name: 'PublicPlTransportDriver', + component: () => import('@views/public/pl/transport/index.vue'), + meta: { title: '运输计划', isHideTab: true, isPublicMobile: true } +} +``` + +使用 `PublicMobileShell` 布局:无侧栏/顶栏/WorkTab;`max-width: 480px` 居中;`safe-area-inset-bottom`。 + +### 2.2 技术栈 + +| 项 | 选择 | +|----|------| +| 组件库 | **Vant 4**(`unplugin-vue-components` + `@vant/auto-import-resolver`,仅 public 入口 chunk) | +| 样式 Token | Fresh Mint:`--primary #10b981`(覆盖 Vant 主题变量);**禁止** `#0a9f6d` | +| HTTP | 独立 `publicPlRequest`(无 JWT、无 API 加密) | + +### 2.3 页面能力 + +| 区域 | 内容 | +|------|------| +| 计划摘要(只读) | 计划号、计划日期、单据类型、产品列表(名称/规格/数量)、取货地址→送货地址、车牌、司机姓名/电话 | +| 回执上传 | 图片/文件附件(MinIO),多文件;调用公共上传接口 | +| 备注 | 文本域,可修改并保存 | +| 历史回显 | 再次打开同一链接:展示已保存的 `feedback_images`、`feedback_remark`、`feedback_time` | + +**交互**:进入即可操作,**无登录页、无验证码**(token 即凭证)。 + +参考:`simple-dibang-xiaoshou/mobile-h5/src/views/inventory/fill.vue` 的卡片结构与只读/编辑切换;本页 **始终允许更新备注与附件**(覆盖式保存,保留最新回执)。 + +### 2.4 链接生成 + +安排运输时后端生成 `driver_access_token`(UUID v4,64 字符),写入 `pl_transport`。 + +完整 URL: + +``` +{WEB_ADMIN_ORIGIN}/#/public/pl/transport/{driver_access_token} +``` + +`WEB_ADMIN_ORIGIN` 由后端配置项 `PUBLIC_WEB_ORIGIN`(或读取请求 `Origin`)拼接,开发环境示例:`http://localhost:3006`。 + +--- + +## 三、地磅联动(`generateDibangPlan`) + +### 3.1 服务边界 + +新增 `backend/app/services/pl_dibang_bridge_service.py`,由 `arrange_transport` 在同一 DB 事务内调用(方案:后端编排)。 + +### 3.2 往来单位映射 + +| 运输计划 `planType` | 地磅 `businessType` | 往来单位 `customer_name` / `partner_company` | +|-------------------|---------------------|-----------------------------------------------| +| `inbound` | 入库 | **供方名称**:`supplier_name` 或 `party_a` | +| `outbound` | 出库 | **需方名称**:`customer_name` 或 `party_b` | + +### 3.3 当月地磅计划匹配 + +以 `plan.plan_date` 计算 `month_start`、`month_end`(自然月首末日)。 + +对每个 `pl_plan_product` 行独立执行: + +**查询** `db_purchase_plan`(`del_flag=0`,同 `tenant_no`): + +- `business_type` = 入库/出库(中文) +- `customer_name` = 往来单位(trim 后精确匹配) +- `product_id` = 产品行 `product_id` +- `specification` = 产品行 `model`(规格快照) +- 计划有效期与当月相交:`start_date <= month_end AND end_date >= month_start` + +**若不存在** → `POST` 逻辑创建 `db_purchase_plan`: + +| 字段 | 值 | +|------|-----| +| `plan_date` | `plan.plan_date` | +| `start_date` / `end_date` | 当月首末日 | +| `business_type` | 入库/出库 | +| `customer_name` | 上表往来单位 | +| `product_id` / `product` / `specification` | 来自产品行 | +| `planned_quantity` | 产品行 `quantity` 或 in/out estimate qty(吨) | +| `remarks` | `来源运输计划 {plan_no}` | + +**然后** 创建出入库单(优先完整创建,非仅 `create-link-for-plan` 空单): + +| 字段 | 值 | +|------|-----| +| `date` | `plan.plan_date` | +| `partner_company` | 往来单位 | +| `business_type` | 入库/出库 | +| `product_id` / `product` / `specification` | 产品行 | +| `quantity` | 产品行数量(吨) | +| `vehicle_no` | 安排表单 `license_plate` | +| `plan_no` | 地磅计划 `plan_no` | +| `purchase_plan_id` | 地磅计划 `id` | +| `status` | `待入库` / `待出库`(非「待三方填写」— 已由专员安排好) | +| `remarks` | `运输计划 {plan_no}` | + +复用 `db` 模块现有 `inventory` 创建与 `batch_no` 序号逻辑。 + +### 3.4 关联追溯(可选表) + +新增 `pl_transport_db_link`(建议): + +| 字段 | 说明 | +|------|------| +| `transport_id` | `pl_transport.id` | +| `plan_id` | `pl_plan.id` | +| `plan_product_id` | `pl_plan_product.id` | +| `db_purchase_plan_id` | 地磅计划 ID | +| `db_inventory_id` | 出入库单 ID | + +便于列表回查与复制二维码时定位记录。 + +### 3.5 流程图 + +```mermaid +sequenceDiagram + participant UI as 安排运输弹窗 + participant API as POST arrange + participant PL as pl_transport + participant BR as pl_dibang_bridge + participant DB as db_* 表 + + UI->>API: arrange + generateDibangPlan + API->>PL: 创建/更新运输单 + driver_access_token + alt generateDibangPlan && inbound/outbound + loop 每个产品行 + BR->>DB: 查当月地磅计划 + alt 不存在 + BR->>DB: 创建 db_purchase_plan + end + BR->>DB: 创建 db_inbound_outbound + BR->>DB: 写入 pl_transport_db_link + end + end + API-->>UI: transport + driverUrl + inventoryRecords[] +``` + +--- + +## 四、后端 API + +### 4.1 扩展安排运输 + +**`POST /api/transport/order/arrange/{plan_id}`**(需登录) + +请求体新增: + +```json +{ + "vehicleId": "...", + "driverId": "...", + "generateDibangPlan": false, + "...": "现有 TransportArrange 字段" +} +``` + +响应扩展(`TransportArrangeResult`): + +```json +{ + "id": "transport-uuid", + "transportNo": "SXYS000001", + "driverAccessToken": "uuid", + "driverUrl": "http://localhost:3006/#/public/pl/transport/uuid", + "inventoryRecords": [ + { + "planProductId": "...", + "productName": "...", + "dbPurchasePlanId": "...", + "dbInventoryId": "...", + "batchNo": "PC-..." + } + ] +} +``` + +### 4.2 司机公共 API(免登录) + +挂载在 `app/api/public_pl_transport.py`(或 `pl/public_transport.py`),前缀 **`/api/public/pl/transport`**: + +| 方法 | 路径 | 说明 | +|------|------|------| +| GET | `/{token}` | 计划摘要 + 运输信息 + 已回执 | +| POST | `/{token}/feedback` | 保存备注、附件 URL 列表(JSON) | +| POST | `/{token}/attachments` | 上传回执文件(multipart → MinIO) | + +校验:`pl_transport.driver_access_token == token` 且 `del_flag=0`;无效 token 返回 404。 + +**须加入** `API_ENCRYPT_EXCLUDE_PATHS`: + +``` +/api/public/pl/transport +``` + +### 4.3 数据库变更 + +`pl_transport` 新增: + +```sql +ALTER TABLE pl_transport + ADD COLUMN driver_access_token VARCHAR(64) NULL COMMENT '司机免登录访问令牌' AFTER qr_expire_date; +CREATE UNIQUE INDEX uk_pl_transport_driver_token ON pl_transport(driver_access_token); +``` + +安排时:若 token 为空则生成;重新安排保留原 token(链接不失效)或按产品决策 **重新生成** — **本期:保留原 token**。 + +同步更新 `docs/sql/pl_tables.sql` 与 `docs/sql/shanxia2.0.sql` 增量片段。 + +--- + +## 五、前端文件清单 + +| 文件 | 动作 | +|------|------| +| `components/business/pl-plan-arrange-dialog/index.vue` | 改造上下布局 + 地磅勾选 + 成功态 | +| `components/business/pl-plan-view-tabs/index.vue` | **新建**,从 view-dialog 抽取 Tab | +| `components/business/pl-plan-view-dialog/index.vue` | 改为引用 `PlPlanViewTabs`(减重复) | +| `components/business/db/DbPoundSlipQrcodeDialog.vue` | **新建**,从 inventory 抽出二维码弹窗 | +| `views/public/pl/transport/index.vue` | **新建**,司机 Vant 页 | +| `layouts/PublicMobileShell.vue` | **新建** | +| `router/routes/staticRoutes.ts` | 注册公共路由 | +| `utils/http/public-pl.ts` | **新建**,无鉴权 axios | +| `api/pl/index.ts` | 扩展 `TransportArrange` / arrange 响应类型 | +| `package.json` | 增加 `vant`、`@vant/use` dev resolver | + +--- + +## 六、安全与约束 + +| 项 | 规则 | +|----|------| +| 司机 token | 足够熵(UUID);不在列表 API 暴露;仅安排成功响应与公共 GET 使用 | +| 公共上传 | 限制 MIME(图片/PDF)、单文件大小、租户隔离路径 | +| 地磅 API | 桥接服务内部调用,不走 HTTP 自调用;同事务提交 | +| 租户 | 所有 `db_*` 写入带当前用户 `tenant_no` | + +--- + +## 七、验收标准 + +| # | 场景 | 预期 | +|---|------|------| +| V1 | 入库单安排运输,不勾地磅 | 运输成功;司机链接可打开;无 `db_*` 新记录 | +| V2 | 出库单勾选地磅,2 个产品 | 当月无计划则建 2 条地磅计划 + 2 条出入库单 | +| V3 | 同月同单位同产品同规格已有地磅计划 | 不重复建计划,仅建出入库单 | +| V4 | 直销单 | 地磅勾选禁用;司机链接仍生成 | +| V5 | 司机页手机浏览器 | 免登录查看计划;上传回执;刷新仍可见 | +| V6 | 复制简述 | 剪贴板含车牌、产品、路线、链接 | +| V7 | 复制磅单二维码 | 与 `/#/db/inventory` 弹窗视觉一致 | +| V8 | 弹窗下区 Tab | 与「查看」弹窗信息一致(三 Tab) | + +--- + +## 八、实施分期建议 + +| Phase | 内容 | 依赖 | +|-------|------|------| +| **P1** | `PlPlanViewTabs` + 安排弹窗上下布局 + 地磅勾选 UI | 无 | +| **P2** | 后端 `driver_access_token` + 公共 GET/POST + 司机 Vant 页 | P1 可并行 | +| **P3** | `pl_dibang_bridge_service` + arrange 扩展 + 复制简述/二维码 | P1 | +| **P4** | `pl_transport_db_link` + 联调验收 | P3 | + +--- + +## 九、参考路径 + +| 说明 | 路径 | +|------|------| +| 现安排弹窗 | `web-admin/src/components/business/pl-plan-arrange-dialog/index.vue` | +| 现查看弹窗 | `web-admin/src/components/business/pl-plan-view-dialog/index.vue` | +| 地磅出入库二维码 | `web-admin/src/views/db/inventory/index.vue` | +| 地磅计划生成出入库 | `web-admin/src/views/db/plans/index.vue` → `handleGenerateInventory` | +| 地磅 create-link | `backend/app/api/db/inventory.py` | +| 运输 arrange | `backend/app/api/pl/transport.py` | +| 原 H5 填写参考 | `simple-dibang-xiaoshou/mobile-h5/src/views/inventory/fill.vue` | diff --git a/docs/superpowers/specs/2026-06-20-pl-plan-form-dialog-design.md b/docs/superpowers/specs/2026-06-20-pl-plan-form-dialog-design.md new file mode 100644 index 000000000..b523793d3 --- /dev/null +++ b/docs/superpowers/specs/2026-06-20-pl-plan-form-dialog-design.md @@ -0,0 +1,327 @@ +# 运输计划 · 新增计划弹窗 — 设计文档 + +> **日期**: 2026-06-20 +> **状态**: 已实施(2026-06-20) +> **前置**: `docs/运输计划管理-需求说明文档.md`(§7 计划单据、§8 运输管理、§10 运费结算)、OpenSpec `ui-conventions`(弹窗/form-grid-4)、`openspec/changes/transport-plan-management/specs/transport-plan/spec.md` + +## 目标 + +将 `#/pl/plan` 列表页「新增计划」弹窗从脚手架表单升级为符合业务闭环的 **5 区域大弹窗**:合同驱动、产品快照、可选运输安排(含运费),并与现有 `pl_transport` / 承运商 / 车辆人员证书体系对齐。 + +## 已确认决策(2026-06-20) + +| # | 决策 | 说明 | +|---|------|------| +| D1 | **运输量** | 默认 = 【产品信息】区域数量之和;用户可手工修改;按重量运费 = 运输量 × 运输单价 | +| D2 | **创建分支** | **未填车牌** → 仅创建计划草稿(`follow_status=draft`,`transport_status=pending`);**已填车牌** → 同事务创建 `pl_transport` + `pl_plan_transport`,计划 `transport_status=arranged` | +| D3 | **产品行** | 来自合同带出;支持删除行、行备注;**不可新增** | +| D4 | **弹窗布局** | 宽度 `min(1680px, calc(100vw - 80px))`;表单区 `form-grid-4`(一行 4 列) | + +--- + +## 非目标(本期不做) + +- 合同模块「发起计划」入口(可后续单独 PR,与本弹窗共用 `ContractSelector`) +- 框架合同 `priceTiers` 取价规则(首期带合同行价) +- 地图自动计算运输公里数 +- 安排运输时易制毒/易制爆证件硬性拦截(需求文档安排页有校验,弹窗创建运输时 **沿用** 既有 `arrange` 校验即可) +- 编辑计划弹窗改造(本期仅 **新增** 弹窗;编辑仍走路由页,后续可对齐) + +--- + +## 弹窗结构(5 区域) + +``` +PlPlanFormDialog +├── 【基础信息】 PlPlanFormBasicSection +├── 【合同信息】 PlPlanFormContractSection + ContractSelector +├── 【运输信息】 PlPlanFormTransportSection +├── 【产品信息】 PlPlanFormProductTable +└── 【备注】 计划级 textarea +``` + +### 1. 基础信息 + +| 字段 | 控件 | 规则 | +|------|------|------| +| 计划日期 | date | 必填;默认当天 | +| 归属公司 | select | 必填;`shanxia` / `yundong` | +| 单据类型 | select / 只读 Tag | 选合同后 **自动计算**(`_determine_plan_type`);可展示不可改 | +| 跟进人 | 只读或 select | 默认当前用户 | + +**不再包含**:合同编号、客户/供应商手工录入(改由合同区只读带出)。 + +### 2. 合同信息 + +**选择**:`ContractSelector` 弹窗(仿 `QuoteSelector`),数据源 `listContract` + 确认时 `getContract(id)`。 + +**展示(只读,4 列 KV + 子块)**: + +| 子块 | 内容 | +|------|------| +| 合同基础 | 合同编号、合同名称、合同类型、签订/起止日期、结算方式、合同金额 | +| 供方 | `supplierName` + `partyA*`(名称、联系人、电话、地址) | +| 需方 | `customerName` + `partyB*`(名称、联系人、电话、地址) | +| 合同产品预览 | 只读小表(列与产品区一致,不含删除) | + +**联动**: + +- 确认选择 → 填充基础信息(归属公司、单据类型、客户/供应商/目的地 ID 与名称等) +- 同步 **【产品信息】** 列表(合同 `products[]` 全量映射,可删行) +- 清空合同时重置产品列表与运输量 + +**供方/需方映射**: + +- **供方** = CRM `supplierName` + 甲方(`partyA*`)联系信息 +- **需方** = CRM `customerName` + 乙方(`partyB*`)联系信息 + +(与合同模板「甲乙方」字段一致,写入计划冗余字段 `party_a` / `party_b` / `supplier_*` / `customer_*`。) + +### 3. 运输信息 + +#### 3.1 车辆与承运商 + +| 字段 | 控件 | 规则 | +|------|------|------| +| 车牌号 | `el-select` filterable | 数据:`vehicleApi.list({ vehicleStatus: 'available' })`;支持模糊 | +| 运输公司 | `el-select` filterable | 数据:`carrierApi.list`;选承运商车辆时 **自动带出** `carrierId/carrierName`,可改 | +| 运输公里数 | `el-input-number` | 精度 2;可空 | + +**选车牌后展开**(复用现有组件): + +- 车辆信息 KV(车牌、类型、载重、承运商、状态) +- 车辆证书:`PlCertViewList` +- 关联人员:`PlVehiclePersonnelViewList`(`layout="tabs"`) + +> 人员体系已迁移至 `pl_personnel`;创建运输时司机 ID 从车辆关联人员中 **role=driver** 的默认项推导(与 `arrange.vue` 一致)。后端 `arrange` 若仍引用 `PlDriver`,实现阶段应改为 personnel。 + +#### 3.2 取货 / 目的地 + +| 分组 | 字段 | 存储 | +|------|------|------| +| 取货 | 取货地址、取货时间、注意事项 | `pl_plan` 新增字段(见 DDL) | +| 目的地 | 目的地地址、送达时间、注意事项 | `pl_plan` 新增字段 | + +创建 `pl_transport` 时,可选将取货地址 → `start_point`、目的地地址 → `end_point` 冗余写入运输表(便于运输管理列表展示)。 + +#### 3.3 运费 + +| 字段 | 按重量 `by_weight` | 按趟 `by_trip` | +|------|-------------------|----------------| +| 是否有运输费用 | `has_freight` switch;关则隐藏运费块 | 同左 | +| 运费计算方式 | select,**默认按重量** | 同左 | +| 运输量(吨) | 可编辑;默认 `sum(产品.quantity)` | 隐藏 | +| 运输单价(元/吨) | 必填(当 has_freight=1) | 禁用 | +| 运费金额(元) | 自动 = 运输量×单价;**允许手工改**(需求 §10.2) | 手填必填 | +| 是否开票 | switch | 同左 | + +**计算逻辑**(抽 composable `usePlFreightCalc`): + +```typescript +defaultTransportQty = products.reduce((s, p) => s + (p.quantity || 0), 0) +// 用户改 transportQty 后不再自动覆盖,除非产品列表变化时可提示「是否重新汇总」 + +if (freightType === 'by_weight') + freightAmount = transportQty * freightPrice // 可被用户 override +if (freightType === 'by_trip') + freightAmount = manualTripAmount +``` + +### 4. 产品信息 + +**表格列**(横向滚动,`list-table`): + +| 列 | 来源字段 | 可编辑 | +|----|----------|--------| +| 序号 | 行号 | 否 | +| 产品名称 | `productName` | 否 | +| 型号/规格 | `productModel` → `model` | 否 | +| 产品分类 | `categoryName` | 否 | +| 单位 | `unit` | 否 | +| 数量 | `quantity` | 否(合同带出;删行后重算运输量) | +| 包装规格 | `packageSpec` | 否 | +| 送货方式 | `deliveryMethod` | 否(Tag 展示) | +| 含税单价(元) | `price` | 否 | +| 含税总价(元) | `subtotal` | 否 | +| 税费(元) | `taxAmount` | 否 | +| 备注 | `remark` | **是** | +| 操作 | 删除 | — | + +**约束**:无「添加产品」按钮;至少保留 1 行产品方可提交(`products.length >= 1`)。 + +### 5. 备注 + +计划级 `remark`,textarea 整行。 + +--- + +## 提交流程 + +```mermaid +flowchart TD + A[用户点击创建] --> B{表单校验} + B -->|失败| Z[滚动到首个错误] + B -->|通过| C{contractId 已选?} + C -->|否| Z2[提示选择合同] + C -->|是| D{vehicleId 已填?} + D -->|否| E[POST 创建计划草稿] + D -->|是| F[POST 创建计划 + 运输] + E --> G[follow_status=draft transport_status=pending] + F --> H[创建 pl_transport + pl_plan_transport] + H --> I[plan.transport_status=arranged] + F --> J[plan.freight_amount 写入汇总] +``` + +### API 设计 + +**方案(推荐)**:新增 `POST /transport/plan/create-full`(或扩展 `PlanCreate` 增加可选 `transport` 块),**单事务**: + +```typescript +interface PlanCreateFullBody { + // 与 PlanCreate 对齐 + 扩展产品字段 + contractId: string // 必填 + planDate: string + belongsCompany: string + // ... 合同冗余字段、取货/目的地 6 字段 + products: PlanProductCreateRow[] + remark?: string + transport?: { + vehicleId: string + driverId?: string // 可选,默认车辆默认司机 + carrierId?: string + distanceKm?: number + pickupAddress?: string // 同步 start_point + destinationAddress?: string // 同步 end_point + freightType: 'by_weight' | 'by_trip' + transportQty?: number // 按重量;缺省后端用产品合计 + freightPrice?: number + freightAmount?: number // 按趟或 override + hasInvoice?: number + remark?: string + } +} +``` + +**分支**: + +- `transport` 缺省或 `vehicleId` 空 → 仅 `PlPlan` + `PlPlanProduct` +- `transport.vehicleId` 有值 → 复用 `arrange_transport` 核心逻辑(抽 `plan_service.create_transport_for_plan()`),设置 `transport_status=arranged` + +**替代**:前端两次调用 `planApi.create` + `transportApi.arrange` — **不推荐**(中间失败难回滚)。 + +--- + +## 数据模型变更(DDL) + +### `pl_plan` 增量 + +| 字段 | 类型 | 说明 | +|------|------|------| +| `pickup_address` | varchar(500) | 取货地址 | +| `pickup_time` | datetime | 取货时间 | +| `pickup_notes` | varchar(500) | 取货注意事项 | +| `destination_address` | varchar(500) | 目的地地址 | +| `delivery_time` | datetime | 送达时间 | +| `destination_notes` | varchar(500) | 目的地注意事项 | + +SQL 文件:`docs/sql/20260620_pl_plan_logistics_fields.sql` + +### `pl_plan_product` 增量 + +| 字段 | 类型 | 说明 | +|------|------|------| +| `category_name` | varchar(200) | 产品分类 | +| `package_spec` | varchar(200) | 包装规格 | +| `delivery_method` | varchar(50) | 送货方式 | +| `quantity` | decimal(15,3) | 合同数量(与 estimate 字段并存;写入时同步 estimate) | +| `tax_price` | decimal(15,4) | 含税单价 | +| `tax_amount` | decimal(15,2) | 税费 | +| `tax_subtotal` | decimal(15,2) | 含税总价 | + +> 现有 `inbound/outbound_*` 字段保留;创建时按 `plan_type` 将 `quantity` 写入对应 `*_estimate_qty`。 + +### `pl_transport` 增量(可选) + +| 字段 | 类型 | 说明 | +|------|------|------| +| `transport_qty` | decimal(15,3) | 本次运输量(按重量计费基数) | + +--- + +## 前端组件 + +| 路径 | 职责 | +|------|------| +| `components/business/pl-plan-form-dialog/index.vue` | 弹窗壳、校验、提交 | +| `components/business/pl-plan-form-dialog/PlPlanFormBasicSection.vue` | 基础信息 | +| `components/business/pl-plan-form-dialog/PlPlanFormContractSection.vue` | 合同选择与只读展示 | +| `components/business/pl-plan-form-dialog/PlPlanFormTransportSection.vue` | 运输 + 运费 + 车辆详情 | +| `components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue` | 产品表 | +| `components/business/contract-selector/index.vue` | 合同选择弹窗 | +| `composables/usePlFreightCalc.ts` | 运输量/运费计算(`arrange.vue` 同步改造) | +| `composables/usePlContractToPlan.ts` | 合同 VO → 计划表单 + 产品行映射 | + +**UI 规范**: + +- `dialog-form-layout`、`align-center`、`modal-class="order-module-dialog-mask"`、`backdrop-filter: none` +- 按钮带 `@element-plus/icons-vue` 图标 +- 产品送货方式/单据类型用 `el-tag` + +--- + +## 合同产品 → 计划产品映射 + +| 合同 `ContractProductForm` | 计划 `PlPlanProduct` / 前端 row | +|----------------------------|--------------------------------| +| productId | productId | +| productName | productName | +| productModel | model | +| categoryName | categoryName | +| unit | unit | +| quantity | quantity + inbound/outboundEstimateQty | +| packageSpec | packageSpec | +| deliveryMethod | deliveryMethod | +| price | taxPrice | +| subtotal | taxSubtotal | +| taxAmount | taxAmount | +| remark | remark | + +--- + +## 校验规则 + +| 规则 | 说明 | +|------|------| +| V1 | 必选合同 | +| V2 | 产品至少 1 行 | +| V3 | 未选车牌:不校验运输/运费 | +| V4 | 已选车牌:`vehicleId` 有效;若车辆有司机则 `driverId` 必填或自动默认 | +| V5 | `has_freight=1` 且 `by_weight`:运输量 > 0,单价 > 0 | +| V6 | `has_freight=1` 且 `by_trip`:运费金额 > 0 | +| V7 | 易制毒/易制爆产品创建运输时:沿用 arrange 购买证/运输证校验 | + +--- + +## 测试要点 + +1. 仅选合同 + 产品 → 创建成功,列表 `transport_status=待安排` +2. 选合同 + 车牌 + 按重量运费 → 计划 `已安排`,存在 `pl_transport` 关联 +3. 修改运输量 → 运费重算;再手工改运费 → 提交值以 override 为准 +4. 删产品行 → 运输量默认值更新(或提示重算) +5. 切换按趟/按重量 → 字段显隐正确 +6. 字段一致性脚本 `check_field_consistency.py` 通过 + +--- + +## 实施顺序建议 + +1. DDL + Model + Schema(plan 物流字段、plan_product 扩展、transport_qty) +2. 后端 `create-full` + 抽取 `create_transport_for_plan` +3. `ContractSelector` + `usePlContractToPlan` +4. 弹窗 5 区域拆分与 `usePlFreightCalc` +5. `arrange.vue` 复用 composable(可选同 PR) +6. 联调 + 字段一致性检查 + +--- + +**文档结束 — 请评审后进入 implementation plan(`writing-plans`)。** diff --git a/docs/superpowers/specs/2026-06-20-web-admin-portal-layout-design.md b/docs/superpowers/specs/2026-06-20-web-admin-portal-layout-design.md new file mode 100644 index 000000000..15b380038 --- /dev/null +++ b/docs/superpowers/specs/2026-06-20-web-admin-portal-layout-design.md @@ -0,0 +1,285 @@ +# web-admin 门户化布局改造 — 设计文档 + +> **日期**: 2026-06-20 +> **状态**: 已实现(2026-06-20) +> **范围**: `web-admin` 管理端框架(布局 + 菜单展示 + 权限联动) +> **UI 规范**: `docs/web-admin-ui-spec-fresh-mint.md`(主色 `#10b981`、Fresh Mint Token) + +## 目标 + +将 web-admin 从「左侧全量菜单 + 顶栏工具条」改为 **一体化门户布局**: + +1. 顶栏展示 Logo、「一体化门户」、6 个一级模块卡片(icon 上 / 名称下),选中态绿底白字。 +2. 下方分左右:左侧为当前模块的二/三级菜单;右侧为 WorkTab + 内容区。 +3. 移除顶栏的菜单折叠、面包屑、刷新按钮;移除【控制台】一级菜单。 +4. 一级 / 二级 / 三级菜单仍按角色与 `menuCode` 权限过滤显示。 + +--- + +## 已确认决策 + +| # | 决策 | 说明 | +|---|------|------| +| D1 | **实现方式** | 新增 `MenuTypeEnum.PORTAL` 专用布局模式(方案 A),不魔改 TOP_LEFT / DUAL_MENU | +| D2 | **权限边界(0/1 模块)** | **始终保留顶栏卡片区域**:0 个可见模块时展示「暂无可用模块」空态;1 个模块时仍展示 1 张卡片 | +| D3 | **一级菜单清单** | CRM 管理、报销管理、地磅管理、运输管理、工作流管理、系统管理(共 6 个,不含控制台) | +| D4 | **一级展示顺序** | CRM → 报销 → 地磅 → 运输 → 工作流 → 系统(前端常量排序,不依赖路由文件注册顺序) | +| D5 | **控制台** | 从侧栏与顶栏卡片中移除;默认首页改为第一个有权限模块的首个可访问叶子页 | +| D6 | **顶栏右侧** | 保留用户菜单;全屏按钮保留;折叠 / 面包屑 / 刷新移除 | +| D7 | **侧栏** | 去掉 Logo 与「一体化门户」品牌区;去掉顶栏式折叠 icon;侧栏本身不新增折叠按钮(固定展开,宽度沿用 `menuOpenWidth` 默认 230px) | +| D8 | **OpenSpec 侧栏 icon** | 一级卡片有 icon;左侧二/三级菜单仍遵守「仅一级有 icon、更深层仅文字」(`SidebarSubmenu` 现有 `level === 0` 规则) | + +--- + +## 非目标(本期不做) + +- 设置面板中保留/切换 Left、Top、Mixed、Dual 等旧布局(PORTAL 为唯一产品布局,设置项可隐藏或锁定) +- 小程序端布局改造 +- 权限后端 API 改造(沿用 `MenuProcessor` + `fetchGetMenuCodes`) +- 移动端完整适配(本期仅保证 `<800px` 不严重错位;横滑卡片 + 抽屉侧栏可作为 follow-up) +- Demo 菜单独立提升为一级模块 + +--- + +## 一、目标布局 + +``` +┌────────────────────────────────────────────────────────────────────────┐ +│ [Logo] 一体化门户 [CRM] [报销] [地磅] [运输] [工作流] [系统] [用户] │ ← ArtPortalHeader(全宽) +│ ↑ 卡片:icon 上 / 名称下;选中 #10b981 底 + 白字 │ +├──────────────┬─────────────────────────────────────────────────────────┤ +│ 二级 / 三级 │ ArtWorkTab(标签页) │ +│ 菜单树 ├─────────────────────────────────────────────────────────┤ +│ ArtPortal │ ArtPageContent(业务页面) │ +│ Sidebar │ │ +└──────────────┴─────────────────────────────────────────────────────────┘ +``` + +**DOM 结构(`views/index/index.vue`)** + +``` +.app-layout-portal +├── #app-portal-header → ArtPortalHeader +└── #app-portal-body → flex row + ├── #app-sidebar → ArtPortalSidebar(改造 art-sidebar-menu) + └── #app-workspace → flex column + ├── #app-worktab → ArtWorkTab(从 art-header-bar 迁出) + └── #app-content → ArtPageContent +``` + +--- + +## 二、一级模块卡片(ArtPortalTopNav) + +### 2.1 数据来源 + +- 输入:`menuStore.menuList` 经 **门户一级过滤器** 处理后的列表。 +- 过滤器职责: + 1. 排除控制台(`path === '/dashboard'` 或 `meta.title === '控制台'`)。 + 2. 排除 `meta.isHide === true` 的项。 + 3. 按 D4 常量顺序排序。 + 4. 若项无可见子节点且自身不可导航 → 不渲染卡片(与 `MenuProcessor.filterEmptyMenus` 结果一致)。 + +### 2.2 卡片 UI + +| 属性 | 值 | +|------|-----| +| 布局 | 纵向 flex,居中;icon 在上(20–24px),标题在下(12–13px) | +| 间距 | 卡片之间 `gap: 8–12px`;卡片内 padding 约 `8px 12px` | +| 圆角 | `8px`(与规范按钮/输入圆角一致) | +| 默认 | 透明底;icon/文字 `--text` / `--text-muted` | +| 选中 | `background: var(--primary)`;icon 与文字 `#fff` | +| 激活判定 | 复用 `ArtMixedMenu.isMenuItemActive`:当前路由(或 `meta.activePath`)落在该模块子树内 | + +### 2.3 交互 + +- 点击卡片:`router.push(module.redirect || firstAccessibleChildPath(module))`。 +- 若当前路由已属于该模块:仅更新选中态,不强制跳转。 +- **0 个可见模块**:顶栏卡片区展示 muted 文案「暂无可用模块」(不隐藏顶栏)。 +- **1 个可见模块**:仍展示 1 张卡片(D2)。 + +### 2.4 一级模块与路由前缀映射 + +| 卡片名称 | 路由 path 前缀 | 路由模块 | +|----------|----------------|----------| +| CRM 管理 | `/crm` | `sqxp.ts` | +| 报销管理 | `/bx` | `sqxp.ts` | +| 地磅管理 | `/db` | `sqxp.ts` | +| 运输管理 | `/pl` | `pl.ts` | +| 工作流管理 | `/workflow` | `sqxp.ts` | +| 系统管理 | `/system` | `sqxp.ts` | + +--- + +## 三、左侧菜单(ArtPortalSidebar) + +### 3.1 渲染范围 + +- 仅渲染 **当前激活一级模块** 的 `children`(二/三级)。 +- 激活模块解析:`const top = '/' + route.path.split('/')[1]`,在过滤后的一级列表中匹配。 +- iframe 路由:沿用 `art-sidebar-menu` 现有 `findIframeMenuList` 逻辑。 + +### 3.2 移除内容 + +- 侧栏 header 区(Logo + 系统名)。 +- 双列菜单 / 折叠按钮 / `menu-model` 遮罩(PORTAL 模式不启用 `DUAL_MENU` / `LEFT` 分支)。 +- 顶栏菜单折叠联动(`visibleMenu` / `menuOpen` 切换对 PORTAL 无 UI 入口;`menuOpen` 保持 `true`)。 + +### 3.3 子菜单组件 + +- 继续复用 `SidebarSubmenu` + `filterSidebarRoutes`。 +- `ElMenu` 默认展开:保留现有 `syncExpandedMenus` / `defaultOpenedMenus` 逻辑。 + +--- + +## 四、顶栏(ArtPortalHeader) + +### 4.1 左侧 + +- `ArtLogo`(点击跳转默认首页,见 §五)。 +- 文案「一体化门户」(`AppConfig.systemInfo.name`,已为该值)。 + +### 4.2 中间 + +- `ArtPortalTopNav`(flex-1,卡片可横向滚动;模块多时可加 `ElScrollbar`)。 + +### 4.3 右侧 + +- 全屏按钮(可选保留)。 +- `ArtUserMenu`。 +- **不渲染**:折叠、刷新、面包屑、快速入口、通知、语言、主题切换(与现 header 隐藏项一致)。 + +### 4.4 WorkTab 迁移 + +- 从 `art-header-bar/index.vue` 移除 ``。 +- 挂载到 `#app-workspace` 顶部(`ArtWorkTab` 组件本身不改业务逻辑)。 +- 样式:`worktab-strip` 的 `mb-3` 与 workspace padding 对齐 Fresh Mint 内容区 rhythm。 + +--- + +## 五、菜单数据与权限 + +### 5.1 现有链路(保持不变) + +``` +beforeEach → MenuProcessor.getMenuList() + → filterMenuByRoles / filterMenuByCodes + → filterEmptyMenus + → menuStore.setMenuList + → RouteRegistry.register +``` + +### 5.2 前端增强 + +| 位置 | 增强 | +|------|------| +| `MenuProcessor.processFrontendMenu` | 过滤掉 Dashboard / 控制台节点 | +| 新建 `utils/router/portal-menu.ts` | `PORTAL_TOP_MODULE_ORDER`、`filterPortalTopModules()`、`resolveActivePortalModule()`、`getFirstAccessiblePath()` | +| `menuStore.setMenuList` | 设置 `homePath` 时跳过 `/dashboard`,使用 `getFirstSecondLevelMenuPath`(已有) | + +### 5.3 三级权限行为 + +| 层级 | 机制 | +|------|------| +| 一级卡片 | `MenuProcessor` 输出 + `filterPortalTopModules`;`filterMenuByCodes` level=1 保留「有可见子节点」的父级 | +| 二级 | `filterSidebarRoutes` | +| 三级 | `SidebarSubmenu` 递归 + `filterSidebarRoutes` | + +### 5.4 后端菜单(backend 模式) + +- SQL 隐藏或删除 Dashboard 对应 `sys_menu` 记录(与前端路由同步)。 +- 确认 6 个一级菜单在 `sys_menu` 中 `parent_id` 指向门户 Web 根节点;运输管理已更名见 `docs/sql/20260620_pl_menu_rename_hide.sql`。 +- 新增迁移脚本:`docs/sql/20260620_portal_hide_dashboard.sql`(建议)。 + +--- + +## 六、配置与枚举 + +| 文件 | 变更 | +|------|------| +| `enums/appEnum.ts` | 新增 `MenuTypeEnum.PORTAL = 'portal'` | +| `config/setting.ts` | 默认 `menuType: MenuTypeEnum.PORTAL`;`showMenuButton/showRefreshButton/showCrumbs: false` | +| `config/modules/headerBar.ts` | `menuButton/refreshButton/breadcrumb.enabled: false` | +| `store/modules/setting.ts` | 支持 PORTAL 分支(若 layout 判断分散在各组件,统一用 `isPortalLayout` computed) | +| `views/index/index.vue` | PORTAL 时使用新 DOM 结构;旧 LEFT 结构可保留供模板升级对比或后续删除 | + +--- + +## 七、路由与首页 + +### 7.1 控制台处理 + +- `sqxp.ts`:Dashboard 路由设 `meta.isHide: true` 或整段注释/删除(与 SQL 同步)。 +- 登录后默认跳转:第一个有权限模块的首个叶子页(如 `/crm/...`)。 + +### 7.2 路由顺序 + +- `routeModules` 合并顺序不影响 UI(由 `PORTAL_TOP_MODULE_ORDER` 控制)。 +- 文档注释更新:`sqxp.ts` 头部说明去掉「控制台」。 + +--- + +## 八、样式要点 + +- 顶栏高度:建议 `64–72px`(略高于现 `h-15` 以容纳卡片)。 +- 顶栏背景:`var(--default-bg-color)` / 白底 + 底部分割线 `var(--art-card-border)`。 +- 一级卡片选中色:`var(--primary)` `#10b981`,**勿**使用小程序色 `#0a9f6d`。 +- 下方 body:`height: calc(100vh - 顶栏高度)`;workspace 内容区 padding 沿用 `--mint-content-padding`。 +- 侧栏宽度:230px(`menuOpenWidth` 默认值)。 + +--- + +## 九、测试计划 + +| 场景 | 预期 | +|------|------| +| super_admin | 6 张卡片 + 对应侧栏全量 | +| admin 仅有 bx 权限 | 顶栏仅 1 张「报销管理」卡片;侧栏仅 bx 子菜单 | +| admin 无任何业务 menuCode | 顶栏卡片区显示「暂无可用模块」 | +| 点击 CRM 卡片 | 路由进入 CRM 首个可访问页;卡片选中;侧栏切换为 CRM 树 | +| 从 CRM 页内跳转 bx 页 | 顶栏选中态自动切到报销 | +| 直接 URL 访问 `/pl/plan` | 运输卡片选中;侧栏为 pl 子树 | +| 控制台 `/dashboard` | 不可从菜单进入;直接访问按路由守卫处理(404 或重定向首页) | +| WorkTab | 开/关/切换标签正常;位置在内容区上方 | +| 侧栏二/三级 | 无 icon,仅文字(OpenSpec) | + +--- + +## 十、影响文件清单 + +**新建** + +- `components/core/layouts/art-portal-header/index.vue` +- `components/core/layouts/art-portal-top-nav/index.vue` +- `utils/router/portal-menu.ts` +- `docs/sql/20260620_portal_hide_dashboard.sql`(建议) + +**修改** + +- `views/index/index.vue`、`views/index/style.scss` +- `components/core/layouts/art-menus/art-sidebar-menu/index.vue`(PORTAL 分支) +- `components/core/layouts/art-header-bar/index.vue`(移除 WorkTab;或 PORTAL 下不再使用此组件) +- `enums/appEnum.ts`、`config/setting.ts`、`config/modules/headerBar.ts` +- `router/core/MenuProcessor.ts` +- `router/modules/sqxp.ts` + +**可选** + +- `components/core/layouts/art-settings-panel`:隐藏菜单布局切换或锁定 PORTAL + +--- + +## 十一、风险 + +1. **WorkTab 样式错位**:迁移后需目视检查 tab-card / tab-google 两种 `tabStyle`。 +2. **跨模块 deep link**:书签直达子页时,顶栏选中态依赖 `isMenuItemActive`,需覆盖 `meta.activePath`。 +3. **模板升级**:Art Design Pro 上游更新 layout 时,PORTAL 为独立分支,合并冲突集中在 `index.vue`。 +4. **窄屏**:6 卡片可能溢出,顶栏需横向滚动;侧栏 `<800px` 现有 fixed 策略待 follow-up。 + +--- + +## 十二、后续(非本期) + +- 移动端:顶栏卡片横滑 + 侧栏抽屉。 +- 设置面板清理旧 layout 选项。 +- OpenSpec `ui-conventions` 补充「门户布局」章节(若需长期规范)。 diff --git a/docs/web-admin-ui-spec-fresh-mint.md b/docs/web-admin-ui-spec-fresh-mint.md index d4ce3b470..aab614bc3 100644 --- a/docs/web-admin-ui-spec-fresh-mint.md +++ b/docs/web-admin-ui-spec-fresh-mint.md @@ -501,8 +501,9 @@ - **`.view-section`**:`padding: 18px 22px`,下边框;**最后一个**无底边框 - **`h3`**:`13px`,`700`,`var(--text-muted)`,`letter-spacing: 0.06em`,`margin: 0 0 14px` -- **`.view-kv-grid`**:`grid`,两列,`gap: 12px 28px`;窄屏单列 -- **`.view-kv`**:`grid-template-columns: 96px 1fr`,`gap: 8px 12px`,`13px`;**dt** muted **500**;**dd** 主色,`word-break: break-word` +- **`.view-kv-grid`**:`grid`,默认 **四列**(`1040px` 弹窗),`gap: 12px 18px`;窄屏逐级降为 3 / 2 / 1 列 +- **`.view-kv`**:**上下堆叠**(label 上、value 下),`13px`;**dt** 11px muted;**dd** 600 字重,`word-break: break-word` +- **跨列**:短值占 1 列(**4 个/行**);长值(`span: true` / 自动检测 ≥17 字或路径 ` / `)占 **2 列**(**2 个/行**);超长(≥80 字或 `span: 'full'`)**整行** ### 9.6 Bento / 卡片 / 时间轴 / 图集 / 路线条 diff --git a/docs/山峡化工一体化门户-需求分析文档.md b/docs/山峡化工一体化门户-需求分析文档.md deleted file mode 100644 index cf74dba1f..000000000 --- a/docs/山峡化工一体化门户-需求分析文档.md +++ /dev/null @@ -1,852 +0,0 @@ -# 山峡化工一体化门户 — 需求分析文档 - -> **版本**:v1.1(按新版方法论重新自审) -> **日期**:2026-05-09 -> **分析方法**:模式二 · 标准分析(§6 需求分析助手方法论 v2026-05-09) -> **依据文件**:`plan/计划需求.md`、`plan/vehicle_management.sql`、`plan/sx.sql` -> **状态**:✅ 需求基线已确认,v1.1 按新版方法论完成完备性自审,后续变更走修订记录 - ---- - -## 修订记录 - -| 版本 | 日期 | 修订说明 | -|------|------|----------| -| v0.1 | 2026-05-08 | 初稿:基于 `plan/计划需求.md` 完成分类、拆解、依赖标注与歧义识别 | -| v0.2 | 2026-05-08 | 第二轮澄清:①单据类别拆为「归属公司 × 单据类型」两维度;②按单据类型明确跟进状态流转图;③新增运输安排状态、归档状态;④确认系统整体融合策略;⑤入库/出库数量确认为产品级;⑥库存管理简化为基本功能 | -| v0.3 | 2026-05-08 | 第三轮澄清:①计划专员A/B/C确认为不同角色,统一权限体系;②后端全新Python开发,已有系统作为参考重写;③计划与运输确认三种场景均存在(1:1/1:N/N:1);④工作流选型推荐SpiffWorkflow+SpiffArena | -| v0.4 | 2026-05-08 | 第四轮澄清(全部关闭):①运输结算审核按工作流配置决定;②盘存统计细化(新增§4.9);③直销单与库存无关;④完成状态与归档自动同步;⑤"等客户通知/确认"合并为"等客户确认";⑥供应商/目的地下拉选自客户表(含山峡/云栋);⑦同步方式=系统消息+复制文本微信发送;⑧通知信息模板生成后不可在系统中编辑;⑨运输编号格式`SXYS`+6位序列号 | -| v0.5 | 2026-05-08 | 第五轮补充:①移动端UI风格未定会阻塞开发,由其他助手后续确定;②地磅系统在统一改造范围内,用Python重写;③二维码有效期可设置,司机二维码无需登录,现场人员二维码需登录+权限验证;④**工作流选型修订**:原推荐SpiffWorkflow改为「前端Workflow-Vue3钉钉设计器 + 后端自建轻量审批引擎」 | -| **v1.0** | **2026-05-08** | **需求基线发布**:所有开放问题已澄清(24条),业务规则39条,跟进状态流转图3套,工作流选型已确定,盘存统计已细化。经干系人确认,升级为需求基线。后续变更走修订记录。 | -| **v1.1** | **2026-05-09** | **按新版需求分析助手方法论重新自审**:①新增 BR-40(SQL 模型保持稳定)、BR-41(运输情况总览)两条业务规则;②新增 IN-13 运输情况总览范围项、US-17 用户故事;③重构 §6.4 非功能需求(NFR-01 至 NFR-08 增强描述,新增 NFR-08 统一安全约束,补充性能维度缺失说明);④替换 §9 为 §7.0 交付前自审表 A1–A10 + §3.5 完备性评分表 + 输入材料功能点映射表(42 条);⑤更新 §10 门控自检为 §7.2 标准模式(含 S5 完备性门控项) | - ---- - -## 1. 需求摘要 - -### 1.1 背景 - -安庆山峡化工有限公司已建设 CRM 系统(线索/客户/商机/报价单/合同/产品管理)和地磅系统(Web + 移动端 + 后端)。现需建设**统一的计划管理系统**,将 CRM 合同与后续的运输、地磅、库存等环节串联,形成完整的业务闭环。 - -### 1.2 目标 - -1. 建设统一系统,涵盖 CRM、计划管理、地磅、报销四大业务模块,融合为一体 -2. 计划管理模块包括:计划管理、运输公司管理、库存管理、运输管理等子模块 -3. 系统包括 Web 端和移动端 -4. 统一管控:账号密码、菜单权限、数据权限、工作流、基础数据(客户数据、产品数据、字典数据等) - -### 1.3 名词与缩略语 - -| 名词 | 含义 | -|------|------| -| 计划 | 从 CRM 合同发起的运输/出入库执行单据,编号格式 `SXDDHYYYYMMDD######` | -| 调价函 | 框架合同的价格调整记录,每版留有历史 | -| 购买证 / 运输证 | 易制毒/易制爆产品的法定凭证 | -| 地磅单 | 待入库/待出库单据自动生成的过磅记录 | -| 运输结算单 | 多选运输单合并生成的费用结算单据 | -| 框架合同 | CRM 系统中的合同类型,商品价格可通过调价函调整 | -| 直销单 | 山峡直接从供应商拿货送到目的地,不经过仓库;供应商和目的地均不是安庆山峡/安徽云栋 | -| 入库单 | 货物需要进入安庆山峡或安徽云栋仓库的单据(目的地匹配) | -| 出库单 | 货物从安庆山峡或安徽云栋仓库发出的单据(供应商匹配) | -| 归属公司 | 签署订单的公司主体:安庆市山峡化工有限公司 / 安徽云栋化工有限公司(同一老板的两个公司) | -| 安庆山峡 | 安庆市山峡化工有限公司 | -| 安徽云栋 | 安徽云栋化工有限公司 | - -### 1.4 系统现状 - -| 子系统 | 技术栈 | 当前状态 | 融合策略 | -|--------|--------|----------|----------| -| CRM 系统 | Java 后端(RuoYi-Vue-Plus)+ Vue 3 前端 | 生产运行中 | **整体融合**,参考已有代码用 Python 重写 | -| CRM Python 后端 | Python FastAPI | 已开发未测试 | 作为参考,不作为新系统基础 | -| 地磅系统 | 独立 Web(art-design-pro)+ 移动 H5 + 后端 | 已运行 | **整体融合**,参考已有代码用 Python 重写 | -| 报销系统(bx) | Python FastAPI + Vue 3 + Vant 4 移动端 | 已有 | **整体融合**,参考已有代码用 Python 重写 | -| 新系统 | 待建设 | — | 统一平台,所有模块融合 | - ---- - -## 2. 范围说明 - -### 2.1 范围内 - -| 编号 | 范围项 | -|------|--------| -| IN-01 | 计划管理模块的完整业务流程(从合同发起 → 运输 → 地磅 → 核对 → 归档) | -| IN-02 | 自有车辆信息维护 | -| IN-03 | 运输公司及运输公司车辆信息维护 | -| IN-04 | 运输信息管理 | -| IN-05 | 运输结算管理 | -| IN-06 | 盘存统计分析 | -| IN-07 | CRM 合同模块改造(调价函功能、价格版本历史) | -| IN-08 | 地磅系统关联改造(待入库/待出库自动生成地磅单) | -| IN-09 | 产品主数据增加易制毒/易制爆属性配置 | -| IN-10 | 基础模块:用户管理、角色管理、菜单管理(含 Web 端与移动端菜单分离)、菜单权限管理、数据权限管理、字典管理、产品管理、车辆管理 | -| IN-11 | 库存管理(简化版:基本的库存信息维护与查询) | -| IN-12 | 统一系统建设:CRM + 计划 + 地磅 + 报销融合为一体 | -| IN-13 | 运输情况总览(历史运输记录汇总视图) | - -### 2.2 范围外 - -| 编号 | 排除项 | 说明 | -|------|--------|------| -| OUT-01 | 移动端 UI 框架选型与设计风格 | 未定,**会阻塞移动端开发**,由其他助手后续确定 | -| OUT-02 | 数据迁移方案 | 不在需求分析角色范围内 | -| OUT-03 | 分期路线图(一期/二期划分) | 不在需求分析角色范围内 | -| OUT-04 | 测试计划与测试用例 | 不在需求分析角色范围内 | -| OUT-05 | 部署实施与运维 | 不在需求分析角色范围内 | - ---- - -## 3. 干系人与角色 - -| 角色 | 职责 | 对应系统 | -|------|------|----------| -| 计划专员 A | 从合同发起计划、安排运输、复制二维码下发给司机/现场人员 | Web 端 | -| 计划专员 B | 核对整个订单(运输完成后) | Web 端 | -| 计划专员 C | 确认运输费用、归档 | Web 端 | - -> **已确认**:计划专员 A/B/C 为三个不同角色,通过统一的角色权限体系控制。 - ---- - -## 4. 业务流程与规则 - -### 4.1 计划单据分类(两维度) - -计划单据的类别由以下两个独立维度确定: - -| 维度 | 值 | 说明 | -|------|-----|------| -| **归属公司** | 安庆山峡 / 安徽云栋 | 签署订单的公司主体,同一老板的两个公司 | -| **单据类型** | 直销单 / 入库单 / 出库单 | 决定后续的流程分支 | - -#### 单据类型定义 - -| 单据类型 | 含义 | 判断规则 | -|----------|------|----------| -| 直销单 | 山峡直接从供应商拿货送到目的地,不经过仓库 | 供应商 ≠ 安庆山峡/安徽云栋 **且** 目的地 ≠ 安庆山峡/安徽云栋 | -| 入库单 | 货物需进入仓库 | 目的地 = 安庆山峡 **或** 安徽云栋 | -| 出库单 | 货物从仓库发出 | 供应商 = 安庆山峡 **或** 安徽云栋 | - -### 4.2 跟进状态流转(按单据类型区分) - -跟进状态的流转路径因单据类型不同而不同。以下为三种单据类型各自的完整流转图。 - -> **通用规则**:所有状态在流转过程中均可进入「计划取消」状态。 - -#### 4.2.1 直销单 — 跟进状态流转 - -``` -┌──────────────┐ 客户确认要货 ┌───────────┐ 采购完成 ┌───────────┐ -│ 等客户确认 │ ─────────────→ │ 待采购 │ ────────────→ │ 待发货 │ -└──────────────┘ └───────────┘ └─────┬─────┘ - │ - 发货完成 │ - ▼ - ┌───────────┐ 收货完成 ┌───────────┐ - │ 待收货 │ ────────────→ │ 待归档 │ - └───────────┘ └─────┬─────┘ - │ - 归档操作 │ - ▼ - ┌───────────┐ - │ 归档完成 │ - └───────────┘ - -任意状态 ──────────────────────────────→ 计划取消 -``` - -| 状态 | 触发条件 | 操作人 | -|------|----------|--------| -| 等客户确认 | 计划创建时(初始状态) | 系统 | -| 待采购 | 客户确认要货 | 计划专员 | -| 待发货 | 采购确认完成 | 计划专员 | -| 待收货 | 发货完成 | 司机回传 / 系统自动 | -| 待归档 | 收货完成 | 系统自动 | -| 归档完成 | 归档操作 | 计划专员 B/C | -| 计划取消 | 人工取消 | 计划专员 | - -#### 4.2.2 入库单 — 跟进状态流转 - -``` -┌───────────┐ 采购确认 ┌───────────┐ 发货完成 ┌───────────┐ -│ 待采购 │ ────────────→ │ 待发货 │ ────────────→ │ 待入库 │ -└───────────┘ └───────────┘ └─────┬─────┘ - │ - 现场人员确认入库 │ - ▼ - ┌───────────┐ 系统自动 ┌───────────┐ - │ 已入库 │ ────────────→ │ 待归档 │ - └───────────┘ └─────┬─────┘ - │ - 归档操作 │ - ▼ - ┌───────────┐ - │ 归档完成 │ - └───────────┘ - -任意状态 ──────────────────────────────→ 计划取消 -``` - -| 状态 | 触发条件 | 操作人 | -|------|----------|--------| -| 待采购 | 计划创建时(初始状态) | 系统 | -| 待发货 | 采购确认完成 | 计划专员 | -| 待入库 | 发货完成,目的地=安庆山峡/安徽云栋 | 系统自动判断 | -| 已入库 | 现场工作人员确认、提交地磅单与出入库附件 | 现场工作人员 | -| 待归档 | 入库完成 | 系统自动 | -| 归档完成 | 归档操作 | 计划专员 B/C | -| 计划取消 | 人工取消 | 计划专员 | - -#### 4.2.3 出库单 — 跟进状态流转 - -``` -┌──────────────┐ 客户确认 ┌───────────┐ 出库完成 ┌───────────┐ -│ 等客户确认 │ ──────────→ │ 待出库 │ ──────────→ │ 已出库 │ -└──────────────┘ └───────────┘ └─────┬─────┘ - │ - 发货完成 - │ - ▼ - ┌───────────┐ 收货完成 ┌───────────┐ - │ 待收货 │ ──────────→ │ 已收货 │ - └───────────┘ └─────┬─────└ - │ - 系统自动 │ - ▼ - ┌───────────┐ - │ 待归档 │ - └─────┬─────┘ - │ - 归档操作 │ - ▼ - ┌───────────┐ - │ 归档完成 │ - └───────────┘ - -任意状态 ──────────────────────────────→ 计划取消 -``` - -| 状态 | 触发条件 | 操作人 | -|------|----------|--------| -| 等客户确认 | 计划创建时(初始状态) | 系统 | -| 待出库 | 客户确认要货 | 计划专员 | -| 已出库 | 现场工作人员确认出库、提交地磅单与附件 | 现场工作人员 | -| 待收货 | 出库完成,货物发出 | 系统自动 | -| 已收货 | 收货确认 | 司机回传 / 收货方确认 | -| 待归档 | 收货完成 | 系统自动 | -| 归档完成 | 归档操作 | 计划专员 B/C | -| 计划取消 | 人工取消 | 计划专员 | - -### 4.3 跟进状态完整枚举表(跨单据类型汇总) - -| 序号 | 状态值 | 适用单据类型 | 说明 | -|------|--------|-------------|------| -| 1 | 等客户确认 | 直销单、出库单 | 初始状态,等待客户确认要货 | -| 2 | 待采购 | 直销单、入库单 | 入库单的初始状态,或直销单客户确认后 | -| 3 | 待发货 | 直销单、入库单 | — | -| 4 | 待收货 | 直销单、出库单 | — | -| 5 | 已收货 | 出库单 | — | -| 6 | 待入库 | 入库单 | — | -| 7 | 已入库 | 入库单 | — | -| 8 | 待出库 | 出库单 | — | -| 9 | 已出库 | 出库单 | — | -| 10 | 待归档 | 所有类型 | 归档前置状态 | -| 11 | 归档完成 | 所有类型 | 终态 | -| 12 | 计划取消 | 所有类型 | 终态(可从任意状态进入) | - -### 4.4 其他状态字段 - -#### 4.4.1 运输安排状态(新增) - -| 状态值 | 说明 | -|--------|------| -| 待安排 | 计划创建后的初始值,运输尚未安排 | -| 已安排 | 已完成运输安排(选定车辆、填写运输信息) | - -> 运输安排状态独立于跟进状态,用于标识运输环节的完成情况。 - -#### 4.4.2 归档状态(新增) - -| 状态值 | 说明 | -|--------|------| -| 未归档 | 计划创建后的初始值 | -| 已归档 | 归档操作完成后 | - -> 归档状态与跟进状态中的「归档完成」联动:当跟进状态变为「归档完成」时,归档状态自动变为「已归档」。 - -#### 4.4.3 完成状态 - -| 状态值 | 说明 | -|--------|------| -| 是 | 计划已完成 | -| 否 | 计划未完成 | - -> **已确认**:归档操作完成后,完成状态自动变为"是"。 - -#### 4.4.4 送货方式 - -| 枚举值 | 说明 | -|--------|------| -| 山峡自提 | 自提 | -| 一票制 | 含运输的统一结算 | -| 客户自提 | 客户自行提货 | - -### 4.5 计划管理主流程(全览) - -``` -┌──────────────────────────────────────────────────────────────┐ -│ 第1步:从 CRM 合同发起计划 │ -│ - 选择归属公司(安庆山峡 / 安徽云栋) │ -│ - 选择单据类型(直销单 / 入库单 / 出库单) │ -│ - 选择合同、产品,填写基本信息 │ -│ - 系统生成计划订单编号 │ -│ - 入库/出库数量按产品级别填写 │ -└──────────────────────┬───────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────┐ -│ 第2步:判断产品属性 │ -│ - 产品属性为易制毒/易制爆? │ -│ → 是:必须上传购买证 + 运输证 │ -│ → 否:直接进入下一步 │ -└──────────────────────┬───────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────┐ -│ 第3步:安排运输 │ -│ - 选择自有车辆 或 运输公司车辆 │ -│ - 填写运输信息 │ -│ - 运输安排状态:待安排 → 已安排 │ -│ - 生成二维码,由计划专员 A 复制线下分发给司机/现场人员 │ -└──────────────────────┬───────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────┐ -│ 第4步:跟进状态按单据类型流转(见 4.2 各子流程) │ -│ │ -│ 【直销单】等客户确认→待采购→待发货→待收货→待归档→归档完成 │ -│ 【入库单】待采购→待发货→待入库→已入库→待归档→归档完成 │ -│ 【出库单】等客户确认→待出库→已出库→待收货→已收货→待归档→归档完成│ -│ │ -│ 其中: │ -│ - 入库单/出库单涉及地磅: │ -│ → 待入库/待出库的单据自动生成地磅单 │ -│ → 单据同步给现场工作人员 │ -│ → 现场工作人员确认后提交地磅单和出入库附件 │ -│ - 司机通过扫描二维码回传运输单据、运输数量 │ -└──────────────────────┬───────────────────────────────────────┘ - │ - ▼ -┌──────────────────────────────────────────────────────────────┐ -│ 第5步:核对与归档 │ -│ - 计划专员 B 核对整个订单 │ -│ - 订单是否有运输费用? │ -│ → 是:计划专员 C 确认运输费用后归档 │ -│ → 否:直接归档 │ -│ - 归档状态:未归档 → 已归档 │ -└──────────────────────────────────────────────────────────────┘ -``` - -### 4.6 业务规则编号 - -| 规则编号 | 规则描述 | 类别 | -|----------|----------|------| -| BR-01 | 一个计划可包含多个产品 | 业务需求 | -| BR-02 | 框架合同商品价格可通过调价函调整,每次调整保留版本历史 | 业务需求 | -| BR-03 | 产品属性为易制毒或易制爆时,必须上传购买证和运输证后才能安排运输 | 业务需求 | -| BR-04 | 运输分两种方式:自有车辆、运输公司车辆 | 业务需求 | -| BR-05 | 运输信息生成二维码,由计划专员 A 复制线下分发给司机或现场工作人员;二维码有效期可设置 | 业务需求 | -| BR-06 | 待入库/待出库的单子通过系统消息 + 复制文本微信发送同步给现场工作人员 | 业务需求 | -| BR-07 | 入库单判断:目的地 = 安庆山峡 或 安徽云栋 | 业务需求 | -| BR-08 | 出库单判断:供应商 = 安庆山峡 或 安徽云栋 | 业务需求 | -| BR-09 | 直销单判断:供应商 ≠ 安庆山峡/安徽云栋 且 目的地 ≠ 安庆山峡/安徽云栋;直销单不经过仓库,与库存无关 | 业务需求 | -| BR-10 | 待入库/待出库的单据自动生成地磅单,地磅单信息在计划表中可见 | 业务需求 | -| BR-11 | 地磅单由现场工作人员确认后,提交地磅单单据和出入库单据附件 | 业务需求 | -| BR-12 | 司机通过扫描二维码回传运输单据、运输数量等信息 | 业务需求 | -| BR-13 | 计划专员 B 核对整个订单;若有运输费用则进入费用确认,否则直接归档 | 业务需求 | -| BR-14 | 是否有运输费用在创建计划时勾选确定 | 业务需求 | -| BR-15 | 运输费用由计划专员 C 确认后归档 | 业务需求 | -| BR-16 | 计划编号格式:`SXDDH` + `YYYYMMDD` + 6 位序列号(如 `SXDDH20260101000001`) | 业务需求 | -| BR-17 | 运输编号格式:`SXYS` + 6 位序列号(如 `SXYS000001`),纯序列号无日期 | 业务需求 | -| BR-18 | 入库价默认为合同价格,支持后续修改 | 业务需求 | -| BR-19 | 入库金额 = 入库数 × 入库价 | 业务需求 | -| BR-20 | 出库金额 = 出库数 × 出库价 | 业务需求 | -| BR-21 | 磅差支持负数 | 业务需求 | -| BR-22 | 通知信息按模板生成,系统中不可编辑,用户复制到本地后自行修改 | 业务需求 | -| BR-23 | 产品主数据需增加"是否易制毒"、"是否易制爆"配置项 | 业务需求 | -| BR-24 | 运费计算方式一:运输数量 × 运输单价(计算结果可调整) | 业务需求 | -| BR-25 | 运费计算方式二:按趟次,手动填写 | 业务需求 | -| BR-26 | 运输结算流程:多选运输单 → 生成结算单 → 提交审核 → 审核成功 → 通知对方开票 → 票据上传 → 汇款 → 上传汇款单据 | 业务需求 | -| BR-27 | 运输结算单的审核流程根据工作流配置决定,审核节点和角色由工作流定义 | 业务需求 | -| BR-28 | 运输结算中的"通知对方开票"通过系统消息 + 复制文本微信发送 | 业务需求 | -| BR-29 | 计划表名以 `pl_` 为前缀 | 约束 | -| BR-30 | 归属公司分两个主体:安庆山峡、安徽云栋(同一老板的两个公司) | 业务需求 | -| BR-31 | 安徽云栋的订单同样有直销单、入库单、出库单三种类型,流程一致 | 业务需求 | -| BR-32 | 入库/出库数量按产品级别记录(非计划级别),计划与产品明细分为主从表 | 业务需求 | -| BR-33 | 所有单据类型在任意跟进状态下均可取消 | 业务需求 | -| BR-34 | CRM + 地磅 + 报销系统整体融合为统一系统,不再各自独立运行 | 业务需求 | -| BR-35 | 供应商名称、目的地通过下拉选择,数据来自客户表(客户表包含安庆山峡和安徽云栋) | 业务需求 | -| BR-36 | 归档操作完成后,归档状态自动变"已归档",完成状态自动变"是" | 业务需求 | -| BR-37 | 二维码访问控制:司机扫码无需登录即可回传信息;现场人员扫码需登录,登录后验证权限才可查看和操作 | 业务需求 | -| BR-38 | 二维码有效期可由计划专员在生成时设置 | 业务需求 | -| BR-39 | 地磅系统在统一改造范围内,用 Python 重写,纳入统一系统 | 业务需求 | -| BR-40 | 历史系统(CRM/地磅)的 SQL 数据模型在融合过程中应尽量保持结构稳定,减少变更,以降低数据迁移和测试回归风险 | 约束 | -| BR-41 | 运输结算模块需提供历史运输情况总览功能,汇总展示所有运输单的状态、费用等信息 | 业务需求 | - -### 4.7 计划单据字段 - -#### 4.7.1 计划主表 - -| 字段名 | 说明 | 规则/备注 | -|--------|------|-----------| -| 计划日期 | 发起计划的日期 | — | -| 计划订单编号 | 格式 `SXDDHYYYYMMDD######` | 系统自动生成 | -| 归属公司 | 安庆山峡 / 安徽云栋 | 新增维度 | -| 单据类型 | 直销单 / 入库单 / 出库单 | 决定流程分支 | -| 跟进状态 | 见 4.2 各单据类型的流转图 | 按单据类型不同枚举 | -| 运输安排状态 | 待安排 / 已安排 | 新增字段 | -| 归档状态 | 未归档 / 已归档 | 新增字段 | -| 完成状态 | 是 / 否 | — | -| 供应商名称 | 供应商公司名称 | 下拉选择,数据来自客户表(客户表含安庆山峡、安徽云栋) | -| 目的地 | 公司(目的地)名称 | 下拉选择,数据来自客户表(客户表含安庆山峡、安徽云栋) | -| 送货方式 | 山峡自提 / 一票制 / 客户自提 | 枚举值 | -| 是否有运输费用 | 布尔值 | 创建计划时勾选 | -| 运输编号 | 格式 `SXYS` + 6 位序列号 | 关联运输信息表(中间表,N:N) | -| 车牌号 | — | 关联车辆信息 | -| 运输公司 | — | 关联运输公司信息 | -| 运输单位 | — | — | -| 运输费用 | 单次运输费用 | 按重量或按趟次 | -| 运费合计 | — | — | -| 单据附件 | 上传的各类单据图片/文件 | — | -| 销售合同 | 关联的 CRM 合同 | — | -| 跟进人 | 当前跟进的计划专员 | — | -| 备注 | — | — | -| 通知信息 | 标准模板内容 | 按模板生成,**不可在系统中编辑**;用户复制到本地后自行修改 | -| 创建人 | — | 系统自动 | -| 创建时间 | — | 系统自动 | -| 修改人 | — | 系统自动 | -| 修改时间 | — | 系统自动 | - -#### 4.7.2 计划产品明细表(从表) - -> 计划与产品为 1:N 主从关系,入库/出库数量按产品级别记录。 - -| 字段名 | 说明 | 规则/备注 | -|--------|------|-----------| -| 计划 ID | 关联计划主表 | 外键 | -| 物料编号 | — | 关联产品主数据 | -| 物料名称 | — | 冗余自产品主数据 | -| 产品规格 | — | 冗余自产品主数据 | -| 包装规格 | — | 冗余自产品主数据 | -| 单位 | 吨/个/箱等 | — | -| 入库预估数 | — | 安排时预估 | -| 入库数 | 实际入库数量 | 地磅确认后填入 | -| 入库价 | 默认合同价格,可修改 | BR-17 | -| 入库金额 | 入库数 × 入库价 | 自动计算 | -| 出库预估数 | — | 安排时预估 | -| 出库数 | 实际出库数量 | 地磅确认后填入 | -| 出库单价 | — | — | -| 出库金额 | 出库数 × 出库价 | 自动计算 | -| 磅差 | 支持负数 | BR-20 | -| 是否易制毒 | — | 冗余自产品主数据 | -| 是否易制爆 | — | 冗余自产品主数据 | - -### 4.8 运输信息表字段 - -| 字段名 | 说明 | 规则/备注 | -|--------|------|-----------| -| 运输编号 | 格式 `SXYS` + 6 位序列号(如 `SXYS000001`) | 系统自动生成,纯序列号无日期 | -| 车牌号 | — | 关联车辆信息 | -| 运输公司 | — | 关联运输公司信息 | -| 所属公司 | 运输公司所属的人或公司名称 | — | -| 运输介质 | — | — | -| 运输起点 | — | — | -| 运输终点 | — | — | -| 运输公里数 | — | — | -| 单位 | 吨/趟 | — | -| 运输费用 | — | BR-23/24 | -| 创建人 | — | 系统自动 | -| 是否开票 | — | 布尔值 | -| 备注 | — | — | - -### 4.9 盘存统计分析 - -> 需求原文仅提及"盘存统计分析功能",以下为基于业务场景合理细化的分析内容。 - -#### 4.9.1 统计报表 - -| 报表名称 | 统计维度 | 说明 | -|----------|----------|------| -| **库存台账** | 按产品汇总当前库存量、库存金额 | 实时查询,支持按仓库/归属公司筛选 | -| **出入库明细** | 按时间范围列出所有入库/出库记录 | 可按产品、供应商、目的地、单据类型筛选 | -| **出入库汇总** | 按月/周汇总各产品的入库量、出库量、净变化 | 支持同比/环比对比 | -| **磅差分析** | 按产品/供应商统计磅差率(磅差÷入库数) | 用于监控运输损耗异常 | -| **运输统计** | 按运输公司/车辆统计运输趟次、运费、平均单价 | 用于运输成本分析 | -| **计划执行统计** | 按跟进状态统计各状态的计划数量 | 监控计划执行进度 | -| **产品流向分析** | 按产品统计各供应商/目的地的发货量 | 用于销售分析 | - -#### 4.9.2 统计维度与筛选条件 - -| 维度 | 说明 | -|------|------| -| 时间范围 | 起止日期筛选 | -| 归属公司 | 安庆山峡 / 安徽云栋 | -| 产品 | 按产品或产品类别筛选 | -| 供应商/目的地 | 按客户筛选 | -| 单据类型 | 直销单 / 入库单 / 出库单 | -| 跟进状态 | 按状态筛选 | - -#### 4.9.3 业务规则 - -| 编号 | 规则 | 说明 | -|------|------|------| -| INV-01 | 直销单数据不纳入库存统计 | 直销单不经过仓库,与库存无关 | -| INV-02 | 库存量仅统计入库单(已入库)和出库单(已出库)的已完成数据 | 未完成的单据不计入 | -| INV-03 | 库存金额 = Σ(各产品库存量 × 入库均价) | 加权平均计算 | - ---- - -## 5. 场景 / 用户故事清单 - -| 编号 | 角色 | 目标 | 情境 | -|------|------|------|------| -| US-01 | 计划专员 A | 从 CRM 合同发起一份计划 | 选择归属公司、单据类型、合同,勾选产品,填写计划日期等,系统生成计划编号并按单据类型进入初始跟进状态 | -| US-02 | 计划专员 A | 上传易制毒/易制爆产品的购买证和运输证 | 当计划中的产品属性为易制毒或易制爆时,系统阻止进入运输安排阶段,直到上传证照 | -| US-03 | 计划专员 A | 安排运输并生成二维码 | 选择自有车辆或运输公司车辆,填写运输信息,运输安排状态变为"已安排",系统生成二维码供线下分发 | -| US-04 | 计划专员 A | 查看待入库/待出库单据并同步给现场工作人员 | 系统自动根据单据类型和供应商/目的地判断待入库或待出库状态,同步给现场人员 | -| US-05 | 司机 | 扫描二维码回传运输单据 | 通过移动端扫描运输二维码,上传运输单据照片、填写运输数量 | -| US-06 | 现场工作人员 | 确认并提交地磅单和出入库附件 | 收到待入库/待出库通知,完成过磅后确认地磅单、上传附件,跟进状态流转 | -| US-07 | 计划专员 B | 核对已完成的运输订单 | 核对运输数量、单据等,判断是否有运输费用,触发归档流程 | -| US-08 | 计划专员 C | 确认运输费用并归档 | 对有运输费用的订单进行费用确认,完成后归档 | -| US-09 | 计划专员 | 管理运输结算 | 多选运输单生成结算单,提交审核,跟踪开票和汇款流程 | -| US-10 | 管理员 | 维护自有车辆信息 | 参考 `vehicle_management.sql` 中的车辆信息结构 | -| US-11 | 管理员 | 维护运输公司及运输公司车辆信息 | 维护运输公司基本信息及其名下车辆信息 | -| US-12 | CRM 用户 | 管理框架合同调价函 | 对框架合同发起价格调整,上传调价函,系统保留价格版本历史 | -| US-13 | 管理员 | 配置产品的易制毒/易制爆属性 | 在产品主数据中新增"是否易制毒"、"是否易制爆"字段 | -| US-14 | 计划专员 | 查看盘存统计分析 | 查看库存盘点统计报表 | -| US-15 | 计划专员 | 取消计划 | 在任意跟进状态下取消计划,跟进状态变为"计划取消" | -| US-16 | 管理员 | 维护库存信息(简化版) | 基本的库存信息维护与查询 | -| US-17 | 计划专员 | 查看运输情况总览 | 在运输结算模块中查看所有历史运输记录的汇总视图,了解各运输单的状态、费用、结算进度等 | - ---- - -## 6. 技术需求说明 - -### 6.1 系统架构 - -| 编号 | 需求条目 | 说明 | -|------|----------|------| -| TR-01 | 后端采用 Python 语言框架 | 需求明确 | -| TR-02 | 工作流系统(钉钉式简单审批流) | 前端采用 Workflow-Vue3 钉钉风格设计器,后端自建轻量审批引擎(详见附录 A) | -| TR-03 | Web 端 UI 框架采用 art-design-pro | GitHub: https://github.com/Daymychen/art-design-pro | -| TR-04 | 移动端采用 HBuilderX 创建的框架 `mobile-frontend` | 运行于微信小程序 + H5 | -| TR-05 | 多系统融合统一管控 | 账号密码、菜单权限、数据权限、工作流、基础数据统一管控 | -| TR-06 | 菜单管理需区分 Web 端菜单和移动端菜单 | 基础模块需求 | -| TR-07 | 统一系统建设 | CRM + 计划 + 地磅 + 报销全部融合为一体,不再各自独立运行 | -| TR-08 | 后端全新 Python 开发 | 使用 Python 语言全新开发整套后端,已有系统(CRM/地磅/报销)的前端界面交互和后端接口逻辑作为参考,用新框架重新实现所有业务 | - -### 6.2 集成需求 - -| 编号 | 集成方向 | 关键内容 | 说明 | -|------|----------|----------|------| -| IR-01 | 统一系统内 | 从 CRM 合同读取合同信息、产品信息 | 系统内模块交互 | -| IR-02 | 统一系统内 | 合同模块改造:调价函、价格版本历史 | CRM 模块改造 | -| IR-03 | 统一系统内 | 产品主数据增加易制毒/易制爆属性 | 产品模块改造 | -| IR-04 | 统一系统内 | 待入库/待出库单据自动生成地磅单 | 计划模块 ↔ 地磅模块 | -| IR-05 | 统一系统内 | 统一的用户、角色、权限管理 | 基础模块 | -| IR-06 | Web 端 ↔ 移动端 | 二维码生成、司机扫码回传、现场人员操作 | 双端交互 | - -### 6.3 数据需求 - -| 编号 | 实体/规则 | 说明 | -|------|-----------|------| -| DR-01 | 计划主表(`pl_*` 前缀) | 计划主体信息(见 4.7.1) | -| DR-02 | 计划产品明细表(`pl_*` 前缀) | 按产品级别的数量、金额明细(见 4.7.2),与计划主表 1:N | -| DR-03 | 运输信息表(`pl_*` 前缀) | 运输编号、车辆、费用等信息(见 4.8) | -| DR-04 | 计划与运输关联(中间表) | N:N 关系,三种业务场景均存在:①一个计划一趟运输(1:1);②一个计划多趟运输(1:N,分车装运);③多个计划一趟运输(N:1,拼车) | -| DR-05 | 自有车辆表 | 参考 `vehicle_management.sql` 中的结构设计 | -| DR-06 | 运输公司表 | 运输公司基本信息 | -| DR-07 | 运输公司车辆表 | 关联运输公司,参考 `vehicle_management.sql` | -| DR-08 | 调价函记录表 | 合同价格调整历史,关联合同 | -| DR-09 | 购买证/运输证表 | 易制毒/易制爆产品的法定凭证记录 | -| DR-10 | 运输结算单 | 多运输单合并生成的结算单据 | -| DR-11 | 库存表(简化版) | 基本的库存信息维护 | -| DR-12 | 归属公司 | 客户/供应商主数据中需关联归属公司(安庆山峡/安徽云栋) | - -### 6.4 非功能需求 - -| 编号 | 维度 | 说明 | -|------|------|------| -| NFR-01 | 合规 | 易制毒/易制爆产品的购买证和运输证为法定前置条件,系统必须强制校验后方可流转(合规约束,不可跳过) | -| NFR-02 | 安全 | 二维码分层访问控制:司机端无需登录(开放),现场人员端需登录 + 权限验证(受限) | -| NFR-03 | 安全 | 二维码有效期可设置,过期自动失效,防止长期有效的二维码被滥用 | -| NFR-04 | 可追溯 | 调价函每次调整保留版本历史,支持任意时间点的价格回溯(功能需求 BR-02 的可追溯性补充) | -| NFR-05 | 可追溯 | 运输结算全流程留痕:审核、开票、汇款各环节的操作人、时间、意见均需记录(功能需求 BR-26 的可追溯性补充) | -| NFR-06 | 兼容 | 移动端同时支持微信小程序和 H5 双平台运行 | -| NFR-07 | 约束 | 移动端 UI 风格未定,会阻塞移动端功能开发,需优先确定后才能启动 | -| NFR-08 | 安全 | 统一系统的用户认证与权限控制,涵盖 Web 端和移动端;支持数据权限隔离(归属公司维度:安庆山峡 / 安徽云栋) | - -> **待补充说明**:输入材料 `plan/计划需求.md` 未涉及性能指标(响应时间、并发用户数、吞吐量)、可用性 SLA、数据备份与恢复策略等非功能维度。当前 NFR 以合规、安全、兼容、可追溯为主。性能与可用性指标建议在系统设计阶段由技术团队根据实际部署环境补充。 - ---- - -## 7. 歧义与开放问题 - -> 以下分「已澄清」和「仍开放」两部分。 - -### 7.1 已澄清的问题 - -| 原编号 | 问题 | 澄清结论 | -|--------|------|----------| -| Q-01 | 计划专员A/B/C角色 | **三个不同角色**,通过统一角色权限体系控制 | -| Q-02 | 一个计划多个产品的运输关系 | 运输可能共享也可能独立,即计划与运输为 **N:N** 关系 | -| Q-03 | 通知信息模板生成后是否可编辑 | **不可在系统中编辑**,按模板生成后复制到本地自行修改 | -| Q-04 | 直销单/云栋单的业务含义 | 直销单=不经过仓库的直发;"云栋单"拆为归属公司维度(安庆山峡/安徽云栋),云栋也有直销/入库/出库三种类型 | -| Q-05 | 供应商名称和目的地数据来源 | **下拉选择,数据来自客户表**(客户表包含安庆山峡和安徽云栋) | -| Q-06 | 待入库/待出库同步方式 | **系统消息 + 复制文本微信发送** | -| Q-07 | 运输结算单审核流程 | **按工作流配置决定**,审核节点和角色由工作流定义 | -| Q-08 | 盘存统计分析内容 | 已细化(见 §4.9),含库存台账、出入库明细/汇总、磅差分析、运输统计、计划执行统计、产品流向分析 | -| Q-09 | 库存管理范围 | 简化为基本库存信息维护与查询,无复杂业务流程 | -| Q-10 | 跟进状态流转规则 | 已按单据类型分别定义完整流转图(见 4.2) | -| Q-11 | 入库/出库数量级别 | 按产品级别,计划与产品明细分为主从表(见 4.7.2) | -| Q-12 | 运输编号格式 | `SXYS` + 6 位序列号(如 `SXYS000001`),纯序列号无日期 | -| Q-13 | 云栋单含义 | 已拆解:归属公司=安徽云栋 + 单据类型=直销/入库/出库 | -| Q-14 | 移动端 UI 风格未定 | **会阻塞移动端开发**,由其他助手后续确定 | -| Q-15 | 工作流引擎选型 | **修订**:原推荐 SpiffWorkflow 过重,改为**前端 Workflow-Vue3 钉钉设计器 + 后端自建轻量审批引擎**(详见附录 A) | -| Q-16 | CRM/地磅/报销系统融合策略 | **整体融合**为统一系统,不再各自独立运行 | -| Q-17 | 后端开发策略 | **全新 Python 开发**,已有系统代码作为参考,用新框架重写所有业务 | -| Q-18 | 地磅模块改造范围 | **在统一改造范围内**,用 Python 重写,纳入统一系统 | -| Q-19 | 二维码有效期与访问控制 | **有效期可设置**;司机二维码无需登录,现场人员二维码需登录+权限验证 | -| Q-20 | 运输结算中"通知对方开票"方式 | **系统消息 + 复制文本微信发送** | -| Q-NEW-01 | 完成状态是否与归档同步 | **是**,归档后完成状态自动变为"是" | -| Q-NEW-02 | 计划与运输关系场景 | 三种场景均存在:①1:1 一个计划一趟运输;②1:N 一个计划多趟运输(分车);③N:1 多个计划拼一趟运输 | -| Q-NEW-03 | "等客户通知"与"等客户确认"合并 | **已合并为"等客户确认"**,直销单和出库单共用 | -| Q-NEW-04 | 直销单与库存关系 | **完全无关**,直销单不经过仓库,不纳入库存统计 | - -### 7.2 仍开放的问题 - -> **所有识别的开放问题均已澄清。** 本节留空。若后续需求变更或新问题出现,将在本节追加。 - ---- - -## 8. 依赖关系矩阵 - -``` -依赖方向:→ 表示"依赖于"或"必须在之后" - -CRM 合同存在 → (IN-01) 计划发起 -归属公司配置 → 计划创建(选择归属公司) -单据类型选择 → 跟进状态流转路径(见 4.2) -产品易制毒/易制爆属性 (IN-09) → (BR-03) 证照上传控制 -证照上传 → 运输安排(前置条件) -运输安排状态:待安排 → 已安排 → 二维码生成 -单据类型=入库单/出库单 → 待入库/待出库判断 → 地磅单自动生成 -现场人员确认 → 跟进状态流转(已入库/已出库) -司机扫码回传 → 计划专员 B 核对 -计划专员 B 核对 → 归档 / 运输费用确认 -运输费用确认 → 运输结算 (IN-05) -运输结算审核 → 工作流引擎 (TR-02) -归档操作 → 归档状态变"已归档" + 完成状态变"是" -基础模块 (IN-10) → 所有业务模块 -自有车辆维护 (IN-02) → 运输安排 -运输公司维护 (IN-03) → 运输安排 -计划与运输:N:N 关系 -计划与产品明细:1:N 主从关系 -``` - ---- - -## 9. 交付前自审(§7.0 + §3.5 完备性自审) - -> 以下按新版需求分析助手方法论(§7.0 交付前自审表 + §3.5 完备性评分表)执行自审。 -> 本节为 v1.1 新增,替代原 v1.0 的简单完整性自检。 - -### 9.1 交付前自审表(§7.0 A1–A10) - -| # | 自审项 | 检查方法 | 结果 | 说明 | -|---|--------|----------|------|------| -| A1 | 每条需求有明确主体(角色或系统) | 逐条检查主语 | ✅ 通过 | BR 条目为系统级行为规则,US/TR/IR/DR/NFR 均有明确主体 | -| A2 | 范围外内容已写入「非目标」或等效说明 | 对照输入材料检查覆盖 | ✅ 通过 | §2.2 已列出 OUT-01 至 OUT-05 | -| A3 | 所有输入材料中的功能点均有对应需求条目 | 逐条映射检查 | ✅ 通过 | 原始需求 42 个功能点均已映射至 BR/US/IN 条目(详见 §9.3 映射表) | -| A4 | 需求条目已按 §2 六类标签分类,无"未分类"大块 | 检查分类标注 | ✅ 通过 | BR(业务/约束)、TR(技术)、IR(集成)、DR(数据)、NFR(非功能)六类全覆盖 | -| A5 | 条目间依赖关系已标注,无未解释的循环依赖 | 检查依赖矩阵 | ✅ 通过 | §8 依赖矩阵已覆盖主要依赖链 | -| A6 | 技术需求停留在"要什么",未写成详细设计方案 | 逐条检查表述层级 | ✅ 通过 | TR-01 至 TR-08 均为需求层表述;附录 A 注明为「概念层」 | -| A7 | 歧义已澄清或已标注为假设并注明风险 | 检查澄清记录 | ✅ 通过 | §7.1 共 24 条已澄清问题,§7.2 无开放问题 | -| A8 | 集成/跨模块需求已与仓库事实对齐(若涉及) | 对照 explore 或图谱 | ✅ 通过 | §6.2 集成需求已按统一系统内模块交互描述;参考文件含 SQL 模型 | -| A9 | 非功能需求有可量化指标或分档约束 | 检查表述具体性 | ⚠️ 部分通过 | 安全/合规/兼容类 NFR 已有明确约束(NFR-01 至 NFR-08);性能、可用性等维度在输入材料中未提供具体指标,已标注为待补充(见 §6.4 备注) | -| A10 | 数据需求停留在概念层,未写死实现结构 | 检查数据描述层级 | ✅ 通过 | §6.3 数据需求为概念层描述;§4.7 字段表来自用户明确指定的字段清单,属于需求层 | - -> **A9 说明**:输入材料 `plan/计划需求.md` 未涉及性能指标(响应时间、并发量、可用性 SLA)的表述。当前 NFR 以安全、合规、兼容、可追溯为主。性能与可用性指标建议在系统设计阶段由技术团队补充。此为输入材料限制,非分析遗漏。 - -### 9.2 完备性评分表快照(§3.5) - -| 维度 | 满分条件 | 得分 | 说明 | -|------|----------|------|------| -| 条目完整性 | 每个输入功能点都有对应需求条目 | ✅ | 原始需求 42 个功能点全覆盖,v1.1 补充 BR-40/BR-41、IN-13、US-17 | -| 主体明确性 | 0 无主体条目 | ✅ | 所有条目有明确主体 | -| 分类覆盖 | 涉及的类别全部有条目 | ✅ | 六类标签全覆盖 | -| 依赖标注 | 0 未标注依赖 | ✅ | §8 依赖矩阵完整 | -| 歧义消除 | 0 歧义条目 | ✅ | 24 条已澄清,0 条开放 | -| 技术需求边界 | 0 实现方案级描述 | ✅ | TR 停留在需求层 | - -**完备性分数** = 6/6 × 100% = **100%** - -### 9.3 输入材料功能点映射表 - -> 本表逐条对照 `plan/计划需求.md` 中的功能点与需求文档条目的对应关系,确保无遗漏。 - -| # | 输入功能点 | 对应需求条目 | -|---|-----------|-------------| -| 1 | 从合同发起计划 | US-01、§4.5 Step 1 | -| 2 | 一个计划多个产品 | BR-01 | -| 3 | 框架合同调价函 | BR-02、IN-07 | -| 4 | 易制毒/易制爆需上传证照 | BR-03、BR-23 | -| 5 | 运输分自有/运输公司 | BR-04 | -| 6 | 二维码生成与分发 | BR-05 | -| 7 | 待入库/待出库判断 | BR-07、BR-08 | -| 8 | 地磅单自动生成 | BR-10、IN-08 | -| 9 | 现场人员确认 | BR-11 | -| 10 | 司机扫码回传 | BR-12 | -| 11 | 计划专员 B 核对 | BR-13 | -| 12 | 计划专员 C 确认费用 | BR-15 | -| 13 | 直销单(不经过仓库) | BR-09 | -| 14 | 运输结算流程 | BR-26 | -| 15 | 运费计算方式(重量/趟次) | BR-24、BR-25 | -| 16 | 运输情况总揽 | BR-41(v1.1 新增)、US-17(v1.1 新增) | -| 17 | 盘存统计分析 | §4.9 | -| 18 | 自有车辆维护 | IN-02、US-10 | -| 19 | 运输公司维护 | IN-03、US-11 | -| 20 | 运输信息表 | §4.8 | -| 21 | 计划字段定义 | §4.7 | -| 22 | 计划编号格式 | BR-16 | -| 23 | 运输编号格式 | BR-17 | -| 24 | 单据类别(直销/入库/出库/云栋) | §4.1 | -| 25 | 跟进状态 | §4.2 | -| 26 | 完成状态 | §4.4.3 | -| 27 | 送货方式 | §4.4.4 | -| 28 | 通知信息模板 | BR-22 | -| 29 | 入库价默认合同价格 | BR-18 | -| 30 | 入库/出库金额计算 | BR-19、BR-20 | -| 31 | 磅差 | BR-21 | -| 32 | Web 端 UI 框架 art-design-pro | TR-03 | -| 33 | 移动端框架 mobile-frontend | TR-04 | -| 34 | 后端 Python 框架 | TR-01 | -| 35 | 工作流平台 | TR-02、附录 A | -| 36 | 统一管控(账号/权限/数据/工作流/基础数据) | TR-05 | -| 37 | 菜单分 Web 端 / 移动端 | TR-06 | -| 38 | 基础模块(用户/角色/菜单/权限/字典/产品/车辆) | IN-10 | -| 39 | 表名 pl_ 前缀 | BR-29 | -| 40 | 用户管理复用 CRM | IR-05 | -| 41 | SQL 模型保持稳定(方便迁移和测试) | BR-40(v1.1 新增) | -| 42 | 文档归档至 docs/系统文档 | §11 | - ---- - -## 10. 门控自检(§7.2 标准模式) - -| # | 检查项 | 状态 | 说明 | -|---|--------|------|------| -| S1 | 含 §2 六类标签之一;无「未分类」大块 | ✅ 通过 | 所有条目已标注类别(业务需求/约束/技术需求/集成需求/数据需求/非功能需求) | -| S2 | 编号条目间依赖已标注;无循环依赖未解释 | ✅ 通过 | 依赖矩阵已更新(§8) | -| S3 | 集成/跨模块需求已与现有系统事实对齐 | ✅ 通过 | 已更新为统一系统内的模块交互(§6.2) | -| S4 | 技术需求均为「要什么」表述,未写成详细设计 | ✅ 通过 | 技术需求停留在需求层;附录 A 标注为概念层 | -| S5 | §7.0 自审表 A1–A10 全部通过,完备性 = 100% | ✅ 通过 | A1–A8、A10 通过;A9 部分通过(输入材料未提供性能指标),已标注为待补充。完备性评分 6/6 = 100% | - ---- - -## 11. 文档归档说明 - -- 本文档存放路径:`/Users/zlwu/work/00code/shanxia/docs/系统文档/山峡化工一体化门户-需求分析文档.md` -- **v1.0 需求基线**已于 2026-05-08 经干系人确认发布 -- **v1.1**于 2026-05-09 按新版需求分析助手方法论(§3.5 + §7.0 + §7.2)完成完备性自审与补充 -- 后续需求变更通过修订记录追踪,格式:`| v1.x | 日期 | 变更说明 |` - ---- - -## 附录 A:工作流引擎选型分析(修订版) - -> **v0.5 修订说明**:原推荐 SpiffWorkflow + SpiffArena(完整 BPMN 2.0 引擎),经干系人反馈,实际需求为**钉钉式简单审批流**,非 BPMN 全功能引擎。以下为修订后的选型分析。 - -### A.1 需求特征 - -本系统的工作流场景为简单的多步审批链: - -``` -发起 → 审批人1 → 审批人2 → ... → 通过 / 驳回 -``` - -加条件分支(如金额 > 1万加总经理审批),不需要 BPMN 的网关、事件、子流程、泳道等概念。 - -**核心要求:** -- 可视化拖拽配置,业务管理员自己能操作 -- 审批链路清晰:谁审谁一目了然 -- 支持条件分支、会签/或签 -- 部署轻量,嵌入 FastAPI 应用 - -### A.2 选型结论:前端钉钉式设计器 + 后端自建审批引擎 - -**Python 生态中没有现成的钉钉式审批流全栈方案**,但有成熟的组合策略: - -| 层 | 方案 | 说明 | -|-----|------|------| -| **前端设计器** | [Workflow-Vue3](https://github.com/StavinLi/Workflow-Vue3)(⭐942,MIT) | 钉钉风格审批流设计器,Vue3 + Element Plus,拖拽配置,输出 JSON 树结构 | -| **后端引擎** | **自建轻量审批引擎** | 基于 Python 状态机,解析前端 JSON,驱动审批流转 | - -### A.3 为什么这样选 - -| 方案 | 问题 | -|------|------| -| SpiffWorkflow + SpiffArena | BPMN 引擎,概念复杂,业务人员无法自行配置 | -| Camunda / Temporal | 需独立 Server/集群,部署重 | -| Viewflow | 仅 Django,不兼容 FastAPI | -| 前端设计器 + 后端自建 | ✅ 前端用成熟钉钉组件,后端只需实现简单的状态流转,工作量可控 | - -### A.4 前端设计器:Workflow-Vue3 - -- **GitHub**:https://github.com/StavinLi/Workflow-Vue3 -- **Stars**:942 -- **许可证**:MIT -- **技术栈**:Vue 3 + Element Plus(与 art-design-pro 兼容) -- **功能**: - - 钉钉风格拖拽式审批流设计 - - 支持审批节点、条件分支、抄送 - - 输出 JSON 树结构,后端解析执行 -- **备选**:[AntFlow-Designer](https://github.com/ldhnet/ant-flow-designer)(同类钉钉式设计器) - -### A.5 后端自建审批引擎设计(概念层) - -> 以下为需求层面的描述,非详细设计。 - -后端需要实现的核心能力: - -| 能力 | 说明 | -|------|------| -| 流程定义解析 | 接收前端设计器输出的 JSON,解析为审批链节点 | -| 流程实例驱动 | 根据审批链,依次推进到下一个审批人 | -| 条件分支 | 根据表单字段值(如金额)决定走哪条分支 | -| 审批操作 | 通过/驳回/转审 | -| 待办通知 | 新待办通过系统消息通知审批人 | -| 审批记录 | 全程留痕,记录每个节点的操作人、时间、意见 | - -**核心数据实体(概念层):** - -| 实体 | 说明 | -|------|------| -| 流程定义 | 由前端设计器生成的 JSON 配置,包含审批节点和条件分支 | -| 流程实例 | 一次具体的审批流程运行实例,关联业务单据 | -| 审批任务 | 流程实例中某个审批人的待办任务 | -| 审批记录 | 每个节点的审批结果(通过/驳回/意见/时间) | - -### A.6 与原 CRM 系统 Warm-Flow 的关系 - -原 CRM 系统使用 Java 版 Warm-Flow(dromara 组织),它同时支持经典模式和钉钉模式。新系统的自建审批引擎可参考 Warm-Flow 的数据模型设计思路(7 张核心表),但用 Python 重新实现。 - -### A.7 工作量评估 - -| 模块 | 预估工作量 | 说明 | -|------|-----------|------| -| 前端设计器集成 | 小 | Workflow-Vue3 已有成熟组件,集成即可用 | -| 后端审批引擎 | 中 | 核心 5-7 张表,CRUD + 状态流转逻辑,参考 Warm-Flow | -| 条件分支解析 | 中 | 解析 JSON 条件表达式,需要设计规则引擎 | -| 审批通知集成 | 小 | 复用已有的系统消息机制 | -| **合计** | **中等** | 整体可控,比引入 BPMN 引擎更轻量 | diff --git a/docs/计划需求.md b/docs/计划需求.md deleted file mode 100644 index ca123bc25..000000000 --- a/docs/计划需求.md +++ /dev/null @@ -1,59 +0,0 @@ -# 现状 -- 现shanxia2.0系统已经实现了CRM系统、地磅系统、报销系统的功能 -- shanxia2.0的前端代码工程 `web-admin` -- shanxia2.0的后端代码工程 `backend` -- sql模型 `docs/sql/shanxia2.0.sql` - -# 新需求 - -开发一套运输计划管理模块,计划管理模块包括计划管理、运输公司管理、库存管理、运输管理 - -## 计划管理 - -- 业务过程 - - 第一步:运输计划管理从合同模块开始发起计划。一个计划可以包括多个产品。这里要注意框架合同的商品价格会根据调价函进行调整。所以对于这些框架合同支持调整价格,每次价格调整都要有个调价函并记录好各个版本历史(这里要改造合同模块的功能) - - 第二步:运输计划中产品有易制毒、易制爆的属性,则必须上传购买证和运输证,才可以进行第三步. 系统的产品需要增加两个属性表达当前产品是否为易制毒、易制爆。 - - 第三步:安排运输。运输分两种情况。一种是自有车辆、一种是运输公司的车辆。将信息生成一个二维码,由计划专员A复制线下发给司机或者现场的工作人员(待入库和待出库的单子需要同步给现场的工作人员) - - 第四步:如果是待入库、待出库的单子,就会自动生成地磅单,地磅单信息也会在计划表中看见。待入库、待出库的单子,就是看看供应商名称或者目的地是不是“安庆市山峡化工有限公司”或者“安徽云栋化工有限公司”。如果目的地是“安庆市山峡化工有限公司”或者“安徽云栋化工有限公司” 就是 待入库、如果供应商是“安庆市山峡化工有限公司”或者“安徽云栋化工有限公司” ,就是待出库。 由现场工作人员确认后,提交地磅单单据、出入库单据附件。 - - 第五步:司机通过扫描二维码回传运输单据,运输数量等信息 - - 第六步:整个运输完成后,由计划专业B核对整个订单 - - 第七步:由计划专业C对运输费用进行确认,然后归档 -- 运输计划包括这些字段:计划日期、计划订单编号(SXDDH20260101000001,其中SXDDH固定的,20260101是YYYYMMDD的日期,000001是序列号)、单据类别、跟进状态、完成状态、供应商名称、目的地(也是公司名称)、物料编号、物料名称、产品规格、包装规格、单位、入库数、入库预估数、入库价、入库金额、出库预估数、出库数、出库单价、出库金额、磅差、送货方式、运输编号、车牌号、运输公司、运输单位、运输费用、运费合计、单据附件、销售合同、跟进人、备注、创建人、创建时间、修改人、修改时间、通知信息 -- 单据类别包括:直销单、入库单、出库单、云栋单 -- 跟进状态包括:待采购、等客户通知、待安排、计划取消、待发货、已发货、待入库、已入库、待出库、已出库 -- 完成状态包括: 是、否 -- 入库价默认是合同中价格,但是可以后续修改 -- 入库金额等于入库数\*入库价 -- 出库金额等于出库数\*出库价 -- 磅差支持负数 -- 送货方式包括:山峡自提、一票制、客户自提 -- 通知信息是一个标准的信息模版: - "计划号:SXDDH20260102000002 - 企业名称:安徽英毅热电有限公司 - 提货单位:安庆市山峡化工有限公司 - 到货时间:2026-01-02 - 药品名称:31% 工业盐酸 - 到货吨位:【4.7吨】 - 备注:" -- 计划中产品属性如果是易制毒、易制爆的属性,那么就需要购买证、运输证、必须这两个证书具备了,才可以进行运输安排。(目前产品需要增加是否易制毒、是否易制爆的配置) -- 运输结算 - - 有个模块可以看见历史所有的运输情况总揽 - - 多选运输单,生成运输结算单,提交审核后,审核成功后,通知对方开票,票据上传后给对方汇款,上传汇款单据信息 - - 运费分两种形式,一种按照重量计算,可以通过运输数量\*运输单价进行计算,计算出来的也可以调整。一种是按照趟次的,那这个不计算,按照手填模式。 -- 盘存统计分析功能 - -## 自有车辆信息维护 - -自有车辆的信息字段可以参考`docs/sql/vehicle_management.sql` 进行设计,这个车辆管理的信息比较全 - -## 运输公司及运输公司车辆信息维护 - -运输公司的车辆信息也可以参考`docs/sql/vehicle_management.sql` 进行设计,这个车辆管理的信息比较全 - -## 运输信息表 - -运输信息表包括这些字段:运输编号(SXYS0000001,其中SXYS是固定的,0000001 是序列号),车牌号、运输公司、所属公司(运输公司所属的人或公司名称)、运输介质、运输起点、运输终点、运输公里数、单位(吨/躺)、运输费用、创建人、是否开票、备注 - -## 要求 - -- 计划的表名都用plan\_开头 \ No newline at end of file diff --git a/docs/运输计划管理-待澄清问题清单.md b/docs/运输计划管理-待澄清问题清单.md deleted file mode 100644 index 419b57447..000000000 --- a/docs/运输计划管理-待澄清问题清单.md +++ /dev/null @@ -1,476 +0,0 @@ -# 运输计划管理模块 — 待澄清问题清单 - -> 本文档整理运输计划管理模块开发前的所有待确认事项。 -> 请逐项回答,每回答完一项可随时告知,助手会更新本清单的「答案」列。 -> -> **回答格式**:直接回复选项字母(如「A」)或填写具体内容。 - ---- - -## 一、基础配置问题 - -### Q1. 单据编号格式 - -**问题**:计划订单编号格式已明确为 `SXDDHYYYYMMDD######`,但序列号是否每日独立重置? - -- **A.** 每日独立重置(每日从 000001 开始) -- **B.** 全局连续递增(跨日不重置) - ---- - -### Q2. 运输编号格式 - -**问题**:运输编号格式为 `SXYS000001`,序列号是否全局连续? - -- **A.** 全局连续递增 -- **B.** 每月重置 -- **C.** 每日重置 - ---- - -### Q3. 送货方式枚举 - -**问题**:「山峡自提、一票制、客户自提」三种送货方式是否完整? - -- **A.** 以上三种足够 -- **B.** 需要补充其他方式(请说明):________ - ---- - -### Q4. 运费计算默认值 - -**问题**:创建运输信息时,默认按哪种方式计算? - -- **A.** 按重量(默认勾选,需填运输单价) -- **B.** 按趟次(默认手填) -- **C.** 默认不选,由用户自行选择 - ---- - -## 二、车辆与司机管理 - -### Q5. 自有车辆与承运商车辆的关系 - -**问题**:同一辆车是否可以同时属于「自有」和「承运商」? - -- **A.** 不可以,同一辆车只能属于一种类型 -- **B.** 可以,同一辆车可以同时挂在自有和承运商名下 - ---- - -### Q6. 司机档案管理范围 - -**问题**:系统是否需要单独维护司机档案(含驾驶证、押运证等)? - -- **A.** 需要——维护司机基本信息、证件、联系方式 -- **B.** 不需要——司机信息在承运商或车辆档案里附带记录即可 -- **C.** 只需要记录与计划相关的临时司机信息 - ---- - -### Q7. 车辆选择联动 - -**问题**:选择承运商后,车辆列表是否需要联动筛选? - -- **A.** 选择承运商后,下拉列表只显示该承运商名下的车辆 -- **B.** 车辆列表显示所有车辆,由用户自行筛选 - ---- - -### Q8. 司机选择联动 - -**问题**:选择车辆后,司机列表是否需要联动? - -- **A.** 选择车辆后,自动带出该车辆的默认司机 -- **B.** 司机列表独立选择,不做联动 - ---- - -## 三、证照与合规 - -### Q9. 易制毒/易制爆证照检查时机 - -**问题**:购买证和运输证是「上传时检查」还是「安排运输前检查」? - -- **A.** 上传时即时检查——上传后立即阻断后续流程直到证照齐全 -- **B.** 安排运输前统一检查——在用户点击「安排运输」时检查所有产品 - ---- - -### Q10. 证照过期提醒 - -**问题**:系统是否需要自动提醒即将过期的证照? - -- **A.** 需要——证照过期前 N 天提醒(请设定天数):________ -- **B.** 不需要——用户手动检查即可 - ---- - -### Q11. 证照类型灵活性 - -**问题**:购买证和运输证是否固定为两种,还是支持自定义证照类型? - -- **A.** 固定为「购买证 + 运输证」两种 -- **B.** 支持按产品类别配置不同的必填证照类型 - ---- - -## 四、二维码与通知 - -### Q12. 二维码有效期默认值 - -**问题**:生成二维码时,有效期默认填写多少天? - -- **A.** 默认 7 天 -- **B.** 默认 3 天 -- **C.** 默认不设期限,由用户手动填写 -- **D.** 其他:________ - ---- - -### Q13. 二维码分发方式 - -**问题**:计划专员 A 如何将二维码分发给司机/现场人员? - -- **A.** 系统内复制文本,粘贴到微信/短信发送 -- **B.** 系统内直接发送(需对接微信/短信接口) -- **C.** 其他:________ - ---- - -### Q14. 待入库/待出库通知方式 - -**问题**:待入库/待出库单据同步给现场工作人员的方式? - -- **A.** 系统消息 + 复制文本微信发送(已确认) -- **B.** 仅系统消息通知 -- **C.** 仅微信/短信发送 -- **D.** 其他:________ - ---- - -## 五、地磅与过磅 - -### Q15. 地磅数据自动拉取 - -**问题**:地磅单数据(如皮重、毛重、净重)是否需要从地磅硬件自动拉取? - -- **A.** 需要——对接地磅硬件 API 自动获取 -- **B.** 不需要——由现场工作人员手动录入 -- **C.** 部分自动(皮重自动,毛重手动) - ---- - -### Q16. 磅差阈值告警 - -**问题**:磅差超过多少时需要系统告警? - -- **A.** 超过 ±3% 时告警 -- **B.** 超过 ±5% 时告警 -- **C.** 自定义阈值(请说明):________ -- **D.** 不设告警,仅记录 - ---- - -### Q17. 一车多货的过磅处理 - -**问题**:同一辆车装有多个计划的产品时,如何处理过磅? - -- **A.** 每个计划单独过磅,系统记录关联关系 -- **B.** 一车统一过磅,按比例分摊到各计划 -- **C.** 其他:________ - ---- - -## 六、运输结算 - -### Q18. 结算单审核流程 - -**问题**:运输结算单的审核流程是否需要走工作流? - -- **A.** 需要——按工作流配置决定(审核节点、角色等) -- **B.** 不需要——固定由计划专员 C 确认即可 -- **C.** 根据金额大小决定是否走审核(请说明阈值):________ - ---- - -### Q19. 发票信息记录 - -**问题**:运输结算单是否需要记录发票信息(发票号、发票金额等)? - -- **A.** 需要——记录发票号、开票日期、发票金额 -- **B.** 不需要——仅记录是否开票即可 -- **C.** 其他:________ - ---- - -### Q20. 汇款凭证要求 - -**问题**:上传汇款单据后,是否需要关联具体的结算单和金额? - -- **A.** 需要——汇款凭证需精确对应到某个结算单 -- **B.** 不需要——仅上传凭证图片即可 -- **C.** 其他:________ - ---- - -### Q21. 结算状态细化 - -**问题**:运输结算的完整状态除了「待审核/已审核/已汇款」,还需要哪些? - -- **A.** 待提交 → 待审核 → 已审核 → 已开票 → 已汇款 -- **B.** 待提交 → 已提交 → 审核中 → 已审核 → 已开票 → 已汇款 -- **C.** 其他:________ - ---- - -## 七、盘存统计 - -### Q22. 库存统计口径 - -**问题**:库存统计以什么时间点的数据为准? - -- **A.** 以「已入库/已出库」状态的单据为准(实时计算) -- **B.** 以归档完成的单据为准 -- **C.** 其他:________ - ---- - -### Q23. 库存预警 - -**问题**:系统是否需要库存预警功能(如库存低于某值时告警)? - -- **A.** 需要——按产品设置库存预警阈值 -- **B.** 不需要——仅展示统计数据即可 -- **C.** 后续按需补充 - ---- - -### Q24. 库存金额计算 - -**问题**:库存金额使用什么价格计算? - -- **A.** 使用入库时的实际价格(每批单独计算) -- **B.** 使用加权平均价格 -- **C.** 其他:________ - ---- - -### Q25. 统计报表导出 - -**问题**:盘存统计分析报表是否需要支持导出? - -- **A.** 需要——支持导出 Excel -- **B.** 不需要——仅在线查看即可 -- **C.** 后续按需补充 - ---- - -## 八、司机端功能 - -### Q26. 司机扫码后是否需要签名确认? - -**问题**:司机回传运输单据时,是否需要电子签名? - -- **A.** 需要——现场签名确认 -- **B.** 不需要——上传照片即视为确认 -- **C.** 其他:________ - ---- - -### Q27. 司机回传的照片类型 - -**问题**:司机扫码回传时,系统要求上传哪些照片? - -- **A.** 仅运单照片 -- **B.** 运单 + 装货照片 + 卸货照片 -- **C.** 其他:________ - ---- - -### Q28. 司机端消息通知 - -**问题**:司机是否需要接收系统通知(如计划变更、取消等)? - -- **A.** 需要——通过微信/短信接收通知 -- **B.** 不需要——司机自行查看即可 -- **C.** 仅在计划取消时通知 - ---- - -## 九、计划变更与取消 - -### Q29. 计划取消的后续处理 - -**问题**:已安排运输的计划取消后,已生成的运输信息如何处理? - -- **A.** 自动作废关联的运输信息 -- **B.** 保留运输信息,标记为「已取消」 -- **C.** 需手动处理运输信息 - ---- - -### Q30. 计划变更记录 - -**问题**:计划在执行过程中发生变更(如产品、数量变化),是否需要记录变更历史? - -- **A.** 需要——记录变更人、变更时间、变更内容 -- **B.** 不需要——仅保留最终状态 -- **C.** 仅记录关键字段的变更 - ---- - -### Q31. 计划复制功能 - -**问题**:是否需要「复制计划」功能,快速创建类似的新计划? - -- **A.** 需要——复制计划主表和产品明细 -- **B.** 不需要——每次新建即可 -- **C.** 后续按需补充 - ---- - -## 十、权限与数据隔离 - -### Q32. 归属公司数据隔离 - -**问题**:不同归属公司(安庆山峡/安徽云栋)的数据是否完全隔离? - -- **A.** 完全隔离——用户只能看到自己所属公司的数据 -- **B.** 管理员可以跨公司查看 -- **C.** 其他:________ - ---- - -### Q33. 角色权限细化 - -**问题**:计划专员 A/B/C 的权限是否精确到操作级别(如 A 只能发起,B 只能核对)? - -- **A.** 是——每个角色精确控制可操作的功能和状态 -- **B.** 否——按菜单权限控制即可 - ---- - -## 十一、移动端需求 - -### Q34. 移动端离线支持 - -**问题**:现场人员/司机是否需要在网络不佳的环境下使用? - -- **A.** 需要——支持离线操作,网络恢复后自动同步 -- **B.** 不需要——必须在线使用 - ---- - -### Q35. 移动端扫码能力 - -**问题**:移动端扫码功能使用什么方式? - -- **A.** 微信扫一扫(推荐,无需安装 App) -- **B.** 系统内置扫码功能 -- **C.** 两者都支持 - ---- - -## 十二、其他问题 - -### Q36. 数据导入功能 - -**问题**:是否需要支持从 Excel 批量导入计划数据? - -- **A.** 需要——支持批量导入计划主表和产品明细 -- **B.** 不需要——手动逐条录入即可 -- **C.** 后续按需补充 - ---- - -### Q37. 打印功能 - -**问题**:是否需要支持打印计划单、运输单等单据? - -- **A.** 需要——支持标准格式打印 -- **B.** 不需要——导出 Excel 即可 -- **C.** 后续按需补充 - ---- - -### Q38. 日志与审计 - -**问题**:是否需要记录所有操作的操作日志? - -- **A.** 需要——记录操作人、时间、操作内容、变更前后值 -- **B.** 不需要——仅记录关键操作即可 -- **C.** 不需要 - ---- - -### Q39. 多语言支持 - -**问题**:系统是否需要支持多语言? - -- **A.** 不需要——仅支持简体中文 -- **B.** 需要——支持简体中文和英文 -- **C.** 后续按需补充 - ---- - -### Q40. 附件上传限制 - -**问题**:上传的附件(图片、文档)是否需要限制大小和格式? - -- **A.** 是——请说明限制:单个文件最大 ____ MB,支持格式:________ -- **B.** 否——不限制 - ---- - -## 答案记录表 - -| 问题编号 | 答案 | 回答时间 | 备注 | -|----------|------|----------|------| -| Q1 | | | | -| Q2 | | | | -| Q3 | | | | -| Q4 | | | | -| Q5 | | | | -| Q6 | | | | -| Q7 | | | | -| Q8 | | | | -| Q9 | | | | -| Q10 | | | | -| Q11 | | | | -| Q12 | | | | -| Q13 | | | | -| Q14 | | | | -| Q15 | | | | -| Q16 | | | | -| Q17 | | | | -| Q18 | | | | -| Q19 | | | | -| Q20 | | | | -| Q21 | | | | -| Q22 | | | | -| Q23 | | | | -| Q24 | | | | -| Q25 | | | | -| Q26 | | | | -| Q27 | | | | -| Q28 | | | | -| Q29 | | | | -| Q30 | | | | -| Q31 | | | | -| Q32 | | | | -| Q33 | | | | -| Q34 | | | | -| Q35 | | | | -| Q36 | | | | -| Q37 | | | | -| Q38 | | | | -| Q39 | | | | -| Q40 | | | | - ---- - -> **使用说明**: -> 1. 请逐项回答问题,回复选项字母或填写具体内容 -> 2. 每回答完一批问题后,助手将更新答案记录表 -> 3. 全部回答完成后,助手将生成完整的需求确认文档 diff --git a/docs/运输计划管理-需求说明文档.md b/docs/运输计划管理-需求说明文档.md new file mode 100644 index 000000000..a06980227 --- /dev/null +++ b/docs/运输计划管理-需求说明文档.md @@ -0,0 +1,675 @@ +# 运输计划管理模块 — 需求说明文档 + +> **版本**:v1.1 +> **日期**:2026-06-10 +> **状态**:✅ 需求确认完成 + +--- + +## 修订记录 + +| 版本 | 日期 | 变更说明 | +|------|------|----------| +| v1.0 | 2026-06-10 | 初始版本,整合原始需求文档、需求分析文档和40个澄清问题确认结果 | +| v1.1 | 2026-06-10 | 补充运输计划子模块需求确认(Q10-Q15),明确合同来源、审批流程等细节 | + +--- + +## 一、文档目的 + +本文档为运输计划管理模块的需求说明文档,整合了以下输入材料: + +- 原始需求文档(`计划需求.md`) +- 需求分析文档(`山峡化工一体化门户-需求分析文档.md`) +- 澄清问题清单(40个问题全部确认) + +--- + +## 二、业务背景 + +### 2.1 项目背景 + +安庆山峡化工有限公司已建设 CRM 系统(线索/客户/商机/报价单/合同/产品管理)和地磅系统。现需建设**统一的计划管理系统**,将 CRM 合同与后续的运输、地磅、库存等环节串联,形成完整的业务闭环。 + +### 2.2 系统目标 + +1. 建设统一系统,涵盖计划管理、运输公司管理、库存管理、运输管理等子模块 +2. 系统基于 shanxia2.0 既有基础设施(账号密码、菜单权限、数据权限、工作流、基础数据等模块已具备) +3. 计划表名以 `pl_` 为前缀 + +--- + +## 三、名词与定义 + +| 名词 | 含义 | +|------|------| +| 计划 | 从 CRM 合同发起的运输/出入库执行单据 | +| 计划订单编号 | 格式 `SXDDH` + `YYYYMMDD` + 6位序号 | +| 运输编号 | 格式 `SXYS` + 6位序号 | +| 购买证/运输证 | 易制毒/易制爆产品的法定凭证 | +| 地磅单 | 待入库/待出库单据自动生成的过磅记录 | +| 运输结算单 | 多选运输单合并生成的费用结算单据 | +| 框架合同 | CRM 系统中的合同类型,价格可通过调价函调整 | +| 直销单 | 不经过仓库的直发单据 | +| 入库单 | 货物进入仓库的单据 | +| 出库单 | 货物从仓库发出的单据 | +| 安庆山峡 | 安庆市山峡化工有限公司 | +| 安徽云栋 | 安徽云栋化工有限公司 | + +--- + +## 四、单据分类 + +### 4.1 分类维度 + +计划单据的类别由以下两个维度确定: + +| 维度 | 值 | 说明 | +|------|-----|------| +| **归属公司** | 安庆山峡 / 安徽云栋 | 签署订单的公司主体 | +| **单据类型** | 直销单 / 入库单 / 出库单 | 决定后续的流程分支 | + +### 4.2 单据类型定义 + +| 单据类型 | 含义 | 判断规则 | +|----------|------|----------| +| 直销单 | 不经过仓库的直发 | 供应商 ≠ 安庆山峡/安徽云栋 **且** 目的地 ≠ 安庆山峡/安徽云栋 | +| 入库单 | 货物需进入仓库 | 目的地 = 安庆山峡 **或** 安徽云栋 | +| 出库单 | 货物从仓库发出 | 供应商 = 安庆山峡 **或** 安徽云栋 | + +--- + +## 五、基础配置 + +### 5.1 编号规则 + +| 项目 | 规则 | 说明 | +|------|------|------| +| 计划订单编号 | `SXDDH` + `YYYYMMDD` + `######` | 每日独立重置,从 000001 开始 | +| 运输编号 | `SXYS` + `######` | 每月重置,全局连续 | + +### 5.2 枚举值 + +| 枚举类型 | 值 | +|----------|-----| +| 送货方式 | 山峡自提、一票制、客户自提 | +| 运费计算方式 | 按重量(默认)/ 按趟次(由用户选择) | + +### 5.3 状态定义 + +#### 5.3.1 跟进状态 + +| 序号 | 状态值 | 适用单据类型 | 说明 | +|------|--------|-------------|------| +| 1 | 等客户确认 | 直销单、出库单 | 等待客户确认要货 | +| 2 | 待采购 | 直销单、入库单 | 等待采购完成 | +| 3 | 待发货 | 直销单、入库单 | 等待发货 | +| 4 | 待收货 | 直销单、出库单 | 等待收货确认 | +| 5 | 已收货 | 出库单 | 收货完成 | +| 6 | 待入库 | 入库单 | 等待入库 | +| 7 | 已入库 | 入库单 | 入库完成 | +| 8 | 待出库 | 出库单 | 等待出库 | +| 9 | 已出库 | 出库单 | 出库完成 | +| 10 | 待归档 | 所有类型 | 归档前置状态 | +| 11 | 归档完成 | 所有类型 | 终态 | +| 12 | 计划取消 | 所有类型 | 终态(可从任意状态进入) | + +#### 5.3.2 运输安排状态 + +| 状态值 | 说明 | +|--------|------| +| 待安排 | 运输尚未安排 | +| 已安排 | 已完成运输安排(选定车辆、填写运输信息) | + +#### 5.3.3 归档状态 + +| 状态值 | 说明 | +|--------|------| +| 未归档 | 初始值 | +| 已归档 | 归档操作完成后 | + +#### 5.3.4 完成状态 + +| 状态值 | 说明 | +|--------|------| +| 是 | 归档后自动变为"是" | +| 否 | 初始值 | + +--- + +## 六、业务流程 + +### 6.1 主流程(7步) + +``` +┌────────────────────────────────────────────────────────────────────┐ +│ 第1步:从 CRM 合同发起计划 │ +│ - 选择归属公司(安庆山峡 / 安徽云栋) │ +│ - 选择单据类型(直销单 / 入库单 / 出库单) │ +│ - 选择合同、产品,填写基本信息 │ +│ - 系统生成计划订单编号 │ +│ - 入库/出库数量按产品级别填写 │ +│ - 入库价默认为合同价格,可修改 │ +│ - 入库金额 = 入库数 × 入库价 │ +│ - 出库金额 = 出库数 × 出库价 │ +└───────────────────────────────┬────────────────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────────┐ +│ 第2步:判断产品属性 │ +│ - 产品属性为易制毒/易制爆? │ +│ → 是:必须上传购买证 + 运输证(固定两种) │ +│ → 否:直接进入下一步 │ +│ - 检查时机:点击「安排运输」时统一检查 │ +│ - 购买证/运输证不需要过期时间检查 │ +└───────────────────────────────┬────────────────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────────┐ +│ 第3步:安排运输 │ +│ - 选择车辆类型(自有 或 承运商) │ +│ → 选择承运商后,只显示该承运商名下的车辆 │ +│ - 选择车辆后,自动带出该车辆的默认司机 │ +│ - 同一辆车只能属于一种类型(自有 或 承运商) │ +│ - 填写运输信息 │ +│ - 运输安排状态:待安排 → 已安排 │ +│ - 生成二维码 │ +│ → 有效期:默认不设期限,用户可手动填写 │ +│ → 分发方式:点击按钮生成二维码图片 → 专员截图 → 发送 │ +└───────────────────────────────┬────────────────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────────┐ +│ 第4步:跟进状态流转 │ +│ 【直销单】等客户确认→待采购→待发货→待收货→待归档→归档完成 │ +│ 【入库单】待采购→待发货→待入库→已入库→待归档→归档完成 │ +│ 【出库单】等客户确认→待出库→已出库→待收货→已收货→待归档→归档完成 │ +│ │ +│ 其中: │ +│ - 入库单/出库单涉及地磅: │ +│ → 待入库/待出库的单据自动生成地磅单 │ +│ → 单据同步给现场工作人员(系统消息 + 复制文本微信发送) │ +│ → 现场工作人员确认后提交地磅单和出入库附件 │ +│ → 地磅数据由现场人员手动填写(不对接硬件) │ +│ - 司机通过扫描二维码回传运输单据、运输数量等信息 │ +│ - 通知信息按模板生成,不可编辑 │ +└───────────────────────────────┬────────────────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────────┐ +│ 第5步:核对 │ +│ - 计划专员B 核对整个订单 │ +│ - 判断是否有运输费用 │ +└───────────────────────────────┬────────────────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────────┐ +│ 第6步:运费结算(仅运费需要结算,运输本身不产生结算) │ +│ - 有运费:进入运费结算流程 │ +│ - 无运费:直接归档 │ +│ │ +│ 运费结算流程(不走工作流): │ +│ 待提交 → 已提交 → 审核通过 → 已确认 │ +│ │ +│ 运费计算方式: │ +│ - 按重量:运输数量 × 运输单价(计算结果可调整) │ +│ - 按趟次:手动填写 │ +│ │ +│ 发票信息:需记录发票号、开票日期、发票金额 │ +│ 汇款凭证:需精确对应到结算单 │ +└───────────────────────────────┬────────────────────────────────────┘ + │ + ▼ +┌────────────────────────────────────────────────────────────────────┐ +│ 第7步:归档 │ +│ - 归档状态:未归档 → 已归档 │ +│ - 完成状态:否 → 是 │ +└────────────────────────────────────────────────────────────────────┘ +``` + +### 6.2 通知信息模板 + +通知信息按以下模板生成,系统中不可编辑: + +``` +计划号:SXDDH20260102000002 +企业名称:安徽英毅热电有限公司 +提货单位:安庆市山峡化工有限公司 +到货时间:2026-01-02 +药品名称:31% 工业盐酸 +到货吨位:【4.7吨】 +备注: +``` + +--- + +## 七、计划单据 + +### 7.1 计划主表字段 + +| 字段名 | 说明 | 规则/备注 | +|--------|------|-----------| +| 计划日期 | 发起计划的日期 | — | +| 计划订单编号 | `SXDDHYYYYMMDD######` | 系统自动生成,每日重置 | +| 归属公司 | 安庆山峡 / 安徽云栋 | 新增维度 | +| 单据类型 | 直销单 / 入库单 / 出库单 | 决定流程分支 | +| 跟进状态 | 见跟进状态枚举 | 按单据类型流转 | +| 运输安排状态 | 待安排 / 已安排 | — | +| 归档状态 | 未归档 / 已归档 | 归档后自动变更 | +| 完成状态 | 是 / 否 | 归档后自动变更 | +| 供应商名称 | 供应商公司名称 | 下拉选择,来自客户表 | +| 目的地 | 目的公司名称 | 下拉选择,来自客户表 | +| 送货方式 | 山峡自提 / 一票制 / 客户自提 | 枚举值 | +| 是否有运输费用 | 布尔值 | 创建计划时勾选 | +| 运输编号 | `SXYS######` | 关联运输信息 | +| 车牌号 | — | 关联车辆信息 | +| 运输公司 | — | 关联运输公司信息 | +| 运输费用 | 单次运输费用 | — | +| 运费合计 | — | — | +| 单据附件 | 上传的各类单据文件 | — | +| 销售合同 | 关联的 CRM 合同 | — | +| 跟进人 | 当前跟进的计划专员 | — | +| 备注 | — | — | +| 通知信息 | 标准模板内容 | 按模板生成,不可编辑 | +| 创建人 | — | 系统自动 | +| 创建时间 | — | 系统自动 | +| 修改人 | — | 系统自动 | +| 修改时间 | — | 系统自动 | + +### 7.2 计划产品明细表字段 + +| 字段名 | 说明 | 规则/备注 | +|--------|------|-----------| +| 计划ID | 关联计划主表 | 外键 | +| 物料编号 | — | 关联产品主数据 | +| 物料名称 | — | 冗余自产品主数据 | +| 产品规格 | — | 冗余自产品主数据 | +| 包装规格 | — | 冗余自产品主数据 | +| 单位 | 吨/个/箱等 | — | +| 入库预估数 | — | 安排时预估 | +| 入库数 | 实际入库数量 | 地磅确认后填入 | +| 入库价 | 默认合同价格,可修改 | — | +| 入库金额 | 入库数 × 入库价 | 自动计算 | +| 出库预估数 | — | — | +| 出库数 | 实际出库数量 | — | +| 出库单价 | — | — | +| 出库金额 | 出库数 × 出库价 | 自动计算 | +| 是否易制毒 | — | 冗余自产品主数据 | +| 是否易制爆 | — | 冗余自产品主数据 | + +--- + +## 八、运输管理 + +### 8.1 运输信息表字段 + +| 字段名 | 说明 | 规则/备注 | +|--------|------|-----------| +| 运输编号 | `SXYS` + 6位序号 | 每月重置,全局连续 | +| 车牌号 | — | 关联车辆信息 | +| 运输公司 | — | 关联运输公司信息 | +| 所属公司 | 运输公司所属的人或公司名称 | — | +| 运输介质 | — | — | +| 运输起点 | — | — | +| 运输终点 | — | — | +| 运输公里数 | — | — | +| 单位 | 吨/趟 | — | +| 运输费用 | — | — | +| 是否开票 | 布尔值 | — | +| 备注 | — | — | +| 创建人 | — | 系统自动 | +| 创建时间 | — | 系统自动 | + +### 8.2 运输与计划的关系 + +- 计划与运输为 **N:N 关系** +- 三种场景均存在: + - 1:1 一个计划一趟运输 + - 1:N 一个计划多趟运输(分车装运) + - N:1 多个计划一趟运输(拼车) + +### 8.3 二维码 + +| 项目 | 说明 | +|------|------| +| 生成时机 | 安排运输时 | +| 有效期 | 默认不设期限,用户可手动填写 | +| 分发方式 | 点击按钮生成图片 → 专员截图 → 发送给司机/现场人员 | +| 司机扫码 | 无需登录,回传运输单据、运输数量等信息 | +| 现场人员扫码 | 需登录验证权限,查看单据详情 | + +--- + +## 九、车辆与司机管理 + +### 9.1 车辆归属 + +| 规则 | 说明 | +|------|------| +| 归属唯一性 | 同一辆车只能属于一种类型(自有 或 承运商) | +| 承运商筛选 | 选择承运商后,只显示该承运商名下的车辆 | +| 司机自动带出 | 选择车辆后,自动带出该车辆的默认司机 | + +### 9.2 司机档案 + +| 项目 | 说明 | +|------|------| +| 管理方式 | 系统单独维护司机档案 | +| 基本信息 | 姓名、联系方式等 | +| 证件 | 驾驶证、行驶证、危化品证 | +| 过期提醒 | 证件过期前 **30 天** 提醒(驾驶证/行驶证/危化品证) | + +--- + +## 十、运费结算 + +### 10.1 结算流程 + +``` +待提交 → 已提交 → 审核通过 → 已确认 +``` + +- **审核方式**:不走工作流,固定由计划专员C确认 +- **运输本身不产生结算**:只有运费需要结算 + +### 10.2 运费计算 + +| 方式 | 说明 | +|------|------| +| 按重量(默认) | 运输数量 × 运输单价,计算结果可调整 | +| 按趟次 | 手动填写 | + +### 10.3 发票信息 + +需要记录:发票号、开票日期、发票金额 + +### 10.4 汇款凭证 + +- 需精确对应到某个结算单 +- 上传功能不限制文件类型,支持多个文件 + +--- + +## 十一、盘存统计 + +### 11.1 统计口径 + +- 以**归档完成**的单据为准 +- 直销单不纳入库存统计 + +### 11.2 统计报表 + +| 报表名称 | 说明 | +|----------|------| +| 库存台账 | 按产品汇总当前库存量、库存金额 | +| 出入库明细 | 按时间范围列出所有入库/出库记录 | +| 出入库汇总 | 按月/周汇总各产品的入库量、出库量、净变化 | +| 运输统计 | 按运输公司/车辆统计运输趟次、运费 | +| 计划执行统计 | 按跟进状态统计各状态的计划数量 | + +> 报表导出功能后续按需补充 + +### 11.3 库存预警 + +- 需要库存预警功能 +- 按产品设置预警阈值 + +### 11.4 库存金额 + +- 使用**入库时的实际价格**(每批单独计算) +- 不使用加权平均 + +--- + +## 十二、司机端功能 + +### 12.1 扫码回传 + +- 司机扫描二维码回传: + - 运输单据照片 + - 运输数量 + - 其他信息 + +### 12.2 文件上传 + +- 不限制上传单据类型 +- 支持上传多个文件 +- 不需要电子签名 + +### 12.3 消息通知 + +- 司机**不需要接收系统通知** + +--- + +## 十三、计划变更与取消 + +### 13.1 计划取消 + +- 任意跟进状态下均可取消 +- 保留运输信息,标记为「已取消」 +- 取消后不再流转 + +### 13.2 变更记录 + +- 需要记录变更历史 +- 包含:变更人、时间、内容 + +### 13.3 计划复制 + +- 后续按需补充 + +--- + +## 十四、系统约束 + +### 14.1 数据隔离 + +- 数据暂不按归属公司隔离 + +### 14.2 权限 + +- 暂不考虑角色权限细化 +- 计划专员A/B/C为三个不同角色,通过统一角色权限体系控制 + +### 14.3 地磅对接 + +- 地磅数据由现场人员手动填写 +- 不对接硬件设备 + +### 14.4 其他功能(暂不考虑) + +- 移动端离线支持 +- 移动端扫码能力 +- 数据导入 +- 打印功能 +- 操作日志 +- 多语言 +- 附件类型限制 + +--- + +## 十五、业务规则汇总 + +| 编号 | 规则描述 | +|------|----------| +| BR-01 | 一个计划可包含多个产品 | +| BR-02 | 框架合同商品价格可通过调价函调整,每次调整保留版本历史 | +| BR-03 | 产品属性为易制毒或易制爆时,必须上传购买证和运输证后才能安排运输 | +| BR-04 | 运输分两种方式:自有车辆、运输公司车辆 | +| BR-05 | 运输信息生成二维码,由计划专员复制线下分发 | +| BR-06 | 待入库/待出库的单子通过系统消息 + 复制文本微信发送同步 | +| BR-07 | 入库单判断:目的地 = 安庆山峡 或 安徽云栋 | +| BR-08 | 出库单判断:供应商 = 安庆山峡 或 安徽云栋 | +| BR-09 | 直销单判断:供应商 ≠ 安庆山峡/安徽云栋 且 目的地 ≠ 安庆山峡/安徽云栋 | +| BR-10 | 待入库/待出库的单据自动生成地磅单 | +| BR-11 | 地磅单由现场工作人员确认后,提交单据和附件 | +| BR-12 | 司机通过扫描二维码回传运输单据、运输数量等信息 | +| BR-13 | 计划专员B核对整个订单 | +| BR-14 | 是否有运输费用在创建计划时勾选确定 | +| BR-15 | 运输费用由计划专员C确认后归档 | +| BR-16 | 计划编号格式:`SXDDHYYYYMMDD######` | +| BR-17 | 运输编号格式:`SXYS` + 6位序号 | +| BR-18 | 入库价默认为合同价格,支持后续修改 | +| BR-19 | 入库金额 = 入库数 × 入库价 | +| BR-20 | 出库金额 = 出库数 × 出库价 | +| BR-21 | 送货方式包括:山峡自提、一票制、客户自提 | +| BR-22 | 通知信息按模板生成,系统中不可编辑 | +| BR-23 | 产品主数据需增加"是否易制毒"、"是否易制爆"配置项 | +| BR-24 | 运费计算方式一:运输数量 × 运输单价(计算结果可调整) | +| BR-25 | 运费计算方式二:按趟次,手动填写 | +| BR-26 | 运输结算流程:多选运输单 → 生成结算单 → 提交审核 → 审核成功 → 通知开票 → 票据上传 → 汇款 → 上传汇款单据 | +| BR-27 | 运输结算的审核流程不走工作流,由计划专员C直接确认 | +| BR-28 | 运费结算需要记录发票号、开票日期、发票金额 | +| BR-29 | 运费结算需要精确对应汇款凭证到结算单 | +| BR-30 | 计划与运输为 N:N 关系 | +| BR-31 | 所有单据类型在任意跟进状态下均可取消 | +| BR-32 | 归档操作完成后,归档状态自动变"已归档",完成状态自动变"是" | +| BR-33 | 司机扫码无需登录;现场人员扫码需登录验证权限 | +| BR-34 | 购买证/运输证不需要过期时间检查 | +| BR-35 | 司机/押运员证件(驾驶证、行驶证、危化品证)需要过期提醒(30天) | +| BR-36 | 二维码有效期默认不设期限,用户可手动填写 | +| BR-37 | 同一辆车只能属于一种类型(自有 或 承运商) | +| BR-38 | 选择承运商后,只显示该承运商名下的车辆 | +| BR-39 | 选择车辆后,自动带出该车辆的默认司机 | +| BR-40 | 运费结算状态:待提交 → 已提交 → 审核通过 → 已确认 | +| BR-41 | 不设磅差告警,也不记录磅差 | +| BR-42 | 盘存统计以归档完成的单据为准 | +| BR-43 | 库存预警按产品设置阈值 | +| BR-44 | 库存金额使用入库时的实际价格(每批单独计算) | +| BR-45 | 直销单不纳入库存统计 | +| BR-46 | 司机不需要接收系统通知 | +| BR-47 | 上传功能不限制单据类型,支持多个文件 | +| BR-48 | 不需要电子签名 | +| BR-49 | 计划取消后保留运输信息,标记为「已取消」 | +| BR-50 | 需要记录变更历史(变更人、时间、内容) | +| BR-51 | 数据暂不按归属公司隔离 | + +--- + +## 附录 + +### 附录A:单据类型判断规则 + +> 计划单据类型的自动判断逻辑 + +#### A.1 入库单 + +``` +目的地 = 安庆山峡 OR 目的地 = 安徽云栋 +``` + +#### A.2 出库单 + +``` +供应商 = 安庆山峡 OR 供应商 = 安徽云栋 +``` + +#### A.3 直销单 + +``` +供应商 ≠ 安庆山峡 AND 供应商 ≠ 安徽云栋 +AND +目的地 ≠ 安庆山峡 AND 目的地 ≠ 安徽云栋 +``` + +### 附录B:计划跟进状态流转图 + +#### B.1 直销单 + +``` +等客户确认 → 待采购 → 待发货 → 待收货 → 待归档 → 归档完成 + ↓ + 计划取消(任意状态可进入) +``` + +#### B.2 入库单 + +``` +待采购 → 待发货 → 待入库 → 已入库 → 待归档 → 归档完成 + ↓ + 计划取消(任意状态可进入) +``` + +#### B.3 出库单 + +``` +等客户确认 → 待出库 → 已出库 → 待收货 → 已收货 → 待归档 → 归档完成 + ↓ + 计划取消(任意状态可进入) +``` + +### 附录C:运费结算状态流转 + +``` +待提交 → 已提交 → 审核通过 → 已确认 +``` + +### 附录D:运输计划审批状态流转 + +> 适用于新建/修改运输计划时的审批流程 + +``` +草稿 → 待审批 → 审批中 → 待执行 → 执行中 → 已完成 + ↓ + 已取消(任意状态可进入) +``` + +**审批规则**: +- 提交审批时,用户**选择审批人** +- 选择几个就是几个人审批 +- 按照**选择时的排序**依次审批 +- 审批方式:**会签**(所有人审批通过才算通过) + +### 附录E:运输计划子模块需求确认(Q10-Q15) + +> 以下为运输计划管理模块的需求澄清问答记录 + +#### E.1 合同关联(Q10-Q10.1) + +| 问题 | 答案 | +|------|------| +| Q10: 新建计划时,合同来源? | **A** - 关联现有合同(完整信息) | +| Q10.1: 现有合同表信息? | 主表 `crm_contract`,产品明细表 `crm_contract_product` | + +**从合同带入运输计划的信息:** + +| 信息 | 来源表 | 字段 | +|------|--------|------| +| 客户信息 | `crm_contract` | `customer_id`, `customer_name` | +| 联系人信息 | `crm_contract` | `contact_name`, `contact_mobile` | +| 甲方/乙方信息 | `crm_contract` | `party_a*`, `party_b*` | +| 合同有效期 | `crm_contract` | `start_date`, `end_date` | +| 结算方式 | `crm_contract` | `settlement_method` | +| 商品明细 | `crm_contract_product` | `product_id`, `product_name`, `model`, `unit`, `price` 等 | +| 送货方式 | `crm_contract_product` | `delivery_method` | + +#### E.2 待入库/待出库数据来源(Q11) + +| 问题 | 答案 | +|------|------| +| Q11: 待入库/待出库数据来源? | 入库单/出库单:地磅单;直销单:人工录入 | + +#### E.3 运费计算方式(Q12) + +| 问题 | 答案 | +|------|------| +| Q12: 运费计算方式? | 按重量(默认)/ 按趟次(由用户选择) | + +#### E.4 运输计划审批流程(Q13-Q14) + +| 问题 | 答案 | +|------|------| +| Q13: 运输计划状态流转? | 草稿 → 待执行 → 执行中 → 已完成 → 已取消 | +| Q13.1: 状态是否可以回退? | 不允许回退,状态只能向前推进 | +| Q14: 是否需要审批流程? | **B** - 简单审批(会签) | + +#### E.5 其他功能(Q15) + +| 问题 | 答案 | +|------|------| +| Q15: 还需要哪些功能? | 暂不需要(计划变更/拆分/合并/导入/附件/打印均不需要) | + +--- + +**文档结束** diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index e45f29b08..6b21f0ce5 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -5,8 +5,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py": { - "mtime": 1780804651.8268085, - "ast_hash": "533eb98f3c6b1d0855c734f31b7ff3df", + "mtime": 1781955941.3783062, + "ast_hash": "1cd45958573670f8b07d214aec88a289", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/customer_pool.py": { @@ -40,8 +40,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py": { - "mtime": 1780804662.2669215, - "ast_hash": "5db15f6c788236caf811904f54bcfc3c", + "mtime": 1781955926.1569037, + "ast_hash": "b195fc977cf2da1ed5b3b9d09558c348", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py": { @@ -160,13 +160,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/__init__.py": { - "mtime": 1780112936.52883, - "ast_hash": "c7b352109a86ebf6a84e98cade8c0fc0", + "mtime": 1781955922.1434138, + "ast_hash": "bd2e29ab334284ad512dfdbb397acad6", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/crm_models.py": { - "mtime": 1780743830.2210455, - "ast_hash": "e219acfafb17fc75b435021e04fc892a", + "mtime": 1781940044.3737075, + "ast_hash": "a20130a5849e01135cbbd1548c99810f", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/base.py": { @@ -265,8 +265,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/product.py": { - "mtime": 1780743830.2208753, - "ast_hash": "56b53f2ca2ffccab8186a6cb61e7c94e", + "mtime": 1781940045.372926, + "ast_hash": "5b5fd60c213203fc197680741a260728", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/customer.py": { @@ -280,7 +280,7 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/crm/contract.py": { - "mtime": 1780934821.610729, + "mtime": 1782002227.1278217, "ast_hash": "6553f54ca1fd19086c170095f402a628", "semantic_hash": "" }, @@ -395,7 +395,7 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract_product.py": { - "mtime": 1780934821.6172237, + "mtime": 1782002227.127798, "ast_hash": "d2e1538af2d36ecc9daf28a3b135bd0f", "semantic_hash": "" }, @@ -475,13 +475,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/clue_statistics.py": { - "mtime": 1780934821.6173372, + "mtime": 1782002227.1277413, "ast_hash": "9a026c628764467e4d1398900105dc78", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/product.py": { - "mtime": 1780743830.2505348, - "ast_hash": "fc7384d219c7405aec4121235966bae0", + "mtime": 1781940060.4324572, + "ast_hash": "ad0d46032486b2781fad12f9b67cef40", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/customer.py": { @@ -495,7 +495,7 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/crud/crm/contract.py": { - "mtime": 1780934821.6172829, + "mtime": 1782002227.1277766, "ast_hash": "3cd90455687d8cc24d4b664d1fd5eaa2", "semantic_hash": "" }, @@ -865,8 +865,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/vite.config.ts": { - "mtime": 1780742010.6509702, - "ast_hash": "60c41b2f633a6ef0e9a8a4af2a0eaa63", + "mtime": 1781960302.7967675, + "ast_hash": "612f53ff8840a0a9efce97b05723b717", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/eslint.config.mjs": { @@ -1835,13 +1835,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/config/setting.ts": { - "mtime": 1780108931.2369573, - "ast_hash": "863e3d9e66f8d3257285f79a6f275b20", + "mtime": 1781963655.7266245, + "ast_hash": "44b451647fa4aa4f34f38490ca891a0b", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/config/index.ts": { - "mtime": 1780201410.1636667, - "ast_hash": "eb5ac74bfa42403fd4acb186be8b2ca9", + "mtime": 1781963693.3777394, + "ast_hash": "0ba5a01b20d2c04c02e86412f0c4e74b", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/config/modules/component.ts": { @@ -1855,8 +1855,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/config/modules/headerBar.ts": { - "mtime": 1780108931.236889, - "ast_hash": "f8bb25da631b758790955603a09ef669", + "mtime": 1781963656.740397, + "ast_hash": "5929b8e95ae811aa5b3771b66b7ec958", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/config/modules/fastEnter.ts": { @@ -1890,8 +1890,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/enums/appEnum.ts": { - "mtime": 1780108931.2374265, - "ast_hash": "a45618309f9154738d72a80b50a5612a", + "mtime": 1781963655.036308, + "ast_hash": "bd72cb5676730c932774d2e3a8025767", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/patch-el-select-filterable.ts": { @@ -2235,8 +2235,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/forms/art-drag-verify/index.vue": { - "mtime": 1780108931.230769, - "ast_hash": "30b2eee7f6c55246ce0feee16d3b2a84", + "mtime": 1781949239.164476, + "ast_hash": "3644f6f1d74dee0eca346f4d49eab84e", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/forms/art-wang-editor/index.vue": { @@ -2375,8 +2375,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts": { - "mtime": 1780108931.23367, - "ast_hash": "e7c76508854e280e3998ddf26a745e91", + "mtime": 1781963700.4608269, + "ast_hash": "4f58a3e6bb8dd5488221555e591bc3c2", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts": { @@ -2415,8 +2415,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue": { - "mtime": 1780108931.2343986, - "ast_hash": "1d5af2f3a2518a67825603154c87bc60", + "mtime": 1781963700.3822906, + "ast_hash": "ff586067f5d08a35cb184e49aafdcf68", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue": { @@ -2475,13 +2475,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue": { - "mtime": 1780753478.4552467, - "ast_hash": "ba265e7f6a3b6b3586d274e7c79ce140", + "mtime": 1781964504.2245617, + "ast_hash": "a4ccc722c5cea4cf05fb1b18b8a9b0a5", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue": { - "mtime": 1780108931.2330117, - "ast_hash": "71933a0ea9d3cc08de3a74f3696517e8", + "mtime": 1781964504.2245889, + "ast_hash": "c04bc078d554bba904f60a526fcd7e27", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-fireworks-effect/index.vue": { @@ -2510,8 +2510,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-breadcrumb/index.vue": { - "mtime": 1780108931.2314622, - "ast_hash": "98e97db1f4b2faa64e603e031402cca1", + "mtime": 1781949102.5288982, + "ast_hash": "f82104ef7ba7c1da8921c96cf46661f0", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-header-bar/index.vue": { @@ -2595,8 +2595,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/ImagePreview/index.vue": { - "mtime": 1780360928.5354068, - "ast_hash": "518025129f3c75107363bde9c30b8c37", + "mtime": 1781949250.240146, + "ast_hash": "82d1c60721a4fb9a71da4c6fab611156", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/DictTag/index.vue": { @@ -2615,13 +2615,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/attachment-upload-field/index.vue": { - "mtime": 1780811445.9631026, - "ast_hash": "b94f78396e03912087bbb2b5723bbd74", + "mtime": 1781949239.170723, + "ast_hash": "a91991e766f66204b8c06e60130c271a", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/system-view-dialog/index.vue": { - "mtime": 1780242127.1083126, - "ast_hash": "c423af089947aeaa9ce78ae5bbbc88b7", + "mtime": 1781966023.5600212, + "ast_hash": "de1cfa2784e06e6fa3d026267ee19faa", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/ListPagination/index.vue": { @@ -2830,8 +2830,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/api/crm/contract/types.ts": { - "mtime": 1780242127.113299, - "ast_hash": "26e19599b42c3a98f87d35f94c2b2546", + "mtime": 1781941246.561811, + "ast_hash": "78d1700b9bc94a97245a66c191cf9e9e", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/api/crm/contract/index.ts": { @@ -2865,8 +2865,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/auth/login/index.vue": { - "mtime": 1780201410.1706765, - "ast_hash": "dae83e01aefe9cd12da59497c3536ad4", + "mtime": 1781949250.2441137, + "ast_hash": "6ddcec69223fc7fc4c94a5f186ca7548", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/index.vue": { @@ -2875,13 +2875,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/invalidForm.vue": { - "mtime": 1780723928.3307028, - "ast_hash": "63746547e5b273f8e86dcf977ee29eab", + "mtime": 1781950012.740282, + "ast_hash": "6e6b6f49860f9fd199c9252e18f99ec5", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/detailDrawer.vue": { - "mtime": 1780729227.8822896, - "ast_hash": "8a0e218de8c3632a17dc478721ea5980", + "mtime": 1781949223.051072, + "ast_hash": "e3f427973afa004fa5326eb9b72e830a", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/convertForm.vue": { @@ -2910,8 +2910,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/statistics/index.vue": { - "mtime": 1781020452.1785731, - "ast_hash": "83247d6f2a740c829b7a4d0a296fdf83", + "mtime": 1781949260.0078373, + "ast_hash": "bed7c4b51f4078a916740cdc2ed25dd5", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/index.vue": { @@ -2920,18 +2920,18 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/kanban.vue": { - "mtime": 1780242127.1052082, - "ast_hash": "ac8968e1b837449b467008e19282d513", + "mtime": 1781949250.2450376, + "ast_hash": "a0d3ff1ceced97686bca438d80598d52", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/funnel.vue": { - "mtime": 1780230172.1390252, - "ast_hash": "7a1b8c847085798d4583caf401126855", + "mtime": 1781949250.2452507, + "ast_hash": "353dbb9ceff084351a9556c99784f9be", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/statistics.vue": { - "mtime": 1780242127.0206392, - "ast_hash": "a806cc3fe87ca425f71313fe2a966ab2", + "mtime": 1781949250.2455666, + "ast_hash": "5c1e72172656a9247503d8259a67fbdc", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/detail.vue": { @@ -2940,8 +2940,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/components/OpportunityDetailDrawer.vue": { - "mtime": 1780734114.897359, - "ast_hash": "aba484b5bcdd5444056d6e3a7df001e8", + "mtime": 1781949239.1774602, + "ast_hash": "0ebfb228d7513f148183b7eea0e2ccae", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/components/FollowDialog.vue": { @@ -2950,13 +2950,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/components/BatchUpdateStageDialog.vue": { - "mtime": 1780242127.0351315, - "ast_hash": "245abd38cf64567e4c549f2fe623ae41", + "mtime": 1781949250.245898, + "ast_hash": "3ee5f46d552eef4dbe0e0feb31fb5213", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/components/BatchUpdateDateDialog.vue": { - "mtime": 1780214863.9005015, - "ast_hash": "8e5c85f9e6866c65c4e201d650d2cf24", + "mtime": 1781949250.2461169, + "ast_hash": "cbec8532cd3cf55d8b18bbabb1b6b54c", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/opportunity/components/MarkLostDialog.vue": { @@ -2980,28 +2980,28 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/index.vue": { - "mtime": 1780745863.514237, - "ast_hash": "5b474c42180da4befeccf963f435ee60", + "mtime": 1781949250.2466888, + "ast_hash": "7fc706f63ddab0fd91ef8a375ffc98c1", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/detail.vue": { - "mtime": 1780242305.8763702, - "ast_hash": "8021505f24cd16523ddf34ddbcd1843a", + "mtime": 1781949250.247082, + "ast_hash": "74e06d2264f77baa165d983b1c2a24e3", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/form.vue": { - "mtime": 1780242127.1130378, - "ast_hash": "2307aab67a98a28bfe511ed59963bebb", + "mtime": 1781949250.2476332, + "ast_hash": "d0bb48cf071631e26e91465a0b161a21", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/change/index.vue": { - "mtime": 1780242127.1129124, - "ast_hash": "dd966e0e7e2a61e20db9563b18f28ec4", + "mtime": 1781966824.3208108, + "ast_hash": "20d510c1759da656923697dd73930419", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/template/index.vue": { - "mtime": 1780242127.0207584, - "ast_hash": "d52864e83e1ec3f8f4fa677ba0a2a226", + "mtime": 1781966834.4614804, + "ast_hash": "bee6864e279ae5647c8caa5cd7f68638", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/UploadDialog.vue": { @@ -3015,8 +3015,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/ContractAttachmentPanel.vue": { - "mtime": 1780361239.006406, - "ast_hash": "809e546ba7cc93eabb6ac21e51ad66e3", + "mtime": 1781949239.1802342, + "ast_hash": "5f4374603d18124392ab2ef46530ed20", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/ExecuteDialog.vue": { @@ -3025,8 +3025,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/ProductSelector.vue": { - "mtime": 1780734752.6649964, - "ast_hash": "af818fb7cc559acd16625889598675ae", + "mtime": 1781949250.2480097, + "ast_hash": "8fbdd94e4592da505eb90e20700fbac0", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/ApprovalDialog.vue": { @@ -3040,28 +3040,28 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/ContractFormDialog.vue": { - "mtime": 1780744558.8950036, - "ast_hash": "867a1a847123f04fabc499cbaa80b1c3", + "mtime": 1781949250.2485342, + "ast_hash": "efd4b8e920f6a20b733e651e966c38f3", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/approval/index.vue": { - "mtime": 1780242127.0349941, - "ast_hash": "004d361e03ce7b5dab715eda01958c09", + "mtime": 1781966830.6175, + "ast_hash": "8b3365b344883406cb54882c187bea7f", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/index.vue": { - "mtime": 1780745860.5656252, - "ast_hash": "91547ee5f2bfef79a0db64015e70314b", + "mtime": 1781949250.248882, + "ast_hash": "3d0e701e7d1cfc9e0c6032c4e44eda1e", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/statistics.vue": { - "mtime": 1780242127.1123164, - "ast_hash": "4367ebce2eec04b9dc84a9bda9c8af56", + "mtime": 1781949250.2490945, + "ast_hash": "3c3565dd3be7f5612805093072146da8", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/detail.vue": { - "mtime": 1780242127.112505, - "ast_hash": "2613426d60116e2a6cfd064127d68db3", + "mtime": 1781949250.2492428, + "ast_hash": "2ec67849f608f0511d7bd4fa67ad7932", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/form.vue": { @@ -3070,18 +3070,18 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/ToContractDialog.vue": { - "mtime": 1780242127.1122932, - "ast_hash": "3c27c3b60c2142c5a3dd8b68f4c108b5", + "mtime": 1781949250.2493718, + "ast_hash": "a4410fe10d159211851932ea43a19244", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/ApproverSelector.vue": { - "mtime": 1780736321.3371294, - "ast_hash": "507ff66684636555fd1af458856bc2c0", + "mtime": 1781949223.05731, + "ast_hash": "cc110be2a14556959119607df7b93c0f", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/QuoteDetailDialog.vue": { - "mtime": 1780743237.0947838, - "ast_hash": "5f2b778308410e2a8703cc77307d1aad", + "mtime": 1781966054.6513355, + "ast_hash": "a49eeccaf8f4ba7c4fac431aa1c95ecb", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/VersionHistoryDialog.vue": { @@ -3095,23 +3095,23 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/QuoteFormPanel.vue": { - "mtime": 1780738001.719582, - "ast_hash": "f3ca17b40b8fd421bd9fba0946f35118", + "mtime": 1781949250.249686, + "ast_hash": "90eb6bf4c8d847d1c4957f50c42e55ad", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/ShareDialog.vue": { - "mtime": 1780242127.0351603, - "ast_hash": "32d0f77a45ae52fce1104c3aa92d4cc4", + "mtime": 1781949250.2499201, + "ast_hash": "647b7fe18be334c352c3a07e077f5f3f", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/ProductSelector.vue": { - "mtime": 1780734743.9511402, - "ast_hash": "29a7c29527a08791e4474771f62bf587", + "mtime": 1781949250.2501543, + "ast_hash": "1845e634e6a7d87da254bdeea4a246b7", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/ShareStatsTab.vue": { - "mtime": 1780219470.9881213, - "ast_hash": "0bddf7099b91700a0d7b419440de722d", + "mtime": 1781949250.2504742, + "ast_hash": "c8c76cbb437c7892f36dcc1544f3749f", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/quote/components/ApprovalDialog.vue": { @@ -3125,8 +3125,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/product/index.vue": { - "mtime": 1780722654.473951, - "ast_hash": "4e769b2a947c933b62a53f572f89ce2a", + "mtime": 1781966818.830617, + "ast_hash": "b3fc013257f8afa137a51e52fe8f8511", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/customer/index.vue": { @@ -3135,8 +3135,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/customer/FollowFormDialog.vue": { - "mtime": 1780201410.2794833, - "ast_hash": "84630dd9ca0cb9e03ce11b3323400e1a", + "mtime": 1781949223.058708, + "ast_hash": "385d5981783f94e12f3096d8652bba5d", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/customer/TransferDialog.vue": { @@ -3145,8 +3145,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/customer/CustomerDetailDialog.vue": { - "mtime": 1780743238.0559247, - "ast_hash": "06f2a71051daba50465d41c4459346a6", + "mtime": 1781949223.0590036, + "ast_hash": "e3bfddbb36e65879c565006feeb20ac5", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/customer/DealDialog.vue": { @@ -3210,8 +3210,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/dashboard/console/index.vue": { - "mtime": 1780108931.3776696, - "ast_hash": "ca5daa86bec4e9ac4a13412f8f25c25a", + "mtime": 1781949239.1847649, + "ast_hash": "1e241041453f237b4fb3004c7585666a", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/tenant/index.vue": { @@ -3235,8 +3235,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/user/detail.vue": { - "mtime": 1780114150.0506518, - "ast_hash": "e3042a98d40cdc82d362db21865428e5", + "mtime": 1781949250.251926, + "ast_hash": "09877a003a3d6947abca724fc12706ed", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/user/modules/user-dialog.vue": { @@ -3250,18 +3250,18 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/my-applications/index.vue": { - "mtime": 1780108931.3911653, - "ast_hash": "ad9f49267871962565f40b0462e38177", + "mtime": 1781950011.2663927, + "ast_hash": "74d94dc509f8d7c6df80164dc05fe9e0", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/task-pending/index.vue": { - "mtime": 1780108931.3914528, - "ast_hash": "61d84533e25300f2042cfd538defed89", + "mtime": 1781950009.1918924, + "ast_hash": "301a3d6dc9635938e01c210e14a5c3ce", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/task-completed/index.vue": { - "mtime": 1780108931.3913643, - "ast_hash": "23b8a979474b9d94dd16220ba4a32967", + "mtime": 1781950010.3734493, + "ast_hash": "94302951748d64078c0c324538cfae81", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/components/ProcessStatusTag.vue": { @@ -3270,13 +3270,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/components/ApprovalDialog.vue": { - "mtime": 1780108931.3908257, - "ast_hash": "506436406d3b308f920ab859ee9190a6", + "mtime": 1781950012.146825, + "ast_hash": "7f2ab7da51f1c284b716d76b5ee6d032", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/designer/FlowDesigner.vue": { - "mtime": 1780108931.3910577, - "ast_hash": "875c815c078ad98be53c24da98c0e1d3", + "mtime": 1781949301.477819, + "ast_hash": "7b1d105b0f1b9062b96257fb83b38323", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/workflow/process/index.vue": { @@ -3305,13 +3305,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/system/leave/index.vue": { - "mtime": 1780113440.6837296, - "ast_hash": "131eb72cb463cc4e012f747ab42d1f3d", + "mtime": 1781949239.1876547, + "ast_hash": "f533fd1bfa71360ce28b29d90090286c", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/index/index.vue": { - "mtime": 1780108931.3780975, - "ast_hash": "b08ef79eb075c5bd0e43ed256df52cd5", + "mtime": 1781964224.4177182, + "ast_hash": "e1d8bf6de43790c837dfc86d220b9691", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/exception/500/index.vue": { @@ -3395,8 +3395,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/core/MenuProcessor.ts": { - "mtime": 1780108931.367391, - "ast_hash": "6cf4f7e5b5e8b430a31c7f5d616d2c34", + "mtime": 1781963688.9929318, + "ast_hash": "587affc1047d298bd347f20de953b7e0", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/core/RouteRegistry.ts": { @@ -3420,13 +3420,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/modules/sqxp.ts": { - "mtime": 1780805380.7251096, - "ast_hash": "c82979781838cd96162c183c9030fea5", + "mtime": 1781963691.2224267, + "ast_hash": "c4f217a1c46f01b70514b9de6cbaf94d", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/modules/index.ts": { - "mtime": 1780113953.0906234, - "ast_hash": "34f1d46b80176f92fe868f5e8d47f77a", + "mtime": 1781124504.706855, + "ast_hash": "a462566c6b78eaba573af71917fe3f7b", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/modules/exception.ts": { @@ -3435,8 +3435,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/routes/staticRoutes.ts": { - "mtime": 1780108931.368311, - "ast_hash": "e75aae59ddf9e867ab536c1f2acd7d5d", + "mtime": 1781956118.6774666, + "ast_hash": "e118e4b3db49b324bd5773bab9aa620b", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/routes/asyncRoutes.ts": { @@ -5225,8 +5225,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/package.json": { - "mtime": 1780752670.7718465, - "ast_hash": "e93877b494638c840d003c67c3f6401a", + "mtime": 1781960299.9536493, + "ast_hash": "917d064ff039bbff3cd5f58ca84905cc", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/tsconfig.json": { @@ -5275,8 +5275,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/contract/components/ContractDetailDialog.vue": { - "mtime": 1780732654.0724363, - "ast_hash": "8c7dde4e9dd6dca0b391586e6d017aa7", + "mtime": 1781966054.9635043, + "ast_hash": "d4b937746cdbddc87dffa88390c1ed18", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/patch-el-tag-empty.ts": { @@ -5290,13 +5290,13 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/bx/format.ts": { - "mtime": 1780756590.4817746, - "ast_hash": "b96c952649dd029d16f36b6fcb8e4a76", + "mtime": 1782004688.2178204, + "ast_hash": "83a018bfdf8e8491cbaa17036083ff05", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/http/bx.ts": { - "mtime": 1780927066.5362859, - "ast_hash": "712f06d4a6ac255b5c193aaa321aed57", + "mtime": 1781957468.936572, + "ast_hash": "0b09d0e82d0ade2faba5d4739e248f2c", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/bx/template/ListToolbar.vue": { @@ -5365,8 +5365,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/bx/base/ApprovalFlowView.vue": { - "mtime": 1780758206.8546696, - "ast_hash": "d2dde9134386fd15e21a45e8fa1f5882", + "mtime": 1781949239.1700442, + "ast_hash": "c457c1b91477aaf586eba52144b585ab", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/bx/base/WorkflowNodeCell.vue": { @@ -5400,38 +5400,38 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/api/bx/index.ts": { - "mtime": 1780757619.4888484, - "ast_hash": "6c911937604a39d3f0153eb5def19ae8", + "mtime": 1782003405.4182634, + "ast_hash": "c5f3dc372904d4cdfabd601ffa43b0c9", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/payment/index.vue": { - "mtime": 1780763490.7587097, - "ast_hash": "5b5dd01ef0f3561130c293149aa3c8dd", + "mtime": 1782004196.9284816, + "ast_hash": "b39e1d93c1ae6e994197d10f2f523665", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/advance/apply/index.vue": { - "mtime": 1780762665.5609775, - "ast_hash": "f61237436c91367499d5f32df088c76c", + "mtime": 1782002349.2872643, + "ast_hash": "05cb2d6c821b2c339df3000009d48ffc", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/advance/approve/index.vue": { - "mtime": 1780757454.7531683, - "ast_hash": "447dd94608d177c8f637de6e7f34b36f", + "mtime": 1782002497.9501143, + "ast_hash": "c87b7beca75ca0d35f4b37271fd162fe", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/advance/issue/index.vue": { - "mtime": 1780763653.0696034, - "ast_hash": "554e505ffb23107026fdfd65957e4fda", + "mtime": 1782002743.0365322, + "ast_hash": "a4115f2c05b80054e3a6320bc3e3bb5d", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/reimburse/apply/index.vue": { - "mtime": 1780763416.0074606, - "ast_hash": "d8372ca9957c1b6a552b7e2ee074b434", + "mtime": 1782003408.6890657, + "ast_hash": "136edfb0d8ee85b277f65d0ab69be5f0", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/reimburse/approve/index.vue": { - "mtime": 1780763428.446719, - "ast_hash": "025d09b210a1f6239f46df60dd0c4a08", + "mtime": 1782003973.0543718, + "ast_hash": "c8c5ca8c137acb35c9506a26a804b7d0", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/workflow/advance/index.vue": { @@ -5445,18 +5445,18 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/view/all/index.vue": { - "mtime": 1780760362.8554158, - "ast_hash": "2c3af567ddf2fd568441454bef07f745", + "mtime": 1782004701.66296, + "ast_hash": "dc2873aec11f0e12ba9c33ff134dd7d4", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/view/todo/index.vue": { - "mtime": 1780761403.9424925, - "ast_hash": "f29ef9f6eeccc5742671475081b558b4", + "mtime": 1782004701.5413213, + "ast_hash": "31a61b9e9f3617704a9275dd5691648e", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/view/mine/index.vue": { - "mtime": 1780760362.6476135, - "ast_hash": "cf0d49d7921a16a4ef65cda5ad88446e", + "mtime": 1782004689.3739524, + "ast_hash": "e62afce28a977a0ed80df4de76f2a048", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/bx/expense-item/index.vue": { @@ -5475,18 +5475,18 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/utils/bx_codegen.py": { - "mtime": 1780750556.8829591, - "ast_hash": "ca25a3c561c4a1bfc566168d85b5f4de", + "mtime": 1782003134.9217057, + "ast_hash": "2e37e2761e88572428f8c929365f0592", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/bx_models.py": { - "mtime": 1780752873.936801, - "ast_hash": "53f1d2880a144b02074b7f734f12d92a", + "mtime": 1782003101.2739482, + "ast_hash": "bc5f248bedf86cdd26ecdce5b79c5153", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/reimburse.py": { - "mtime": 1780751335.1849163, - "ast_hash": "4d040ab00d9288b03a0e5448e54340cd", + "mtime": 1782003134.9076235, + "ast_hash": "64974aa62b4adb1d6c1a589e8d14821e", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/expense_item.py": { @@ -5510,8 +5510,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/common.py": { - "mtime": 1780750556.882896, - "ast_hash": "e97cb788e93cfac0688c0aa4cbd2cf93", + "mtime": 1782003128.9507782, + "ast_hash": "aec394241a7522c9e7f204c13988532a", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/bx/workflow.py": { @@ -5520,8 +5520,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/reimburse.py": { - "mtime": 1780758906.744178, - "ast_hash": "e6f722a54dcb0a1017d54334e59c731e", + "mtime": 1782003122.0505886, + "ast_hash": "29cf3eb2df77046ade94d0be0612695d", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/bx/expense_item.py": { @@ -5555,8 +5555,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/reimburse.py": { - "mtime": 1780758908.405342, - "ast_hash": "2e8ac33bc523284cfea413db1aaeaf6b", + "mtime": 1782003118.0391772, + "ast_hash": "b8607bf1ba11d54f34ef8fcc9a56e25a", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/expense_item.py": { @@ -5600,8 +5600,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/bx/base/ApprovalHistoryView.vue": { - "mtime": 1780758211.63801, - "ast_hash": "d8426be908f01e26aa7b3e7f0c1d2418", + "mtime": 1781949239.1698284, + "ast_hash": "6705e1720cce12ccfcccf202b68655ab", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/bx/approval_cycle.py": { @@ -5740,8 +5740,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/db/inventory/index.vue": { - "mtime": 1781021654.0072896, - "ast_hash": "a61bcb5f992e6f26637bb85cb68a65e8", + "mtime": 1781956324.4175217, + "ast_hash": "5a1b347dec6ddac6f60d204c7c57a667", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/db/vehicles/index.vue": { @@ -5755,8 +5755,8 @@ "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/http/db.ts": { - "mtime": 1780933950.356953, - "ast_hash": "cb50773a3600512d34f4f0e93e3310c0", + "mtime": 1781130991.653792, + "ast_hash": "94118f686260706620daea43bcf093a2", "semantic_hash": "" }, "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/db/DualBarChart.vue": { @@ -5858,5 +5858,390 @@ "mtime": 1780934647.3957603, "ast_hash": "e76bdfa8149ce7b0fb6f105bb8c2ee97", "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/models/pl_models.py": { + "mtime": 1781959945.481619, + "ast_hash": "a3fbec5e5a205c6616172ec879cbc109", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/plan.py": { + "mtime": 1781959945.4725616, + "ast_hash": "861435bc45b7459a3c43bd857e96e5f1", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/transport.py": { + "mtime": 1781962477.4220796, + "ast_hash": "a8d5d33e9cf6a3984b71b320294da21f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/__init__.py": { + "mtime": 1781916693.8507395, + "ast_hash": "7d27f7354d6f8139b8f81972a5d8b05e", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/freight.py": { + "mtime": 1781838563.015057, + "ast_hash": "a7e7f923d3d97dd63d7654a4740b9f7d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/inventory.py": { + "mtime": 1781880505.3088703, + "ast_hash": "671a5fd2f64243ea0f88fa7ef84f8822", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/plan.py": { + "mtime": 1781959510.2918782, + "ast_hash": "d809e27027334025bdfcc05cd48147bd", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/transport.py": { + "mtime": 1781958790.7459605, + "ast_hash": "c8a214703c5dbe51ddf01c55c4a40397", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/__init__.py": { + "mtime": 1781124088.860667, + "ast_hash": "2e2d8e313ccb7d3b215531f81fee273b", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/freight.py": { + "mtime": 1781838521.5632806, + "ast_hash": "fd3cf984b3569b059c122dfc62ed6ec7", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/base_data.py": { + "mtime": 1781912590.6313064, + "ast_hash": "42090a974a2b40f74ca2a1394e8e5a9b", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/inventory.py": { + "mtime": 1781880510.4276426, + "ast_hash": "3f57b7511133f5bb36eb760e6e1935fc", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/api/pl/index.ts": { + "mtime": 1781960000.1835015, + "ast_hash": "debd561cfaa4d2117bfd62c9bd29ccd4", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/transport/index.vue": { + "mtime": 1781838802.1613233, + "ast_hash": "2cf90064cf84fdf19c661159294dc67a", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/vehicle/index.vue": { + "mtime": 1781966055.86601, + "ast_hash": "c5bd0a2aff42afffa4a95c047baa97d4", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/driver/index.vue": { + "mtime": 1781838801.583202, + "ast_hash": "5e93909be86d90b56be743aae480afa1", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/plan/index.vue": { + "mtime": 1781959547.0094059, + "ast_hash": "45bdee54f8754379f2e1c2d645bf6bb5", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/freight/index.vue": { + "mtime": 1781838802.3867817, + "ast_hash": "0cccff711d61f157481609de656c08e0", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/carrier/index.vue": { + "mtime": 1781949223.0486753, + "ast_hash": "7099bdc45d754c0087ecf33e625353db", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/router/modules/pl.ts": { + "mtime": 1781962903.5958958, + "ast_hash": "dfdb40561ed1724185a0294208f16f8d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/plan/arrange.vue": { + "mtime": 1781951552.8185415, + "ast_hash": "3420c1a2d986f36d0b278defda6329ab", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/plan/detail.vue": { + "mtime": 1781951552.232337, + "ast_hash": "7df3f80f5e3bac0fa72870a737d46cae", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/plan/form.vue": { + "mtime": 1781837148.0560243, + "ast_hash": "64102c4de115fef3913a521b870fdf2f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/inventory/ledger.vue": { + "mtime": 1781838802.5765588, + "ast_hash": "765a1366a533ac4314d09be3e123ca3d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/inventory/document-reminder.vue": { + "mtime": 1781880712.0945241, + "ast_hash": "c1e18634416d5fd8a2f2eff6ed336eaf", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/scripts/check_pl_json_aliases.py": { + "mtime": 1781880510.6041746, + "ast_hash": "7785aed8717322eb71d5fd3b6a5b5c07", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/personnel/index.vue": { + "mtime": 1781966055.2295575, + "ast_hash": "982c536d997007419942ba22748f2ab6", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/schemas/pl/base_data.py": { + "mtime": 1781880398.231768, + "ast_hash": "e8be1270a98da742903f66335412ee01", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_personnel_service.py": { + "mtime": 1781880523.198346, + "ast_hash": "666502244e6a6d2360047fc5e17cb272", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_cert_service.py": { + "mtime": 1781912589.0693073, + "ast_hash": "20b2fb642a4d45150348862fb25ef45b", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-cert-form-list/index.vue": { + "mtime": 1781949223.0439093, + "ast_hash": "9f2682eb6c477bb02e4a653fe0c2621f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-cert-view-list/index.vue": { + "mtime": 1781949997.043425, + "ast_hash": "f1b24be2137a383fc204ec4553d62f1a", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-vehicle-personnel-view-list/index.vue": { + "mtime": 1781949223.0461066, + "ast_hash": "5ead1fccfd73778a8b000268fe5ed84d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/composables/usePlVehicleViewDetail.ts": { + "mtime": 1781914364.5972402, + "ast_hash": "f5cf00a96d22360a0a36bfcf31c9b7d1", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/pl-display.ts": { + "mtime": 1781962634.369476, + "ast_hash": "54874d78b2f1934fbb48b37c0c03bb0b", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-vehicle-view-panel/index.vue": { + "mtime": 1781949995.629496, + "ast_hash": "45d7ac945c7948a0b543917a4eec3025", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-carrier-view-dialog/index.vue": { + "mtime": 1781949994.7691498, + "ast_hash": "5e879c7fa06cfd490e6dae22c722b2a3", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/self-vehicle/index.vue": { + "mtime": 1781966055.7689826, + "ast_hash": "3cdef2b24f297e35428636347c61d8af", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-vehicle-personnel-view-list/PersonnelViewPanel.vue": { + "mtime": 1781949998.7342877, + "ast_hash": "21365a0199c5c22eb3519e44a88d6c37", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-form-dialog/index.vue": { + "mtime": 1781959941.9666793, + "ast_hash": "2b3653e2492fa20bc9af7b1091813c9f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_plan_service.py": { + "mtime": 1781959945.6835964, + "ast_hash": "3de46176cfd425e24762e8642296f5a2", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/composables/usePlFreightCalc.ts": { + "mtime": 1781959931.900705, + "ast_hash": "f007dadefce5852f76ec04039dba8c76", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/composables/usePlContractToPlan.ts": { + "mtime": 1781959932.9813125, + "ast_hash": "b00e61df86d1f28ac7738185efe36b57", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue": { + "mtime": 1781959936.1473446, + "ast_hash": "940afd1e164a75be5886ae7a948745ce", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/contract-selector/index.vue": { + "mtime": 1781940926.112713, + "ast_hash": "2cdce5dcdf86c120289199de1375ae86", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-vehicle-cert-personnel-tabs/index.vue": { + "mtime": 1781917942.0251882, + "ast_hash": "fee7a7543354120a0b7de3a04405e344", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-view-dialog/index.vue": { + "mtime": 1781959546.6613681, + "ast_hash": "641778630db23f6f08dc95c14f210017", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/composables/usePlToxicProductCertCheck.ts": { + "mtime": 1781941278.9839284, + "ast_hash": "c62de039298b81ae80f78135ca1921cb", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-cert-upload-dialog/index.vue": { + "mtime": 1781949223.0445127, + "ast_hash": "6866bedd8349a6587cf01d2869c34bdc", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-product-name-hazard-cell/index.vue": { + "mtime": 1781941237.0316732, + "ast_hash": "b0b27e378328665bf4cb4c939308f909", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-list-product-cell/index.vue": { + "mtime": 1781949223.043365, + "ast_hash": "38581292b8fe52f4356328cb6dc55e73", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-list-cert-cell/index.vue": { + "mtime": 1781949223.0436826, + "ast_hash": "5d955900051f379347705b30da00d097", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/pl/plan-cert/index.vue": { + "mtime": 1781950579.703631, + "ast_hash": "b9e83b0395619ff10c5ed4347c2001b7", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-arrange-dialog/index.vue": { + "mtime": 1781959952.505033, + "ast_hash": "25a7e92aadb1f136c45919237360c00f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/api/pl/public_transport.py": { + "mtime": 1781962479.5503988, + "ast_hash": "09fc59dd5cf6e6e8b9005afe443037cf", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/backend/app/services/pl_dibang_bridge_service.py": { + "mtime": 1781957097.7351863, + "ast_hash": "6f71c4f9b018cf6eda02f3563a52b52a", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/composables/usePlPlanViewDetail.ts": { + "mtime": 1781962634.3591664, + "ast_hash": "6cc72d47784070d888c772547cabbb90", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/http/public-pl.ts": { + "mtime": 1781956107.2759795, + "ast_hash": "4e7933ee7b39839ca7915d8765de866c", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/pl-plan-view-tabs/index.vue": { + "mtime": 1781962634.343154, + "ast_hash": "81ff25964afb18db6ad571cc7d95302d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/db/DbPoundSlipQrcodeDialog.vue": { + "mtime": 1781959284.0511696, + "ast_hash": "d35ed71a700523689b0d1750e2e667a9", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/api/pl/public-transport.ts": { + "mtime": 1781962479.9823456, + "ast_hash": "677f5eaaa05adb17442119694cd3aefc", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/public/pl/transport/index.vue": { + "mtime": 1781962494.991924, + "ast_hash": "e8f8114d2972c7b1a388c8dd1d7f56b1", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/layouts/PublicMobileShell.vue": { + "mtime": 1781956308.5166028, + "ast_hash": "35b0b76d8ef311c652791d99e35b8e5b", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/composables/usePlPlanArrangeActions.ts": { + "mtime": 1781959524.502294, + "ast_hash": "575e9d4891ba9990ca7b0ea9bef14568", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/router/portal-menu.ts": { + "mtime": 1781963654.5843496, + "ast_hash": "3e1860f1590a5626e3634424643fe70f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-portal-top-nav/index.vue": { + "mtime": 1781963667.0884023, + "ast_hash": "dad626acd272936693a91d2952af459d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/core/layouts/art-portal-header/index.vue": { + "mtime": 1781964350.6251695, + "ast_hash": "b5853a3d28b1a7ae6f72253ba2617f8e", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/router/menu-icon.ts": { + "mtime": 1781964609.1462579, + "ast_hash": "e2d1a8c83ba6a8021fcf6c7b145366f5", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/view-field-layout.ts": { + "mtime": 1782001826.7328744, + "ast_hash": "5c3ef4db87ca54eaf4f31bc190db681d", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/bx/view-kv.ts": { + "mtime": 1781966590.380941, + "ast_hash": "a31ebb3d45ce4847e063bc92caa1a67b", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/bx/base/BxViewKvGrid.vue": { + "mtime": 1781966589.0697408, + "ast_hash": "0b447ac7d6c4d14fbd4ec78a3a303bca", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue": { + "mtime": 1781966026.2861388, + "ast_hash": "c1359fc21c0bd40b2203d1e8bbce4c75", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/system-view-dialog/types.ts": { + "mtime": 1781965995.3821003, + "ast_hash": "fcd598a60044a992d939d5d105e63927", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/utils/crm/view-fields.ts": { + "mtime": 1781966819.1324215, + "ast_hash": "f558b1a68496025e32f35a2da481b058", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/bx/base/BxViewKvTable.vue": { + "mtime": 1782001834.998623, + "ast_hash": "a1257fde85f4bd8fe35f293f53e354f1", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/system-view-dialog/ViewKvTable.vue": { + "mtime": 1782002013.37774, + "ast_hash": "681ca7153a09d08b67720a8f98a2551f", + "semantic_hash": "" + }, + "/Users/zlwu/work/00code/shanxia2.0/web-admin/src/components/business/system-view-dialog/ViewKvTableCell.vue": { + "mtime": 1782001270.8232892, + "ast_hash": "f3e1d356cb9916a1c9220fc8cfaae886", + "semantic_hash": "" } } \ No newline at end of file diff --git a/openspec/changes/transport-plan-management/.openspec.yaml b/openspec/changes/transport-plan-management/.openspec.yaml new file mode 100644 index 000000000..2cb80411e --- /dev/null +++ b/openspec/changes/transport-plan-management/.openspec.yaml @@ -0,0 +1,2 @@ +schema: spec-driven +created: 2026-06-10 diff --git a/openspec/changes/transport-plan-management/design.md b/openspec/changes/transport-plan-management/design.md new file mode 100644 index 000000000..d859f52d1 --- /dev/null +++ b/openspec/changes/transport-plan-management/design.md @@ -0,0 +1,257 @@ +# 运输计划管理系统 - 技术设计 + +## Context + +### 项目背景 + +安庆山峡化工有限公司已建设 CRM 系统(线索/客户/商机/报价单/合同/产品管理)和地磅系统。现需建设**统一的运输计划管理系统**,将 CRM 合同与后续的运输、地磅、库存等环节串联,形成从合同→计划→运输→地磅→结算→归档的完整业务闭环。 + +### 技术栈 + +- **后端**:Python FastAPI + SQLAlchemy + MySQL +- **前端**:Vue 3 + Element Plus + TypeScript +- **对象存储**:MinIO(附件上传) +- **数据库**:MySQL 5.7+ + +### 约束条件 + +1. 按需求文档要求,所有计划相关表统一使用 `pl_` 前缀 +2. 遵循 shanxia2.0 工程规范(见 `openspec/changes/zkxw-engineering-standards/`) +3. 遵循 UI 规范(Fresh Mint 风格) +4. 数据暂不按归属公司隔离 +5. 地磅数据由现场人员手动填写,不对接硬件设备 + +### 利益相关者 + +- 计划专员A:发起计划 +- 计划专员B:核对订单 +- 计划专员C:运费结算确认 +- 司机:扫码回传 +- 现场工作人员:地磅确认 + +--- + +## Goals / Non-Goals + +**Goals:** + +1. 实现完整的计划管理流程:从合同发起→运输安排→状态流转→归档 +2. 支持运输审批流程(会签审批) +3. 实现运费结算功能 +4. 实现车辆和司机管理 +5. 实现盘存统计和库存预警 +6. 遵循工程规范和 UI 规范 + +**Non-Goals:** + +1. 不对接地磅硬件设备(手动填写数据) +2. 不实现复杂的移动端功能(司机端仅扫码回传) +3. 不实现电子签名 +4. 不实现多语言支持 +5. 不实现操作日志(暂不考虑) + +--- + +## Decisions + +### Decision 1: 数据库表命名规范 + +**选择**:统一使用 `pl_` 前缀 + +**理由**: +- 与现有 `sys_*`、`biz_*`、`wf_*` 命名体系保持一致 +- 便于识别和管理计划相关的表 +- 需求文档明确要求 + +**备选方案**: +- `plan_*` - 与业务语义更贴近,但不符合统一前缀规范 +- `transport_*` - 过于局限,无法覆盖库存等其他功能 + +--- + +### Decision 2: 审批流程实现方式 + +**选择**:自定义审批流程(不使用工作流引擎) + +**理由**: +- 需求简单:仅支持会签审批(1-2级) +- 不走复杂的工作流引擎 +- 审批规则灵活(用户选择审批人) +- 减少系统复杂度 + +**备选方案**: +- 使用 Warm-Flow 工作流引擎 - 过于复杂,不适合简单审批场景 +- 使用独立审批服务 - 增加系统复杂度,当前阶段不必要 + +--- + +### Decision 3: 计划与运输的关系设计 + +**选择**:采用中间关联表实现 N:N 关系 + +**理由**: +- 需求明确支持:1:1、1:N、N:1 三种场景 +- 中间表 `pl_plan_transport` 清晰表达关联关系 +- 便于后续扩展和维护 + +**表结构**: +``` +pl_plan_transport +├── plan_id (FK) +├── transport_id (FK) +├── create_time +└── del_flag +``` + +--- + +### Decision 4: 库存金额计算方式 + +**选择**:每批入库单独计算,不使用加权平均 + +**理由**: +- 需求明确要求:使用入库时的实际价格,每批单独计算 +- 财务合规性:每批货物成本清晰可追溯 +- 简化计算逻辑 + +--- + +### Decision 5: 二维码实现方式 + +**选择**:URL Scheme + 参数编码 + +**理由**: +- 简单可靠:二维码包含运输单ID和基本信息 +- 无需复杂加密:运输单ID已足够定位 +- 便于调试:可通过URL直接访问 + +**二维码内容**: +``` +{base_url}/transport/scan/{transport_id}?code={verify_code} +``` + +--- + +### Decision 6: 证件过期提醒实现 + +**选择**:定时任务每日检查 + +**理由**: +- 需求明确:过期前30天提醒 +- 定时任务简单可靠 +- 避免实时检查性能开销 + +--- + +## Risks / Trade-offs + +### Risk 1: 多系统数据同步 + +**风险**:CRM 合同变更可能导致已发起计划的数据不一致 + +**缓解措施**: +- 计划发起时冗余存储合同关键信息 +- 明确告知用户:合同变更后需手动同步 +- 在计划详情页显示合同信息快照 + +--- + +### Risk 2: 并发状态流转冲突 + +**风险**:多人同时操作同一计划可能导致状态不一致 + +**缓解措施**: +- 使用乐观锁(version_no 字段) +- 状态变更前检查当前状态 +- 前端操作后及时刷新状态 + +--- + +### Risk 3: 大量数据统计性能 + +**风险**:盘存统计涉及大量数据汇总,可能影响性能 + +**缓解措施**: +- 归档后的数据不会频繁变更,考虑使用物化视图或定时统计表 +- 限制查询时间范围 +- 大数据量场景考虑分库分表(未来扩展) + +--- + +## Migration Plan + +### Phase 1: 数据库变更 + +1. 创建新表(按依赖顺序): + - `pl_vehicle`、`pl_driver`、`pl_carrier`(基础数据) + - `pl_plan`、`pl_plan_product`(计划主表) + - `pl_transport`、`pl_transport_approval`(运输相关) + - `pl_freight_settlement`(运费结算) + - `pl_inventory`、`pl_inventory_warning`(库存相关) + +2. 初始化基础数据(车辆类型、承运商等) + +### Phase 2: 后端 API 开发 + +1. 基础 CRUD API(车辆、司机、承运商) +2. 计划管理 API +3. 运输管理 API +4. 审批流程 API +5. 运费结算 API +6. 盘存统计 API + +### Phase 3: 前端页面开发 + +1. 车辆管理页面 +2. 司机管理页面 +3. 计划管理页面 +4. 运输管理页面 +5. 运费结算页面 +6. 盘存统计页面 +7. 工作台(待办、预警) + +### Phase 4: 定时任务 + +1. 证件过期提醒任务 +2. 库存统计定时更新(如采用统计表方案) + +### Rollback Strategy + +- Phase 1:回滚数据库变更(DROP TABLE) +- Phase 2:删除新增的 API 路由 +- Phase 3:删除新增的前端页面和组件 +- Phase 4:禁用定时任务 + +--- + +## Open Questions + +### Q1: 审批人权限控制 + +**问题**:审批人选择时是否需要过滤有审批权限的用户? + +**建议**:暂不限制,所有用户都可被选择;后续按需细化权限 + +--- + +### Q2: 通知发送方式 + +**问题**:系统消息之外是否需要邮件/短信通知? + +**建议**:暂仅使用系统消息;后续按需扩展 + +--- + +### Q3: 统计报表导出 + +**问题**:盘存统计报表是否需要导出功能? + +**建议**:暂不实现;后续按需补充(见需求文档) + +--- + +### Q4: 框架合同调价函关联 + +**问题**:框架合同调价后,已发起计划的价格是否需要同步更新? + +**建议**:保持计划创建时的价格不变(价格快照);调价仅影响后续新建的计划 diff --git a/openspec/changes/transport-plan-management/proposal.md b/openspec/changes/transport-plan-management/proposal.md new file mode 100644 index 000000000..22489d541 --- /dev/null +++ b/openspec/changes/transport-plan-management/proposal.md @@ -0,0 +1,97 @@ +## Why + +安庆山峡化工有限公司已建设 CRM 系统(线索/客户/商机/报价单/合同/产品管理)和地磅系统。现需建设**统一的运输计划管理系统**,将 CRM 合同与后续的运输、地磅、库存等环节串联,形成从合同→计划→运输→地磅→结算→归档的完整业务闭环。 + +## What Changes + +### 新增功能模块 + +1. **计划管理(Plan Management)** + - 支持从 CRM 合同发起计划,自动带入合同基本信息、商品明细、结算方式等 + - 支持三种单据类型:直销单、入库单、出库单(根据供应商/目的地自动判断) + - 支持产品属性检查(易制毒/易制爆需上传购买证、运输证) + - 支持跟进状态流转(等客户确认→待采购→待发货/待出库→待收货/待入库→已收货/已入库→待归档→归档完成) + - 支持任意状态下取消计划 + +2. **运输管理(Transport Management)** + - 支持选择车辆类型(自有/承运商)和具体车辆 + - 支持生成二维码供司机/现场人员扫码 + - 支持司机扫码回传运输单据和数量 + - 支持运输安排状态管理(待安排/已安排) + +3. **运输审批(Transport Approval)** + - 支持简单审批流程(会签) + - 提交审批时用户选择审批人,按选择顺序依次审批 + - 状态流转:草稿→待执行→执行中→已完成→已取消 + - **不允许状态回退** + +4. **运费结算(Freight Settlement)** + - 支持按重量或按趟次计算运费 + - 支持多选运输单合并生成结算单 + - 结算流程:待提交→已提交→审核通过→已确认 + - 支持发票信息记录(发票号、开票日期、发票金额) + - 支持汇款凭证上传 + +5. **车辆与司机管理(Vehicle & Driver Management)** + - 车辆归属唯一性管理(自有 或 承运商) + - 司机档案管理(姓名、联系方式、驾驶证、行驶证、危化品证) + - 证件过期提醒(30天) + +6. **盘存统计(Inventory Statistics)** + - 库存台账(按产品汇总库存量和库存金额) + - 出入库明细与汇总报表 + - 运输统计(按运输公司/车辆统计趟次和运费) + - 库存预警(按产品设置阈值) + +### 数据库变更 + +- 新增 `pl_plan`(计划主表) +- 新增 `pl_plan_product`(计划产品明细表) +- 新增 `pl_transport`(运输信息表) +- 新增 `pl_transport_approval`(运输审批记录表) +- 新增 `pl_vehicle`(车辆表) +- 新增 `pl_driver`(司机表) +- 新增 `pl_freight_settlement`(运费结算表) +- 新增 `pl_inventory`(库存表) + +### API 变更 + +- 新增 `/api/plan/*`(计划管理相关接口) +- 新增 `/api/transport/*`(运输管理相关接口) +- 新增 `/api/vehicle/*`(车辆管理相关接口) +- 新增 `/api/driver/*`(司机管理相关接口) +- 新增 `/api/freight/*`(运费结算相关接口) +- 新增 `/api/inventory/*`(库存统计相关接口) + +## Capabilities + +### New Capabilities + +- `transport-plan`: 运输计划管理 — 计划创建、编辑、取消、状态流转 +- `transport-order`: 运输单管理 — 运输安排、二维码生成、扫码回传 +- `transport-approval`: 运输审批 — 审批流程、会签审批、审批记录 +- `freight-settlement`: 运费结算 — 结算单生成、发票管理、汇款凭证 +- `vehicle-driver`: 车辆司机管理 — 车辆档案、司机档案、证件提醒 +- `inventory-statistics`: 盘存统计 — 库存台账、出入库报表、运输统计、库存预警 + +### Modified Capabilities + +- 无(暂无对现有 capability 的需求变更) + +## Impact + +### 受影响系统 + +- **后端**:`backend/app/` — 新增计划、运输、车辆、司机、运费、库存相关模块 +- **前端**:`web-admin/src/` — 新增计划管理、运输管理、车辆管理等页面 +- **数据库**:新增 `pl_*` 系列表 + +### 外部依赖 + +- CRM 合同系统(`crm_contract`, `crm_contract_product`)— 读取合同信息 +- 地磅系统(`dibang_*`)— 接收出入库数据 +- MinIO 对象存储 — 附件上传 + +### 表前缀规范 + +按需求文档要求,所有计划相关表统一使用 `pl_` 前缀 diff --git a/openspec/changes/transport-plan-management/specs/freight-settlement/spec.md b/openspec/changes/transport-plan-management/specs/freight-settlement/spec.md new file mode 100644 index 000000000..8e9120a08 --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/freight-settlement/spec.md @@ -0,0 +1,82 @@ +# Freight Settlement (运费结算) + +## ADDED Requirements + +### Requirement: 运费计算 + +系统 SHALL 支持两种运费计算方式:按重量(默认)和按趟次。 + +#### Scenario: 按重量计算(默认) +- **WHEN** 用户选择"按重量"计算方式 +- **THEN** 系统 SHALL 默认使用此方式 +- **AND** 运费 SHALL 自动计算为:运输数量 × 运输单价 +- **AND** 计算结果 SHALL 允许用户手动调整 + +#### Scenario: 按趟次计算 +- **WHEN** 用户选择"按趟次"计算方式 +- **THEN** 系统 SHALL 要求用户手动填写运费金额 +- **AND** 系统 SHALL NOT 进行自动计算 + +--- + +### Requirement: 结算单生成 + +系统 SHALL 支持多选运输单合并生成结算单。 + +#### Scenario: 生成结算单 +- **WHEN** 用户选择多个运输单 +- **AND** 用户点击"生成结算单" +- **THEN** 系统 SHALL 合并选中运输单的运费 +- **AND** 系统 SHALL 生成结算单编号 +- **AND** 系统 SHALL 显示结算明细供用户确认 + +--- + +### Requirement: 结算流程 + +系统 SHALL 支持运费结算的完整流程。 + +#### Scenario: 结算流程 + +| 状态 | 说明 | +|------|------| +| 待提交 | 结算单创建后初始状态 | +| 已提交 | 用户提交结算单 | +| 审核通过 | 计划专员C审核通过 | +| 已确认 | 结算完成 | + +#### Scenario: 审核确认 +- **WHEN** 结算单状态为"已提交" +- **AND** 计划专员C点击"审核通过" +- **THEN** 系统 SHALL 将状态更新为"审核通过" +- **AND** 系统 SHALL 将状态更新为"已确认" + +--- + +### Requirement: 发票管理 + +系统 SHALL 支持发票信息记录。 + +#### Scenario: 发票信息记录 +- **WHEN** 用户填写发票信息 +- **THEN** 系统 SHALL 记录发票号 +- **AND** 系统 SHALL 记录开票日期 +- **AND** 系统 SHALL 记录发票金额 + +--- + +### Requirement: 汇款凭证 + +系统 SHALL 支持汇款凭证上传,且需精确对应到结算单。 + +#### Scenario: 汇款凭证上传 +- **WHEN** 用户上传汇款凭证 +- **THEN** 系统 SHALL 支持多个文件上传 +- **AND** 系统 SHALL 不限制文件类型 +- **AND** 系统 SHALL 允许选择对应的结算单 + +#### Scenario: 汇款凭证关联 +- **WHEN** 用户上传汇款凭证 +- **THEN** 系统 SHALL 要求选择对应的结算单 +- **AND** 系统 SHALL 记录关联关系 +- **AND** 系统 SHALL 支持查看关联的结算单详情 diff --git a/openspec/changes/transport-plan-management/specs/inventory-statistics/spec.md b/openspec/changes/transport-plan-management/specs/inventory-statistics/spec.md new file mode 100644 index 000000000..3e3f3704b --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/inventory-statistics/spec.md @@ -0,0 +1,127 @@ +# Inventory Statistics (盘存统计) + +## ADDED Requirements + +### Requirement: 库存统计口径 + +系统 SHALL 以归档完成的单据为准进行库存统计。 + +#### Scenario: 统计范围 +- **WHEN** 系统计算库存数据 +- **THEN** 系统 SHALL 仅统计归档完成的入库单和出库单 +- **AND** 系统 SHALL 排除草稿、审批中、执行中的单据 +- **AND** 系统 SHALL 排除已取消的单据 + +#### Scenario: 直销单排除 +- **WHEN** 系统计算库存 +- **THEN** 系统 SHALL 排除直销单类型 +- **AND** 直销单 SHALL NOT 影响库存数量 + +--- + +### Requirement: 库存台账 + +系统 SHALL 支持按产品汇总当前库存量和库存金额。 + +#### Scenario: 库存台账展示 +- **WHEN** 用户访问库存台账 +- **THEN** 系统 SHALL 按产品显示: + - 产品名称 + - 产品编号 + - 当前库存数量 + - 库存单位 + - 库存金额(使用入库时的实际价格,每批单独计算) + +#### Scenario: 库存金额计算 +- **WHEN** 系统计算库存金额 +- **THEN** 系统 SHALL 使用入库时的实际价格 +- **AND** 系统 SHALL NOT 使用加权平均 +- **AND** 每批入库 SHALL 单独计算金额 + +--- + +### Requirement: 出入库明细 + +系统 SHALL 支持按时间范围列出所有入库/出库记录。 + +#### Scenario: 出入库明细查询 +- **WHEN** 用户设置时间范围 +- **THEN** 系统 SHALL 显示该范围内的所有入库记录 +- **AND** 系统 SHALL 显示该范围内的所有出库记录 +- **AND** 每条记录 SHALL 包含: + - 单据编号 + - 单据类型(入库/出库) + - 产品信息 + - 数量 + - 单价 + - 金额 + - 时间 + +--- + +### Requirement: 出入库汇总 + +系统 SHALL 支持按月/周汇总各产品的入库量、出库量、净变化。 + +#### Scenario: 按月汇总 +- **WHEN** 用户选择"按月"汇总 +- **THEN** 系统 SHALL 按月分组显示 +- **AND** 系统 SHALL 显示每个产品的: + - 月度入库总量 + - 月度出库总量 + - 月度净变化 + +#### Scenario: 按周汇总 +- **WHEN** 用户选择"按周"汇总 +- **THEN** 系统 SHALL 按周分组显示 +- **AND** 系统 SHALL 显示每个产品的: + - 周度入库总量 + - 周度出库总量 + - 周度净变化 + +--- + +### Requirement: 运输统计 + +系统 SHALL 支持按运输公司/车辆统计运输趟次和运费。 + +#### Scenario: 按运输公司统计 +- **WHEN** 用户选择"按运输公司"统计 +- **THEN** 系统 SHALL 显示每个运输公司的: + - 运输趟次 + - 总运费 + - 平均运费 + +#### Scenario: 按车辆统计 +- **WHEN** 用户选择"按车辆"统计 +- **THEN** 系统 SHALL 显示每辆车的: + - 运输趟次 + - 总运费 + - 运输里程 + +--- + +### Requirement: 库存预警 + +系统 SHALL 支持按产品设置预警阈值并提供预警通知。 + +#### Scenario: 预警阈值设置 +- **WHEN** 管理员为产品设置预警阈值 +- **THEN** 系统 SHALL 支持设置: + - 最低库存预警 + - 最高库存预警(如适用) + +#### Scenario: 预警触发 +- **WHEN** 产品库存 ≤ 最低库存预警值 +- **THEN** 系统 SHALL 生成库存预警 +- **AND** 系统 SHALL 在工作台显示预警列表 +- **AND** 预警 SHALL 包含: + - 产品名称 + - 当前库存 + - 预警阈值 + - 预警类型(低于最低/高于最高) + +#### Scenario: 预警通知 +- **WHEN** 库存预警触发 +- **THEN** 系统 SHALL 通过系统消息通知相关人员 +- **AND** 通知 SHALL 包含产品信息和当前库存状态 diff --git a/openspec/changes/transport-plan-management/specs/pl-api-json/spec.md b/openspec/changes/transport-plan-management/specs/pl-api-json/spec.md new file mode 100644 index 000000000..d1960d1c8 --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/pl-api-json/spec.md @@ -0,0 +1,59 @@ +# PL API JSON 命名(运输计划模块) + +本能力补充 `openspec/changes/zkxw-engineering-standards/specs/api-conventions/spec.md` 中「JSON 字段命名」要求,**专用于** `app/api/pl/**` 与 `web-admin/src/api/pl/**`、`web-admin/src/views/pl/**`。 + +## ADDED Requirements + +### Requirement: 运输计划 API JSON 字段 camelCase 对齐 + +运输计划模块(路由前缀 `/api/transport/**`)的请求体、响应体及 Query 参数中,凡前端 TypeScript 使用 camelCase 的多词字段,后端 Pydantic Schema SHALL 通过 `Field(..., alias="camelCase")` 声明 JSON 别名,并设置 `model_config = {"populate_by_name": True}`(或 `ConfigDict(populate_by_name=True)`)。 + +路由层访问请求体 SHALL 使用 **Python snake_case 属性名**(如 `payload.carrier_name`),SHALL NOT 使用 `payload.carrierName`。 + +读接口(`response_model=...Read`)SHALL 为 ORM 列对应的 snake_case 字段配置 alias,使 FastAPI 默认 `response_model_by_alias=True` 输出 camelCase,与 `web-admin/src/api/pl/index.ts` 类型定义一致。 + +#### Scenario: 承运商新增 + +- **WHEN** 前端 `POST /api/transport/carrier` 请求体为 `{ "carrierName": "某某物流", "contactName": "张三", "status": "1" }` +- **THEN** `CarrierCreate` SHALL 校验通过(HTTP 非 422) +- **AND** 路由 SHALL 通过 `payload.carrier_name` 写入 `pl_carrier.carrier_name` + +#### Scenario: 计划新增含产品明细 + +- **WHEN** 前端 `POST /api/transport/plan/` 请求体含 `belongsCompany`、`planType`、`planDate` 及 `products[].productId` +- **THEN** `PlanCreate` / `PlanProductCreate` SHALL 校验通过 +- **AND** 响应 `PlanRead` / `PlanProductRead` 的 JSON 键 SHALL 为 `planNo`、`createTime` 等 camelCase + +#### Scenario: 运输安排 + +- **WHEN** 前端 `POST /api/transport/order/arrange/{planId}` 请求体为 `{ "vehicleId": "...", "driverId": "...", "freightType": "by_weight" }` +- **THEN** `TransportArrange` SHALL 校验通过 +- **AND** 路由 SHALL 使用 `payload.vehicle_id`、`payload.driver_id` 访问字段 + +#### Scenario: 列表分页 Query + +- **WHEN** 前端 GET 列表接口 Query 为 `page=1&pageSize=20&planType=direct` +- **THEN** 路由参数 SHALL 通过 `Query(..., alias="pageSize")` 或 Schema alias 正确解析 +- **AND** SHALL NOT 静默忽略 `pageSize` 导致始终使用默认每页 20 条 + +#### Scenario: 仅 snake_case 无 alias 视为缺陷 + +- **WHEN** `app/schemas/pl/**` 中 Write/Read Schema 的多词字段仅有 `snake_case` 属性名、无 `alias` +- **THEN** 属于本变更范围内的规范违反;前端发送 camelCase 时将返回 **422 Unprocessable Entity** +- **AND** 修复 SHALL 为后端补 alias,SHALL NOT 要求 web-admin 改为 snake_case + +### Requirement: 运输计划 Schema 变更门禁 + +修改 `app/schemas/pl/**` 或新增 PL 写接口时,提交前 SHALL 运行 `python backend/scripts/check_pl_json_aliases.py`;脚本失败 SHALL 阻塞合并。 + +Schema 覆盖范围 SHALL 至少包括: + +| 路径 | 说明 | +|------|------| +| `app/schemas/pl/__init__.py` | 承运商、车辆、司机 | +| `app/schemas/pl/plan.py` | 计划与产品明细 | +| `app/schemas/pl/transport.py` | 运输、安排、审批 | +| `app/schemas/pl/freight.py` | 运费结算 | +| `app/schemas/pl/inventory.py` | 库存、证件提醒 | + +参考实现:`app/schemas/db/weighing.py`(地磅模块 alias 模式)。 diff --git a/openspec/changes/transport-plan-management/specs/transport-approval/spec.md b/openspec/changes/transport-plan-management/specs/transport-approval/spec.md new file mode 100644 index 000000000..2d9a41f3b --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/transport-approval/spec.md @@ -0,0 +1,75 @@ +# Transport Approval (运输审批) + +## ADDED Requirements + +### Requirement: 简单审批流程 + +系统 SHALL 支持简单审批流程(会签),允许用户选择审批人并按顺序审批。 + +#### Scenario: 提交审批 +- **WHEN** 用户点击"提交审批" +- **THEN** 系统 SHALL 显示审批人选择界面 +- **AND** 用户 SHALL 选择审批人(可选择多人) +- **AND** 审批顺序 SHALL 按照用户选择时的排序 + +#### Scenario: 审批规则 +- **WHEN** 用户提交审批 +- **THEN** 系统 SHALL 使用会签方式审批(所有人审批通过才算通过) +- **AND** 系统 SHALL 按选择顺序依次审批 +- **AND** 每一级审批完成后才能进入下一级 + +--- + +### Requirement: 运输计划状态流转 + +系统 SHALL 支持运输计划的完整状态流转,且不允许状态回退。 + +#### Scenario: 状态流转(不允许回退) +- **WHEN** 运输计划处于某状态 +- **THEN** 系统 SHALL 仅允许向前流转至下一状态 +- **AND** 系统 SHALL 禁止回退至已过的状态 +- **WHEN** 运输计划状态流转至"已完成"或"已取消" +- **THEN** 系统 SHALL 禁止任何状态变更 + +#### Scenario: 状态流转详情 + +| 当前状态 | 下一状态 | 说明 | +|---------|---------|------| +| 草稿 | 待执行/已取消 | 提交审批后进入待执行 | +| 待执行 | 执行中/已取消 | 开始执行后进入执行中 | +| 执行中 | 已完成/已取消 | 执行完成后进入已完成 | +| 已完成 | - | 终态,不可变更 | +| 已取消 | - | 终态,不可变更 | + +--- + +### Requirement: 审批记录 + +系统 SHALL 记录完整的审批历史。 + +#### Scenario: 审批记录内容 +- **WHEN** 审批人完成审批 +- **THEN** 系统 SHALL 记录审批人信息(id, name) +- **AND** 系统 SHALL 记录审批结果(approved/rejected) +- **AND** 系统 SHALL 记录审批意见 +- **AND** 系统 SHALL 记录审批时间 +- **AND** 系统 SHALL 记录审批耗时 + +#### Scenario: 审批拒绝处理 +- **WHEN** 审批人拒绝审批 +- **THEN** 系统 SHALL 将计划状态回退至"草稿" +- **AND** 系统 SHALL 通知申请人审批被拒绝 +- **AND** 系统 SHALL 保留审批拒绝记录 + +--- + +### Requirement: 审批人选择 + +系统 SHALL 支持从组织架构或用户列表中选择审批人。 + +#### Scenario: 选择审批人 +- **WHEN** 用户点击"选择审批人" +- **THEN** 系统 SHALL 显示用户选择器 +- **AND** 用户 SHALL 能搜索和选择多个用户 +- **AND** 用户 SHALL 能调整审批顺序 +- **AND** 系统 SHALL 记住用户的选择顺序 diff --git a/openspec/changes/transport-plan-management/specs/transport-order/spec.md b/openspec/changes/transport-plan-management/specs/transport-order/spec.md new file mode 100644 index 000000000..0b8f2d319 --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/transport-order/spec.md @@ -0,0 +1,109 @@ +# Transport Order (运输单管理) + +## ADDED Requirements + +### Requirement: 运输安排 + +系统 SHALL 支持运输安排,包括选择车辆类型、车辆、司机,填写运输信息。 + +#### Scenario: 选择自有车辆 +- **WHEN** 用户选择车辆类型为"自有" +- **THEN** 系统 SHALL 仅显示自有车辆列表 +- **AND** 用户选择具体车辆后 +- **THEN** 系统 SHALL 自动带出该车辆的默认司机 + +#### Scenario: 选择承运商车辆 +- **WHEN** 用户选择车辆类型为"承运商" +- **THEN** 系统 SHALL 仅显示承运商车辆列表 +- **AND** 用户选择承运商后 +- **THEN** 系统 SHALL 仅显示该承运商名下的车辆 +- **AND** 用户选择具体车辆后 +- **THEN** 系统 SHALL 自动带出该车辆的默认司机 + +#### Scenario: 运输信息填写 +- **WHEN** 用户完成运输安排 +- **THEN** 系统 SHALL 生成运输编号(格式:`SXYS######`,每月重置) +- **AND** 系统 SHALL 将运输安排状态从"待安排"更新为"已安排" + +--- + +### Requirement: 车辆归属唯一性 + +系统 SHALL 确保同一辆车只能属于一种类型(自有 或 承运商)。 + +#### Scenario: 车辆归属约束 +- **WHEN** 管理员新增或编辑车辆 +- **THEN** 系统 SHALL 要求选择车辆归属类型(自有/承运商) +- **AND** 系统 SHALL 确保同一辆车只能选择一个归属类型 +- **AND** 系统 SHALL 禁止同一车牌号同时属于自有和承运商 + +--- + +### Requirement: 二维码生成与分发 + +系统 SHALL 支持生成二维码供司机/现场人员扫码。 + +#### Scenario: 二维码生成 +- **WHEN** 用户点击"生成二维码" +- **THEN** 系统 SHALL 生成包含运输单信息的二维码 +- **AND** 系统 SHALL 显示有效期设置(默认不设期限,用户可手动填写) +- **AND** 系统 SHALL 提供下载二维码图片功能 + +#### Scenario: 二维码分发 +- **WHEN** 用户下载二维码图片 +- **THEN** 系统 SHALL 提示用户截图发送给司机/现场人员 +- **AND** 二维码 SHALL 包含运输单号、产品信息、目的地等关键信息 + +--- + +### Requirement: 司机扫码回传 + +系统 SHALL 支持司机扫描二维码回传运输信息,无需登录。 + +#### Scenario: 司机扫码 +- **WHEN** 司机扫描运输单二维码 +- **THEN** 系统 SHALL 允许无需登录即可访问回传页面 +- **AND** 系统 SHALL 允许回传以下信息: + - 运输单据照片 + - 运输数量 + - 其他信息(备注等) + +#### Scenario: 现场人员扫码 +- **WHEN** 现场人员扫描二维码 +- **THEN** 系统 SHALL 要求登录验证权限 +- **AND** 系统 SHALL 显示完整的单据详情供查看 + +--- + +### Requirement: 运输与计划关系 + +系统 SHALL 支持计划与运输的 N:N 关系。 + +#### Scenario: 1:1 关系 +- **WHEN** 一个计划对应一趟运输 +- **THEN** 系统 SHALL 允许直接关联 + +#### Scenario: 1:N 关系(分车装运) +- **WHEN** 一个计划需要多趟运输(分车装运) +- **THEN** 系统 SHALL 允许创建多个运输单关联同一计划 + +#### Scenario: N:1 关系(拼车) +- **WHEN** 多个计划合并一趟运输(拼车) +- **THEN** 系统 SHALL 允许一个运输单关联多个计划 + +--- + +### Requirement: 待入库/待出库单据同步 + +系统 SHALL 支持待入库/待出库单据的自动同步。 + +#### Scenario: 单据自动生成 +- **WHEN** 计划状态流转至"待入库"或"待出库" +- **THEN** 系统 SHALL 自动生成地磅单 +- **AND** 系统 SHALL 通过系统消息通知现场工作人员 +- **AND** 系统 SHALL 支持复制文本通过微信发送 + +#### Scenario: 地磅数据录入 +- **WHEN** 现场工作人员确认地磅数据 +- **THEN** 系统 SHALL 允许手动填写地磅数据(不对接硬件) +- **AND** 系统 SHALL 允许上传单据和附件 diff --git a/openspec/changes/transport-plan-management/specs/transport-plan/spec.md b/openspec/changes/transport-plan-management/specs/transport-plan/spec.md new file mode 100644 index 000000000..29800a3d3 --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/transport-plan/spec.md @@ -0,0 +1,190 @@ +# Transport Plan (运输计划管理) + +## ADDED Requirements + +### Requirement: 计划可从 CRM 合同发起 + +系统 SHALL 支持从 CRM 合同发起运输计划,自动带入合同基本信息、商品明细、结算方式等数据。 + +#### Scenario: 从合同发起计划 +- **WHEN** 用户选择 CRM 合同并点击"发起计划" +- **THEN** 系统 SHALL 自动带入客户信息(customer_id, customer_name) +- **AND** 系统 SHALL 自动带入联系人信息(contact_name, contact_mobile) +- **AND** 系统 SHALL 自动带入甲方/乙方信息(party_a*, party_b*) +- **AND** 系统 SHALL 自动带入合同有效期(start_date, end_date) +- **AND** 系统 SHALL 自动带入结算方式(settlement_method) +- **AND** 系统 SHALL 自动带入商品明细(从 crm_contract_product 读取 product_id, product_name, model, unit, price) +- **AND** 系统 SHALL 自动带入送货方式(delivery_method) + +#### Scenario: 合同关联字段映射 + +| CRM 合同字段 | 计划字段 | +|-------------|---------| +| customer_id | customer_id | +| customer_name | customer_name | +| contact_name | contact_name | +| contact_mobile | contact_mobile | +| party_a* | party_a* | +| party_b* | party_b* | +| start_date | plan_start_date | +| end_date | plan_end_date | +| settlement_method | settlement_method | + +--- + +### Requirement: 单据类型自动判断 + +系统 SHALL 根据供应商和目的地自动判断单据类型(直销单/入库单/出库单)。 + +#### Scenario: 判断为入库单 +- **WHEN** 目的地 = "安庆山峡" OR 目的地 = "安徽云栋" +- **THEN** 系统 SHALL 将单据类型设置为"入库单" + +#### Scenario: 判断为出库单 +- **WHEN** 供应商 = "安庆山峡" OR 供应商 = "安徽云栋" +- **THEN** 系统 SHALL 将单据类型设置为"出库单" + +#### Scenario: 判断为直销单 +- **WHEN** 供应商 ≠ "安庆山峡" AND 供应商 ≠ "安徽云栋" AND 目的地 ≠ "安庆山峡" AND 目的地 ≠ "安徽云栋" +- **THEN** 系统 SHALL 将单据类型设置为"直销单" + +--- + +### Requirement: 产品属性检查 + +系统 SHALL 在安排运输前检查产品属性,易制毒/易制爆产品必须上传购买证和运输证。 + +#### Scenario: 易制毒产品需上传证件 +- **WHEN** 产品属性包含"易制毒"且用户点击"安排运输" +- **THEN** 系统 SHALL 检查是否已上传购买证 +- **AND** 系统 SHALL 检查是否已上传运输证 +- **IF** 任一证件缺失 +- **THEN** 系统 SHALL 阻止安排运输并提示用户上传缺失证件 + +#### Scenario: 易制爆产品需上传证件 +- **WHEN** 产品属性包含"易制爆"且用户点击"安排运输" +- **THEN** 系统 SHALL 检查是否已上传购买证 +- **AND** 系统 SHALL 检查是否已上传运输证 +- **IF** 任一证件缺失 +- **THEN** 系统 SHALL 阻止安排运输并提示用户上传缺失证件 + +#### Scenario: 普通产品无需证件 +- **WHEN** 产品不包含"易制毒"和"易制爆"属性 +- **THEN** 系统 SHALL 允许直接安排运输,无需上传证件 + +--- + +### Requirement: 跟进状态流转 + +系统 SHALL 支持跟进状态的完整流转,并支持任意状态下取消。 + +#### Scenario: 直销单状态流转 +- **WHEN** 直销单状态为"等客户确认"且用户确认要货 +- **THEN** 系统 SHALL 将状态流转至"待采购" +- **WHEN** 直销单状态为"待采购"且采购完成 +- **THEN** 系统 SHALL 将状态流转至"待发货" +- **WHEN** 直销单状态为"待发货"且货物发出 +- **THEN** 系统 SHALL 将状态流转至"待收货" +- **WHEN** 直销单状态为"待收货"且客户确认收货 +- **THEN** 系统 SHALL 将状态流转至"待归档" +- **WHEN** 直销单状态为"待归档"且用户点击归档 +- **THEN** 系统 SHALL 将状态流转至"归档完成" + +#### Scenario: 入库单状态流转 +- **WHEN** 入库单状态为"待采购"且采购完成 +- **THEN** 系统 SHALL 将状态流转至"待发货" +- **WHEN** 入库单状态为"待发货"且货物到达 +- **THEN** 系统 SHALL 将状态流转至"待入库" +- **WHEN** 入库单状态为"待入库"且地磅确认入库 +- **THEN** 系统 SHALL 将状态流转至"已入库" +- **WHEN** 入库单状态为"已入库"且用户点击归档 +- **THEN** 系统 SHALL 将状态流转至"归档完成" + +#### Scenario: 出库单状态流转 +- **WHEN** 出库单状态为"等客户确认"且客户确认要货 +- **THEN** 系统 SHALL 将状态流转至"待出库" +- **WHEN** 出库单状态为"待出库"且货物出库 +- **THEN** 系统 SHALL 将状态流转至"已出库" +- **WHEN** 出库单状态为"已出库"且客户确认收货 +- **THEN** 系统 SHALL 将状态流转至"已收货" +- **WHEN** 出库单状态为"已收货"且用户点击归档 +- **THEN** 系统 SHALL 将状态流转至"归档完成" + +#### Scenario: 任意状态下取消计划 +- **WHEN** 用户在任意跟进状态下点击"取消计划" +- **THEN** 系统 SHALL 将计划状态设置为"已取消" +- **AND** 系统 SHALL 保留运输信息并标记为"已取消" +- **AND** 系统 SHALL 禁止该计划继续流转 + +--- + +### Requirement: 归档操作 + +系统 SHALL 支持归档操作,归档后自动更新归档状态和完成状态。 + +#### Scenario: 归档操作 +- **WHEN** 计划处于"待归档"状态且用户点击"归档" +- **THEN** 系统 SHALL 将归档状态从"未归档"更新为"已归档" +- **AND** 系统 SHALL 将完成状态从"否"更新为"是" +- **AND** 系统 SHALL 禁止该计划继续修改 + +--- + +### Requirement: 计划编号规则 + +系统 SHALL 按照规则自动生成计划订单编号。 + +#### Scenario: 计划编号生成 +- **WHEN** 用户新建计划 +- **THEN** 系统 SHALL 生成编号格式为 `SXDDHYYYYMMDD######` +- **WHEREIN** `YYYYMMDD` 为当前日期 +- **AND** `######` 为当日6位序号(从000001开始,每日重置) + +--- + +### Requirement: 金额计算规则 + +系统 SHALL 支持入库金额和出库金额的自动计算。 + +#### Scenario: 入库金额计算 +- **WHEN** 用户填写入库数量或修改入库价 +- **THEN** 系统 SHALL 自动计算入库金额 = 入库数 × 入库价 +- **AND** 入库价默认值为合同价格,支持后续修改 + +#### Scenario: 出库金额计算 +- **WHEN** 用户填写出库数量或修改出库价 +- **THEN** 系统 SHALL 自动计算出库金额 = 出库数 × 出库价 + +--- + +### Requirement: 通知信息生成 + +系统 SHALL 按模板生成通知信息,通知信息不可编辑。 + +#### Scenario: 通知信息模板 +- **WHEN** 系统生成通知信息 +- **THEN** 系统 SHALL 使用以下模板格式: + +``` +计划号:{plan_no} +企业名称:{customer_name} +提货单位:{destination} +到货时间:{delivery_date} +药品名称:{product_name} +到货吨位:{quantity}吨 +备注:{remark} +``` + +- **AND** 用户 SHALL NOT 直接编辑通知信息内容 + +--- + +### Requirement: Web 管理端按钮须携带图标 + +运输计划模块 `web-admin/src/views/pl/**`(承运商管理、车辆管理、司机管理、运输计划、运输管理、运费结算、库存台账、证件提醒及 form/detail/arrange 子页)SHALL 遵循 OpenSpec `ui-conventions` 中 **「按钮须携带图标」** Requirement:凡带可见文案的 `el-button` 须在文字前方包含 ``,图标从 `@element-plus/icons-vue` 显式导入。 + +#### Scenario: 运输计划菜单页面按钮展示 + +- **WHEN** 用户打开运输计划菜单下任一列表、表单或详情页 +- **THEN** 筛选区「搜索」「重置」、工具栏「新增」、操作列「查看/编辑/删除/安排运输/提交/审核/处理」、弹窗与页脚「取消/确定/返回」等带文案按钮 SHALL 均携带语义图标 +- **THEN** SHALL NOT 出现仅有文字、无 `` 的按钮 diff --git a/openspec/changes/transport-plan-management/specs/vehicle-driver/spec.md b/openspec/changes/transport-plan-management/specs/vehicle-driver/spec.md new file mode 100644 index 000000000..832f62b85 --- /dev/null +++ b/openspec/changes/transport-plan-management/specs/vehicle-driver/spec.md @@ -0,0 +1,74 @@ +# Vehicle, Personnel & Certificate(车辆/人员/证书管理) + +## ADDED Requirements + +### Requirement: 车辆档案管理 + +系统 SHALL 支持车辆档案的完整管理,含关联人员子表与车辆证书子表。 + +#### Scenario: 车辆信息维护 +- **WHEN** 管理员新增或编辑车辆 +- **THEN** 系统 SHALL 记录车牌号(唯一)、车辆类型(自有/承运商)、承运商(类型为承运商时)、载重、车辆状态(可用/维修中/报废)、备注 +- **AND** 系统 SHALL 在车辆弹窗内以子表维护关联人员(姓名、手机号非必填、年龄、人员类型、关联备注、默认司机) +- **AND** 系统 SHALL 在车辆弹窗内以子表维护车辆证书(证书名称、证号、有效期、提前提醒天数,默认 30) + +#### Scenario: 车辆归属管理 +- **WHEN** 管理员编辑车辆归属类型 +- **THEN** 系统 SHALL 确保同一辆车只能属于一种类型(自有或承运商) +- **AND** 系统 SHALL 禁止同一车牌号重复 + +#### Scenario: 车辆关联人员 +- **WHEN** 管理员在车辆弹窗维护关联人员子表 +- **THEN** 系统 SHALL 支持每车多人,人员类型为司机或押运员 +- **AND** 系统 SHALL 确保每辆车最多一名默认司机(仅 role=driver 的行可设为默认) +- **AND** 系统 SHALL 在保存时 upsert 人员主数据(有手机号时按手机号去重,无手机号时按姓名弱匹配) + +--- + +### Requirement: 人员档案管理 + +系统 SHALL 支持人员(司机、押运员等)档案的独立管理。 + +#### Scenario: 人员信息维护 +- **WHEN** 管理员新增或编辑人员 +- **THEN** 系统 SHALL 记录姓名(必填)、手机号(非必填)、年龄、身份证号、在职状态、备注 +- **AND** 系统 SHALL 以子表维护人员证书(证书名称、证号、有效期、提前提醒天数,默认 30) +- **AND** 系统 SHALL NOT 在人员表写死驾驶证/行驶证/危化品证等字段 + +#### Scenario: 人员与车辆绑定 +- **WHEN** 管理员在车辆弹窗或人员管理中维护绑定关系 +- **THEN** 系统 SHALL 允许同一人员关联多辆车、同一车辆关联多人 +- **AND** 系统 SHALL 在运输安排选择车辆后自动带出该车的默认司机 +- **AND** 系统 SHALL 在安排运输时司机下拉仅展示该车 role=driver 的关联人员 + +--- + +### Requirement: 动态证书管理 + +系统 SHALL 使用独立证书表管理车辆与人员的各类证书。 + +#### Scenario: 证书实例维护 +- **WHEN** 管理员为车辆或人员添加证书 +- **THEN** 系统 SHALL 记录 owner_type(vehicle/personnel)、证书名称、证号、有效期、remind_days(默认 30)、附件 +- **AND** 系统 SHALL 允许同一主体持有多个证书,证种可动态增删 +- **AND** 证书附件 SHALL 使用 OpenSpec「附件上传卡片化布局」:`AttachmentUploadField` 组件,多附件以逗号分隔 URL 存入 `attachment_urls`;支持上传、下载、图片预览 + +#### Scenario: 证书到期提醒 +- **WHEN** 证书 expire_date 非空且剩余天数 ≤ remind_days +- **THEN** 系统 SHALL 通过定时任务扫描 pl_cert 生成 pl_document_reminder +- **AND** 提醒 SHALL 覆盖车辆与人员证书 +- **AND** 提醒列表 SHALL 展示主体类型、主体名称(车牌/姓名)、证书名称、到期日期、剩余天数 + +--- + +### Requirement: 承运商管理 + +系统 SHALL 支持承运商档案管理(不变)。 + +#### Scenario: 承运商信息维护 +- **WHEN** 管理员新增承运商 +- **THEN** 系统 SHALL 记录承运商名称、联系人、联系电话、合作状态(合作中/已终止) + +#### Scenario: 承运商车辆筛选 +- **WHEN** 用户选择承运商后安排运输 +- **THEN** 系统 SHALL 仅显示该承运商名下的车辆 diff --git a/openspec/changes/transport-plan-management/tasks.md b/openspec/changes/transport-plan-management/tasks.md new file mode 100644 index 000000000..473bec41b --- /dev/null +++ b/openspec/changes/transport-plan-management/tasks.md @@ -0,0 +1,200 @@ +# 运输计划管理系统 - 实施任务清单 + +## 1. 数据库设计与创建 + +### 1.1 基础数据表 + +- [x] 1.1.1 创建承运商表 `pl_carrier` +- [x] 1.1.2 创建车辆表 `pl_vehicle` +- [x] 1.1.3 创建司机表 `pl_driver` +- [x] 1.1.4 创建证件提醒表 `pl_document_reminder` + +### 1.2 计划管理表 + +- [x] 1.2.1 创建计划主表 `pl_plan` +- [x] 1.2.2 创建计划产品明细表 `pl_plan_product` +- [ ] 1.2.3 创建计划变更记录表 `pl_plan_change` + +### 1.3 运输管理表 + +- [x] 1.3.1 创建运输表 `pl_transport` +- [x] 1.3.2 创建计划-运输关联表 `pl_plan_transport` +- [x] 1.3.3 创建运输审批记录表 `pl_transport_approval` + +### 1.4 运费结算表 + +- [x] 1.4.1 创建运费结算表 `pl_freight_settlement` +- [ ] 1.4.2 创建汇款凭证表 `pl_remittance_voucher` + +### 1.5 库存管理表 + +- [x] 1.5.1 创建库存表 `pl_inventory` +- [x] 1.5.2 创建库存预警表 `pl_inventory_warning` + +--- + +## 2. 后端 API 开发 + +### 2.1 基础数据 API + +- [x] 2.1.1 实现承运商 CRUD API (`/api/carrier/*`) +- [x] 2.1.2 实现车辆 CRUD API (`/api/vehicle/*`) +- [x] 2.1.3 实现司机 CRUD API (`/api/driver/*`) +- [x] 2.1.4 实现车辆列表 API(含承运商筛选) +- [x] 2.1.5 实现司机列表 API(含车辆绑定信息) + +### 2.2 计划管理 API + +- [x] 2.2.1 实现计划列表 API (`/api/plan/list`) +- [x] 2.2.2 实现计划详情 API (`/api/plan/{id}`) +- [x] 2.2.3 实现从合同发起计划 API (`/api/plan/create-from-contract`) +- [x] 2.2.4 实现计划编辑 API (`/api/plan/{id}`, PUT) +- [x] 2.2.5 实现计划取消 API (`/api/plan/{id}/cancel`) +- [x] 2.2.6 实现计划归档 API (`/api/plan/{id}/archive`) +- [x] 2.2.7 实现跟进状态流转 API (`/api/plan/{id}/status`) +- [x] 2.2.8 实现单据类型自动判断逻辑 +- [x] 2.2.9 实现产品属性检查逻辑(易制毒/易制爆) +- [x] 2.2.10 实现金额自动计算逻辑(入库/出库金额) + +### 2.3 运输管理 API + +- [x] 2.3.1 实现运输安排 API (`/api/transport/arrange`) +- [x] 2.3.2 实现运输列表 API (`/api/transport/list`) +- [x] 2.3.3 实现运输详情 API (`/api/transport/{id}`) +- [x] 2.3.4 实现二维码生成 API (`/api/transport/{id}/qrcode`) +- [x] 2.3.5 实现司机扫码回传 API (`/api/transport/scan/feedback`) +- [x] 2.3.6 实现计划-运输关联管理 API (`/api/plan-transport/*`) + +### 2.4 审批流程 API + +- [x] 2.4.1 实现提交审批 API (`/api/transport/{id}/submit-approval`) +- [x] 2.4.2 实现审批 API (`/api/approval/{id}`) +- [x] 2.4.3 实现审批列表 API (`/api/approval/list`) +- [x] 2.4.4 实现审批详情 API (`/api/approval/{id}/detail`) + +### 2.5 运费结算 API + +- [x] 2.5.1 实现结算单生成 API (`/api/freight/generate`) +- [x] 2.5.2 实现结算单列表 API (`/api/freight/list`) +- [x] 2.5.3 实现结算单详情 API (`/api/freight/{id}`) +- [x] 2.5.4 实现结算单提交 API (`/api/freight/{id}/submit`) +- [x] 2.5.5 实现结算单审核 API (`/api/freight/{id}/approve`) +- [x] 2.5.6 实现发票信息记录 API (`/api/freight/{id}/invoice`) +- [x] 2.5.7 实现汇款凭证上传 API (`/api/freight/{id}/voucher`) + +### 2.6 盘存统计 API + +- [x] 2.6.1 实现库存台账 API (`/api/inventory/ledger`) +- [x] 2.6.2 实现出入库明细 API (`/api/inventory/details`) +- [x] 2.6.3 实现出入库汇总 API (`/api/inventory/summary`) +- [x] 2.6.4 实现运输统计 API (`/api/inventory/transport-stats`) +- [x] 2.6.5 实现库存预警列表 API (`/api/inventory/warnings`) +- [x] 2.6.6 实现预警阈值设置 API (`/api/inventory/warning-threshold`) + +--- + +## 3. 前端页面开发 + +### 3.1 基础数据管理页面 + +- [x] 3.1.1 实现承运商管理页面 (`/views/transport/carrier/index.vue`) +- [x] 3.1.2 实现车辆管理页面 (`/views/transport/vehicle/index.vue`) +- [x] 3.1.3 实现司机管理页面 (`/views/transport/driver/index.vue`) +- [x] 3.1.4 实现证件到期提醒页面 (`/views/transport/document-reminder/index.vue`) + +### 3.2 计划管理页面 + +- [x] 3.2.1 实现计划列表页面 (`/views/pl/plan/index.vue`) +- [x] 3.2.2 实现计划新增/编辑页面 (`/views/pl/plan/form.vue`) +- [x] 3.2.3 实现计划详情页面 (`/views/pl/plan/detail.vue`) +- [x] 3.2.4 实现运输安排页面 (`/views/pl/plan/arrange.vue`) + +### 3.3 运输管理页面 + +- [x] 3.3.1 实现运输列表页面 (`/views/pl/transport/index.vue`) + +### 3.4 运费结算页面 + +- [x] 3.4.1 实现结算单列表页面 (`/views/pl/freight/index.vue`) + +### 3.5 盘存统计页面 + +- [x] 3.5.1 实现库存台账页面 (`/views/pl/inventory/ledger.vue`) +- [x] 3.5.2 实现证件提醒页面 (`/views/pl/inventory/document-reminder.vue`) +- [x] 3.6 车辆/人员/证书重构(`docs/superpowers/specs/2026-06-19-pl-vehicle-personnel-cert-design.md`) + +### 3.7 工作台集成 + +- [ ] 3.7.1 实现待办任务列表组件 (`PendingTasks.vue`) +- [ ] 3.7.2 实现证件到期提醒组件 (`DocumentReminder.vue`) +- [ ] 3.7.3 实现库存预警提醒组件 (`InventoryWarning.vue`) + +--- + +## 4. 定时任务开发 + +- [ ] 4.1 实现证件过期提醒定时任务(每日检查) +- [ ] 4.2 实现库存预警检查定时任务(每日检查) +- [ ] 4.3 实现库存统计更新定时任务(可选,如有统计表) + +--- + +## 5. 菜单与权限配置 + +- [ ] 5.1 配置计划管理菜单 +- [ ] 5.2 配置运输管理菜单 +- [ ] 5.3 配置审批管理菜单 +- [ ] 5.4 配置运费结算菜单 +- [ ] 5.5 配置盘存统计菜单 +- [ ] 5.6 配置基础数据管理菜单(车辆、司机、承运商) +- [ ] 5.7 配置权限标识(`transport:plan:*`, `transport:vehicle:*` 等) + +--- + +## 6. 路由配置 + +- [x] 6.1 配置后端 API 路由注册(`app/api/__init__.py`, `app/main.py`) +- [x] 6.2 配置前端路由(`web-admin/src/router/modules/pl.ts`) + +--- + +## 7. 测试与验证 + +### 7.1 单元测试 + +- [ ] 7.1.1 编写单据类型判断逻辑测试 +- [ ] 7.1.2 编写金额计算逻辑测试 +- [ ] 7.1.3 编写审批流程逻辑测试 +- [ ] 7.1.4 编写运费计算逻辑测试 + +### 7.2 API 测试 + +- [ ] 7.2.1 验证计划 CRUD API +- [ ] 7.2.2 验证运输安排 API +- [ ] 7.2.3 验证审批流程 API +- [ ] 7.2.4 验证运费结算 API + +### 7.3 集成测试 + +- [ ] 7.3.1 验证从合同发起计划完整流程 +- [ ] 7.3.2 验证审批流程完整流转 +- [ ] 7.3.3 验证运费结算完整流程 +- [ ] 7.3.4 验证盘存统计准确性 + +--- + +## 8. 文档与培训 + +- [ ] 8.1 编写用户操作手册 +- [ ] 8.2 更新 API 文档 +- [ ] 8.3 编写技术设计文档(如有更新) + +--- + +## 9. 部署与上线 + +- [ ] 9.1 执行数据库变更脚本 +- [ ] 9.2 部署后端服务 +- [ ] 9.3 部署前端服务 +- [ ] 9.4 配置生产环境参数 +- [ ] 9.5 验证生产环境功能 diff --git a/openspec/changes/zkxw-engineering-standards/specs/api-conventions/spec.md b/openspec/changes/zkxw-engineering-standards/specs/api-conventions/spec.md index 3bea6a625..71e6ba700 100644 --- a/openspec/changes/zkxw-engineering-standards/specs/api-conventions/spec.md +++ b/openspec/changes/zkxw-engineering-standards/specs/api-conventions/spec.md @@ -161,7 +161,21 @@ Web 管理端(`web-admin`)与对外 JSON 接口中,**请求体与响应 `d 列表/详情等读接口的 `_row_to_dict`(或等价转换)SHALL 将 ORM 列名转为 camelCase 键名再返回前端。 -参考实现:`app/api/admin.py` 中 `TenantCreateBody`;CRM:`app/schemas/crm/customer.py`、`app/schemas/crm/product.py`;路由:`app/api/crm.py`(客户列表/公海池)。 +参考实现:`app/api/admin.py` 中 `TenantCreateBody`;CRM:`app/schemas/crm/customer.py`、`app/schemas/crm/product.py`;路由:`app/api/crm.py`(客户列表/公海池);**运输计划**:`app/schemas/pl/**`(`openspec/changes/transport-plan-management/specs/pl-api-json/spec.md`);地磅:`app/schemas/db/weighing.py`。 + +FastAPI 路由 Query 参数若 Python 参数名为 `page_size`,SHALL 声明 `Query(..., alias="pageSize")`,与前端列表分页一致。 + +#### Scenario: 运输计划承运商新增 422 回归 + +- **WHEN** 前端 `POST /api/transport/carrier` 发送 `{ "carrierName": "测试" }` +- **THEN** `CarrierCreate` SHALL 含 `carrier_name = Field(..., alias="carrierName")` 且校验通过 +- **AND** SHALL NOT 因缺少 alias 返回 422 `carrier_name Field required` + +#### Scenario: 运输计划列表 pageSize Query + +- **WHEN** 前端 `GET /api/transport/plan/?page=2&pageSize=50` +- **THEN** 路由 SHALL 使用 `page_size: int = Query(..., alias="pageSize")` 解析为 50 +- **AND** SHALL NOT 忽略 `pageSize` 而始终使用默认 20 #### Scenario: 前端提交新增分类 diff --git a/openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md b/openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md index 664c71492..ae6e31625 100644 --- a/openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md +++ b/openspec/changes/zkxw-engineering-standards/specs/ui-conventions/spec.md @@ -264,9 +264,9 @@ Web 管理端弹窗 SHALL 遵循规范:表单 `label-position="top"`;遮罩 1. **操作列「查看」按钮**:操作列 SHALL 在首位包含一个「查看」按钮(`查看`),点击后弹出只读查看弹窗。 2. **行双击触发**:`el-table` SHALL 监听 `@row-dblclick` 事件,双击任意行时触发与「查看」按钮相同的弹窗(即调用同一 `handleView(row)` 函数)。 3. **条件按钮场景**:当操作列按钮随状态/Tab 变化(如待确认 Tab 显示「确认收款」,已确认 Tab 显示「查看确认信息」),`@row-dblclick` handler SHALL 仅在「查看」类按钮可见时触发对应查看函数,其余状态下可忽略或调用对应主操作函数。 -3. **弹窗样式**:查看弹窗 SHALL 使用 `SystemViewDialog` 共享组件(`src/components/business/system-view-dialog/index.vue`),样式对齐待办中心「查看详情」弹窗(无标题栏、hero 渐变头图 + 图标、KV grid 字段展示、关闭按钮)。 -4. **字段内容**:查看弹窗 SHALL 展示该行记录的所有业务字段(含状态映射、字典翻译),不展示 `id`、`del_flag` 等技术字段。长文本/备注字段 SHALL 使用 `span: true` 跨两列展示。 -5. **区块标题样式**:查看弹窗中各区块标题(`SystemViewDialog` 的 section title,渲染为 `h3`)SHALL 与字段标签(`dt`)形成明显视觉区分。区块标题 SHALL 使用深色文字(`#1e293b`)配合左侧主色竖条装饰(`border-left: 3px solid #10b981`),字号 14px、`font-weight: 600`;字段标签 SHALL 保持为辅助灰色(`#64748b`)、`font-weight: 500`。区块标题样式 SHALL NOT 与字段标签使用相同颜色或相近字重。 +4. **弹窗组件**:查看弹窗 SHALL 优先使用 `SystemViewDialog`(`web-admin/src/components/business/system-view-dialog/index.vue`);样式对齐 Hero 渐变头图 + 分区 KV 信息区 + 底部「关闭」按钮(详见下文「查看弹窗 KV 布局与组件选型」)。KV 信息区 SHALL 使用 `ViewKvGrid`(上下堆叠栅格)或 `ViewKvTable`(多组多列表格);**SHALL NOT** 使用 `el-descriptions` 或历史 `.dlg-kv` 布局承载列表行查看详情。 +5. **字段内容**:查看弹窗 SHALL 展示该行记录的所有业务字段(含状态映射、字典翻译),不展示 `id`、`del_flag` 等技术字段;KV 跨列/换行规则见「查看弹窗 KV 布局与组件选型」。 +6. **区块标题样式**:查看弹窗中各区块标题(如 `SystemViewDialog` 的 section title、`bx` 模块 `.dlg-view-section-title`,渲染为 `h3`/`h4`)SHALL 与字段标签形成明显视觉区分。区块标题 SHALL 使用深色文字(`#1e293b`)配合左侧主色竖条装饰(`border-left: 3px solid #10b981`),字号 14px、`font-weight: 600`;字段标签 SHALL 为 11px、`#64748b`、`font-weight: 400`(由 `ViewKvGrid` 的 `dt` 或 `ViewKvTable` 的 `th` 统一渲染)。区块标题样式 SHALL NOT 与字段标签使用相同颜色或相近字重。 #### Scenario: 新增系统管理列表页 @@ -284,6 +284,169 @@ Web 管理端弹窗 SHALL 遵循规范:表单 `label-position="top"`;遮罩 - **WHEN** PR 修改列表页面且页面包含 `el-table` - **THEN** 审查者 SHALL 确认 `el-table` 绑定了 `@row-dblclick` 事件,且操作列包含「查看」按钮 +### Requirement: 查看弹窗 KV 布局与组件选型 + +`web-admin` 列表行【查看】弹窗及同类只读详情弹窗的键值(KV)信息区 SHALL 采用下列两种**规范布局之一**,**SHALL NOT** 使用 Element Plus `el-descriptions`,**SHALL NOT** 使用已废弃的 `.dlg-kv` 四列「label|value|label|value」横向布局,**SHALL NOT** 在业务页手写无统一样式的 `` 承载主体 KV。 + +| 布局 | 说明 | 默认场景 | +|------|------|----------| +| **上下堆叠栅格** | label 在上、value 在下,多列 grid | 字段较多、需 3~4 列密度;`SystemViewDialog` 默认 | +| **多组多列表格** | 每行左 label(`th`)、右 value(`td`);短字段一行可排多组 | 字段较少(通常 ≤10)、需表格对齐感;如报销备用金申请「基础信息」 | + +权威视觉细节见 `docs/web-admin-ui-spec-fresh-mint.md` §9.5 / §9.8;交互 Demo 见 `docs/fresh-mint-view-wide-dialog-demos.html`(上下堆叠见主区;**多组多列表格**见 `#table-section`,模式 M~R)。 + +#### 1. 组件选型 + +| 场景 | 组件 | 路径 | +|------|------|------| +| 门户 / CRM / 系统管理等(默认) | `SystemViewDialog` | `web-admin/src/components/business/system-view-dialog/index.vue` | +| KV 栅格渲染(上下堆叠,被上述组件复用) | `ViewKvGrid` | `web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue` | +| KV 表格渲染(多组多列,被上述组件复用) | `ViewKvTable` | `web-admin/src/components/business/system-view-dialog/ViewKvTable.vue` | +| 报销管理(`bx` 模块,Hero 自定义壳) | `BxViewKvGrid` / `BxViewKvTable` | `web-admin/src/components/bx/base/BxViewKvGrid.vue`、`BxViewKvTable.vue`(内部分别复用 `ViewKvGrid` / `ViewKvTable`) | + +- 新增业务查看弹窗 **SHALL** 优先 `SystemViewDialog` + `ViewField[]` / `ViewSection[]`。 +- 字段极多、需 Tab / KPI / 分栏的复杂查看 **SHALL** 采用界面模式 **P10**(独立 `*ViewDialog`,内部仍复用 `ViewKvGrid` / `ViewKvTable` 或 `SystemViewDialog` 的 section 结构)。 +- `bx` 模块保留 `.dlg-view-hero` 等既有 Hero 壳时,KV 区 **SHALL** 使用 `BxViewKvGrid` 或 `BxViewKvTable`,**SHALL NOT** 继续手写 `.dlg-kv` 或裸 `
`。 + +#### 2. 弹窗宽度与默认列数 + +- `SystemViewDialog` 默认宽度 **SHALL** 为 **`1040px`**(`width` prop 可覆盖;合同/报价等宽表场景可用 `calc(100vw - Npx)` 或更大固定宽)。 +- 上下堆叠栅格默认列数 **SHALL** 为 **4 列**(`gridColumns: 4`);紧凑模式(`compact`)降为 **2 列**。 +- 多组多列表格 **SHALL** 在 **`1040px`** 弹窗内使用;少字段(≤8)可选用 **`720px`~`920px`**(见 Demo Q/R)。 +- `bx` 模块 `.dialog-view-xl` 宽度 **SHALL** 与上述一致(`min(1040px, calc(100vw - 32px))`)。 + +#### 3. KV 单元格结构(上下堆叠栅格) + +每个字段渲染为 `
` 内的 `.view-kv` 单元: + +- **dt(label)**:上,11px,`#64748b`,`font-weight: 400` +- **dd(value)**:下,13px,`font-weight: 600`,`word-break: break-word` +- **SHALL NOT** 在同一 grid cell 内使用左右并排的 label|value(历史 `el-descriptions` / `.dlg-kv .k/.v` 模式) + +#### 4. 四列栅格跨列规则 + +栅格容器为 `.view-kv-grid.view-kv-grid--cols-4`,`gap: 12px 18px`。跨列逻辑 **SHALL** 由 `web-admin/src/utils/view-field-layout.ts` 与 `ViewField` 属性共同决定: + +| 类型 | 每行个数 | 触发条件 | CSS class | +|------|----------|----------|-----------| +| 短值 | **4 个/行** | 默认;显示文本 < 17 字且非长 label 启发式 | (无 span) | +| 长值 | **2 个/行** | `long: true` 或 `span: true`;或自动:文本 ≥17 字、含 ` / ` 路径、label 匹配备注/地址/说明等 | `view-kv-span-2` | +| 整行 | **1 个/行** | `fullSpan: true` 或 `span: 'full'`;或自动:文本 ≥80 字 | `view-kv-span-full` | + +常量:`VIEW_KV_LONG_MIN_LEN = 17`,`VIEW_KV_FULL_MIN_LEN = 80`(见 `view-field-layout.ts`)。 + +响应式:**SHALL** 在 ≤1100px 降为 3 列、≤900px 降为 2 列、≤640px 降为 1 列(`ViewKvGrid.vue` 内 media query);长值在单列下 **SHALL** 占满整行。 + +#### 5. ViewField 定义约定 + +类型定义见 `web-admin/src/components/business/system-view-dialog/types.ts`。 + +```typescript +interface ViewField { + label: string + value?: string | number | boolean | null + items?: string[] // 无编号列表,与 value 二选一 + span?: boolean | 'full' // true=长值(2列);'full'=整行 + long?: boolean // 显式长值,等同 span:true + fullSpan?: boolean // 显式整行 + tagType?: TagType // 状态/类型 → el-tag + money?: boolean // 金额红色 .money-display +} +``` + +- 空值 **SHALL** 展示为 `—`(`formatViewValue`)。 +- 字典/状态 **SHALL** 预先翻译为 label 并视情况设 `tagType`(见「查看弹窗中编码字段展示为可读标签」「状态、结论与类型字段使用 Tag 标签展示」)。 +- 金额 **SHALL** 设 `money: true` 并使用 `¥` 前缀(见「价格字段展示规范」)。 + +#### 6. 弹窗骨架(SystemViewDialog) + +标准只读查看弹窗 **SHALL** 按以下顺序组织: + +1. **Hero**(`.view-hero`):图标 + 主标题 + 可选 `meta` / `code` + 状态 Tag(hero-actions 插槽可选) +2. **分区**(`.view-section`):区块标题 + `ViewKvGrid` / `ViewKvTable` 或具名插槽(子表、附件、审批流等) +3. **Footer**:仅「关闭」类按钮(带 `Close` 图标),**SHALL NOT** 在查看态混入提交语义 + +子表、附件、审批历史等 **SHALL** 作为独立 section 或 slot 置于 KV 区之后,**SHALL NOT** 嵌入 KV 栅格 cell 或 KV 表格 `
`。 + +#### 7. 模块辅助工具(推荐) + +| 模块 | 工具 | 用途 | +|------|------|------| +| CRM | `web-admin/src/utils/crm/view-fields.ts` | `crmField` / `crmLongField` / `crmDictField` / `crmTagField` 构建 `ViewField` | +| 报销 bx | `web-admin/src/utils/bx/view-kv.ts` | `bxViewKv` / `bxViewKvLong` / `bxViewKvMoney` | + +#### 8. KV 表格模式(多组多列) + +当业务选用**多组多列表格**展示 KV 时,**SHALL** 使用 `ViewKvTable`(或 `BxViewKvTable`),数据源仍为 `ViewField[]`;跨行/长值逻辑 **SHALL** 复用 `web-admin/src/utils/view-field-layout.ts`(`isViewFieldLong` / `isViewFieldFullSpan` / `buildViewKvTableDualRows` / `buildViewKvTableTripleRows`)。 + +**模式(`mode` prop)** + +| mode | 每行组数 | 列结构 | 典型场景 | +|------|----------|--------|----------| +| `pair` | **1 组** | `th` + `td`(两列) | 少字段、需逐行阅读;Demo **Q** | +| `dual` | **2 组** | `th` + `td` × 2(四列) | 中等字段量;Demo **N** / **R** | +| `triple` | **3 组** | `th` + `td` × 3(六列) | 少字段高密度;Demo 扩展;参考 `bx/advance/apply` 基础信息 | + +**行分组规则** + +- 短字段 **SHALL** 按 mode 尽可能填满一行(`dual` 最多 2 组、`triple` 最多 3 组);末行不足时 **SHALL** 留空 `th`/`td` 占位,**SHALL NOT** 强行与长字段同组。 +- 长值 / 整行字段(`long` / `fullSpan` 或 `view-field-layout.ts` 自动检测)**SHALL** 独占整行:`pair` 为单行 `th`+`td`;`dual` 为 `td colspan="3"`;`triple` 为 `td colspan="5"`。 +- 字段顺序 **SHOULD** 将长文本(申请原因、备注等)置于数组末尾,以便短字段先组成完整多组行。 + +**表格样式(Fresh Mint)** + +- 外层 **SHALL** 使用 `.view-kv-table-wrap`(圆角 8px、边框 `#d9e8e2`)。 +- 表头单元格 **`th`(label)**:背景 `var(--table-head)`,11px、`#64748b`;**SHALL** 支持换行(`white-space: normal`、`word-break: break-word`、`overflow-wrap: anywhere`),**SHALL NOT** 使用 `white-space: nowrap` 导致长 label(如「实际发放金额(元)」)溢出。 +- 数据单元格 **`td`(value)**:13px、`font-weight: 600`;金额 **SHALL** 使用 `.money-display`;状态/类型 **SHALL** 使用 `el-tag`(`ViewKvTableCell`)。 +- `triple` 模式 label 列宽约 **10%**、value 列宽约 **23.33%**(三组合计六列);具体比例以 `ViewKvTable.vue` 为准。 + +**选型建议** + +- 字段 **≤8** 且弹窗显空 → 优先 **`pair`** 或 **`triple`** + 适当缩窄弹窗宽度。 +- 字段 **9~18** 且需表格感 → 优先 **`dual`**(1040px)。 +- 同一弹窗内 **SHALL NOT** 混用 `ViewKvGrid` 与 `ViewKvTable` 于**同一 section**;不同 section 可按需分别选用(如「基础信息」用表格、「扩展信息」用栅格)。 + +#### 9. 禁止与废弃 + +- **SHALL NOT** 在新代码中使用 `el-descriptions` 实现列表行【查看】弹窗主体 KV。 +- **SHALL NOT** 使用 `.dlg-kv`、`.dlg-kv--triple` 横向 KV(`web-admin/src/styles/bx/index.scss` 内已标记 deprecated,仅兼容旧页)。 +- **SHALL NOT** 手写 `` 实现 KV 主体区;**SHALL** 使用 `ViewKvTable` / `BxViewKvTable`。 +- 迁移存量页时 **SHALL** 保留 Hero / 子表 / 附件 / 审批流结构,**仅替换** KV 区为 `ViewKvGrid` / `ViewKvTable` / `BxViewKvGrid` / `BxViewKvTable` / `SystemViewDialog`。 + +#### Scenario: 新增 CRM 列表查看弹窗 + +- **WHEN** 在 CRM 模块新增带【查看】按钮的列表页 +- **THEN** SHALL 使用 `SystemViewDialog`(或独立 `*DetailDialog` 封装该组件) +- **THEN** KV 字段 SHALL 通过 `ViewSection[]` + `ViewField[]` 定义,默认 4 列上下堆叠 +- **THEN** SHALL NOT 使用 `el-descriptions` + +#### Scenario: 报销模块查看弹窗(上下堆叠) + +- **WHEN** 在 `web-admin/src/views/bx/**` 实现或改造查看弹窗,且 KV 区采用上下堆叠栅格 +- **THEN** KV 区 SHALL 使用 `BxViewKvGrid`(columns 默认 4) +- **THEN** 弹窗宽度 SHALL 为 1040px 级(`.dialog-view-xl`) + +#### Scenario: 报销模块查看弹窗(多组多列表格) + +- **WHEN** 在 `web-admin/src/views/bx/**` 的查看弹窗中,某 section(如「基础信息」)采用多组多列表格 +- **THEN** SHALL 使用 `BxViewKvTable` + `ViewField[]`,并显式声明 `mode`(`pair` / `dual` / `triple`) +- **THEN** 长 label SHALL 在 `th` 内换行展示,**SHALL NOT** 溢出列宽 +- **THEN** 参考实现:`web-admin/src/views/bx/advance/apply/index.vue`(`mode="triple"`) + +#### Scenario: 长文本与备注字段 + +- **WHEN** 查看弹窗包含申请原因、备注、条款等长文本 +- **THEN** SHALL 为对应 `ViewField` 设置 `long: true` 或 `fullSpan: true`(或依赖 `view-field-layout.ts` 自动检测) +- **THEN** 4 列栅格下 SHALL 占 2 列或整行,**SHALL NOT** 与短字段同一行挤 4 个 + +#### Scenario: Code review KV 布局 + +- **WHEN** PR 新增或修改查看弹窗 +- **THEN** 审查者 SHALL 确认 KV 区为 `ViewKvGrid`(上下堆叠 + 声明的 `gridColumns`)或 `ViewKvTable`(多组多列 + 声明的 `mode`) +- **THEN** SHALL 确认未使用 `el-descriptions` / `.dlg-kv` / 手写 KV `
` 作为主体字段区 +- **THEN** 状态/金额/字典字段 SHALL 符合 Tag、`money`、字典翻译等关联 Requirement +- **THEN** 若使用 `ViewKvTable`,SHALL 确认长 label 可换行、长 value 独占整行 + ### Requirement: 查看弹窗中编码字段展示为可读标签 `web-admin` 中所有只读查看弹窗(`SystemViewDialog` 及类似组件)中,存储为编码(code / value)的字段 SHALL 展示为对应的人类可读标签(label),SHALL NOT 直接展示原始编码值。这包括但不限于:字典编码→字典标签、状态编码→状态文本、站点类型编码→类型名称等。 @@ -716,6 +879,14 @@ watchDebounced( | 退订 | `Remove` | 退订、减少持有类操作 | | 作废 | `Delete` | 作废流水/订单(与删除同图标,可用 `op-warn` 样式区分) | | 操作流水 / 记录列表 | `List` | 「操作流水」等子列表入口 | +| 返回 | `Close` | 详情页、表单页「返回」按钮(与取消同图标) | +| 选择 / 挑选 | `Select` | 输入框 append「选择」、挑选合同/客户等 | +| 安排运输 | `Van` | 运输计划「安排运输」操作 | +| 归档 / 批量归档 | `FolderChecked` | 计划归档、批量归档 | +| 取消计划 | `CircleClose` | 取消运输计划等业务取消 | +| 二维码 | `Share` | 生成/查看运输二维码 | +| 提交结算 | `Promotion` | 运费结算「提交」 | +| 审核通过 | `CircleCheck` | 运费结算「审核」、证件「处理」等确认类操作 | #### Scenario: 新增列表页工具栏按钮 @@ -742,6 +913,13 @@ watchDebounced( - **WHEN** PR 包含新增或修改的 `el-button` - **THEN** 审查者 SHALL 确认该按钮包含 `` 子元素,且图标组件已从 `@element-plus/icons-vue` 显式导入 +#### Scenario: 运输计划模块(web-admin/src/views/pl) + +- **WHEN** 实现或修改 `web-admin/src/views/pl/**` 下运输计划菜单页面(承运商管理、车辆管理、司机管理、运输计划、运输管理、运费结算、库存台账、证件提醒及其子页 form/detail/arrange) +- **THEN** 每个带可见文案的 `el-button` SHALL 在文字前方包含 ``,并按上表选用语义图标(如搜索 `Search`、重置 `RefreshLeft`、新增 `Plus`、查看 `View`、安排运输 `Van`、归档 `FolderChecked`、提交 `Promotion`、审核/处理 `CircleCheck`、选择 `Select` 等) +- **THEN** 图标组件 SHALL 在 ` + + diff --git a/web-admin/src/components/business/db/DbPoundSlipQrcodeDialog.vue b/web-admin/src/components/business/db/DbPoundSlipQrcodeDialog.vue new file mode 100644 index 000000000..706f96f6c --- /dev/null +++ b/web-admin/src/components/business/db/DbPoundSlipQrcodeDialog.vue @@ -0,0 +1,153 @@ + + + + diff --git a/web-admin/src/components/business/pl-carrier-view-dialog/index.vue b/web-admin/src/components/business/pl-carrier-view-dialog/index.vue new file mode 100644 index 000000000..bb14757fe --- /dev/null +++ b/web-admin/src/components/business/pl-carrier-view-dialog/index.vue @@ -0,0 +1,208 @@ + + + + + + diff --git a/web-admin/src/components/business/pl-cert-form-list/index.vue b/web-admin/src/components/business/pl-cert-form-list/index.vue new file mode 100644 index 000000000..2372a7331 --- /dev/null +++ b/web-admin/src/components/business/pl-cert-form-list/index.vue @@ -0,0 +1,215 @@ + + + + + diff --git a/web-admin/src/components/business/pl-cert-view-list/index.vue b/web-admin/src/components/business/pl-cert-view-list/index.vue new file mode 100644 index 000000000..bdcb334ea --- /dev/null +++ b/web-admin/src/components/business/pl-cert-view-list/index.vue @@ -0,0 +1,141 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-arrange-dialog/index.vue b/web-admin/src/components/business/pl-plan-arrange-dialog/index.vue new file mode 100644 index 000000000..96688a842 --- /dev/null +++ b/web-admin/src/components/business/pl-plan-arrange-dialog/index.vue @@ -0,0 +1,661 @@ + + + + + + + + diff --git a/web-admin/src/components/business/pl-plan-cert-upload-dialog/index.vue b/web-admin/src/components/business/pl-plan-cert-upload-dialog/index.vue new file mode 100644 index 000000000..ca4f80371 --- /dev/null +++ b/web-admin/src/components/business/pl-plan-cert-upload-dialog/index.vue @@ -0,0 +1,209 @@ + + + + + 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 new file mode 100644 index 000000000..fbfb3f41f --- /dev/null +++ b/web-admin/src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-form-dialog/index.vue b/web-admin/src/components/business/pl-plan-form-dialog/index.vue new file mode 100644 index 000000000..a101c62ec --- /dev/null +++ b/web-admin/src/components/business/pl-plan-form-dialog/index.vue @@ -0,0 +1,1059 @@ + + + + + + + + diff --git a/web-admin/src/components/business/pl-plan-list-cert-cell/index.vue b/web-admin/src/components/business/pl-plan-list-cert-cell/index.vue new file mode 100644 index 000000000..32d962313 --- /dev/null +++ b/web-admin/src/components/business/pl-plan-list-cert-cell/index.vue @@ -0,0 +1,140 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-list-product-cell/index.vue b/web-admin/src/components/business/pl-plan-list-product-cell/index.vue new file mode 100644 index 000000000..f50784025 --- /dev/null +++ b/web-admin/src/components/business/pl-plan-list-product-cell/index.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/web-admin/src/components/business/pl-plan-view-dialog/index.vue b/web-admin/src/components/business/pl-plan-view-dialog/index.vue new file mode 100644 index 000000000..a4108a59e --- /dev/null +++ b/web-admin/src/components/business/pl-plan-view-dialog/index.vue @@ -0,0 +1,157 @@ + + + + + + diff --git a/web-admin/src/components/business/pl-plan-view-tabs/index.vue b/web-admin/src/components/business/pl-plan-view-tabs/index.vue new file mode 100644 index 000000000..6ab58269d --- /dev/null +++ b/web-admin/src/components/business/pl-plan-view-tabs/index.vue @@ -0,0 +1,802 @@ + + + + + + diff --git a/web-admin/src/components/business/pl-product-name-hazard-cell/index.vue b/web-admin/src/components/business/pl-product-name-hazard-cell/index.vue new file mode 100644 index 000000000..8ff1c1f53 --- /dev/null +++ b/web-admin/src/components/business/pl-product-name-hazard-cell/index.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/web-admin/src/components/business/pl-vehicle-cert-personnel-tabs/index.vue b/web-admin/src/components/business/pl-vehicle-cert-personnel-tabs/index.vue new file mode 100644 index 000000000..ff3500557 --- /dev/null +++ b/web-admin/src/components/business/pl-vehicle-cert-personnel-tabs/index.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/web-admin/src/components/business/pl-vehicle-personnel-view-list/PersonnelViewPanel.vue b/web-admin/src/components/business/pl-vehicle-personnel-view-list/PersonnelViewPanel.vue new file mode 100644 index 000000000..476df6f7f --- /dev/null +++ b/web-admin/src/components/business/pl-vehicle-personnel-view-list/PersonnelViewPanel.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/web-admin/src/components/business/pl-vehicle-personnel-view-list/index.vue b/web-admin/src/components/business/pl-vehicle-personnel-view-list/index.vue new file mode 100644 index 000000000..589b24460 --- /dev/null +++ b/web-admin/src/components/business/pl-vehicle-personnel-view-list/index.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/web-admin/src/components/business/pl-vehicle-view-panel/index.vue b/web-admin/src/components/business/pl-vehicle-view-panel/index.vue new file mode 100644 index 000000000..22fc68187 --- /dev/null +++ b/web-admin/src/components/business/pl-vehicle-view-panel/index.vue @@ -0,0 +1,199 @@ + + + + + diff --git a/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue b/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue new file mode 100644 index 000000000..fc54acb9b --- /dev/null +++ b/web-admin/src/components/business/system-view-dialog/ViewKvGrid.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/web-admin/src/components/business/system-view-dialog/ViewKvTable.vue b/web-admin/src/components/business/system-view-dialog/ViewKvTable.vue new file mode 100644 index 000000000..a5540c09d --- /dev/null +++ b/web-admin/src/components/business/system-view-dialog/ViewKvTable.vue @@ -0,0 +1,206 @@ + + + + + diff --git a/web-admin/src/components/business/system-view-dialog/ViewKvTableCell.vue b/web-admin/src/components/business/system-view-dialog/ViewKvTableCell.vue new file mode 100644 index 000000000..6e862dc36 --- /dev/null +++ b/web-admin/src/components/business/system-view-dialog/ViewKvTableCell.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/web-admin/src/components/business/system-view-dialog/index.vue b/web-admin/src/components/business/system-view-dialog/index.vue index 629523f85..b884e1d4a 100644 --- a/web-admin/src/components/business/system-view-dialog/index.vue +++ b/web-admin/src/components/business/system-view-dialog/index.vue @@ -52,63 +52,19 @@ > {{ group.title }} -
-
-
{{ field.label }}
-
- {{ - formatViewValue(field.value) - }} -
    -
  • {{ item }}
  • -
- -
-
-
+ :fields="group.fields" + :columns="splitGridColumns" + />

{{ group.emptyHint || '—' }}

-
-
-
{{ field.label }}
-
- {{ - formatViewValue(field.value) - }} -
    -
  • {{ item }}
  • -
- -
-
-
+ :fields="section.fields" + :columns="splitGridColumns" + />
{{ group.title }}
-
-
-
{{ field.label }}
-
- {{ - formatViewValue(field.value) - }} -
    -
  • {{ item }}
  • -
- -
-
-
+ :fields="group.fields" + :columns="effectiveGridColumns" + />

{{ group.emptyHint || '—' }}

-
-
-
{{ field.label }}
-
- {{ - formatViewValue(field.value) - }} -
    -
  • {{ item }}
  • -
- -
-
-
+ :fields="section.fields" + :columns="effectiveGridColumns" + />
import { computed, useSlots, type Component } from 'vue' import { Close, Document } from '@element-plus/icons-vue' + import ViewKvGrid from './ViewKvGrid.vue' + import { + isIconComponent, + type TagType, + type ViewField, + type ViewFieldGroup, + type ViewGridColumns, + type ViewSection + } from './types' - function isIconComponent(val: unknown): val is Component { - return val != null && (typeof val === 'object' || typeof val === 'function') - } - - /** 查看弹窗字段展示:null/undefined/空字符串 → —;布尔转是/否 */ - function formatViewValue(val: unknown): string { - if (val === null || val === undefined || val === '') return '—' - if (typeof val === 'boolean') return val ? '是' : '否' - return String(val) - } - - export type TagType = 'success' | 'warning' | 'danger' | 'info' | '' | 'primary' - - export interface ViewField { - label: string - value?: string | number | boolean | null | undefined - /** 无编号列表(ul),与 value / tagType 二选一 */ - items?: string[] - span?: boolean - /** 传入后以 el-tag 渲染,值为 el-tag 的 type 属性 */ - tagType?: TagType - /** 价格/单价/金额类只读数值,套用全局 .money-display 红色样式 */ - money?: boolean - } - - export interface ViewFieldGroup { - /** 分组小标题;field=与 KV 字段 label 一致;section=绿条区块标题 */ - title?: string - titleStyle?: 'section' | 'field' - fields: ViewField[] - /** fields 为空且存在 title 时的占位文案 */ - emptyHint?: string - } - - export interface ViewSection { - title: string - fields: ViewField[] - /** 同区块内多组 KV(如任务信息 + 检测参数),与 fields 二选一 */ - fieldGroups?: ViewFieldGroup[] - /** section=区块绿条标题;field=与 KV 字段 label(dt)一致 */ - titleStyle?: 'section' | 'field' - /** 插槽上方标题(可与 fields 同区块,避免额外分割线) */ - slotTitle?: string - slotTitleStyle?: 'section' | 'field' - /** 区块内追加内容(如附件列表),对应具名插槽名 */ - slot?: string - } + export type { TagType, ViewField, ViewFieldGroup, ViewSection } const props = withDefaults( defineProps<{ @@ -305,10 +180,10 @@ /** 与 code 搭配的标签文案,默认「编码」 */ codeLabel?: string sections: ViewSection[] - /** 弹窗宽度,默认 720px */ + /** 弹窗宽度,默认 1040px(适配 4 列 KV) */ width?: string - /** 字段栅格列数,默认 2 */ - gridColumns?: 2 | 3 | 4 + /** 字段栅格列数,默认 4(短值 4 个/行,长值 2 个/行) */ + gridColumns?: ViewGridColumns /** 挂到 body,用于嵌套在其它弹窗内时叠层展示 */ appendToBody?: boolean /** 遮罩类名(可配合全局样式提高 z-index) */ @@ -322,11 +197,11 @@ /** default 单列滚动;split 左右分栏(需 split-right 插槽) */ layout?: 'default' | 'split' /** split 布局时左侧 KV 栅格列数,默认 1 */ - splitGridColumns?: 1 | 2 + splitGridColumns?: ViewGridColumns }>(), { - width: '720px', - gridColumns: 2, + width: '1040px', + gridColumns: 4, appendToBody: false, modalClass: '', dialogClass: '', @@ -343,6 +218,11 @@ () => props.layout === 'split' || Boolean(slots['split-right']) ) + /** 紧凑模式降为 2 列,避免 4 列过密 */ + const effectiveGridColumns = computed(() => + props.compact ? 2 : props.gridColumns + ) + const emit = defineEmits<{ (e: 'update:visible', val: boolean): void }>() @@ -431,8 +311,8 @@ padding: 16px 20px; } - .view-split-left .view-kv { - grid-template-columns: 84px 1fr; + .view-split-left :deep(.view-kv) { + gap: 4px; } @media (max-width: 1100px) { @@ -500,7 +380,7 @@ .view-hero-meta { margin: 0; font-size: 13px; - color: #64748b; + color: #000; line-height: 1.5; } @@ -523,64 +403,12 @@ } } - .view-kv-grid { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 12px 20px; - - &--cols-1 { - grid-template-columns: 1fr; - } - - &--cols-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - &--cols-4 { - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - } - - .view-kv { - display: grid; - grid-template-columns: 96px 1fr; - gap: 8px 12px; - font-size: 13px; - align-items: start; - - dt { - margin: 0; - color: #64748b; - font-weight: 500; - } - - dd { - margin: 0; - color: #1e293b; - word-break: break-word; - } - } - - .view-kv-span-2 { - grid-column: 1 / -1; - } - - .view-plain-list { - margin: 0; - padding-left: 1.15em; - list-style: disc; - - li + li { - margin-top: 4px; - } - } - .view-field-label { margin: 0 0 8px; - font-size: 13px; - font-weight: 500; - color: #64748b; - line-height: 1.5; + font-size: 11px; + font-weight: 400; + color: #000; + line-height: 1.4; } .view-section-slot { @@ -592,12 +420,12 @@ } .view-field-label + .view-section-slot, - .view-kv-grid + .view-field-label, + :deep(.view-kv-grid) + .view-field-label, .view-field-group + .view-field-label { margin-top: 0; } - .view-kv-grid + .view-field-label { + :deep(.view-kv-grid) + .view-field-label { margin-top: 12px; } @@ -608,36 +436,10 @@ .view-field-group .view-empty-hint { margin: 0; font-size: 13px; - color: #64748b; + color: #000; line-height: 1.5; } - @media (max-width: 1100px) { - .view-kv-grid--cols-4 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - } - - @media (max-width: 900px) { - .view-kv-grid--cols-3, - .view-kv-grid--cols-4 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - } - - @media (max-width: 640px) { - .view-kv-grid, - .view-kv-grid--cols-3, - .view-kv-grid--cols-4 { - grid-template-columns: 1fr; - } - - .view-kv { - grid-template-columns: 1fr; - gap: 4px; - } - } - .system-view-dialog--compact { .dialog-scroll { max-height: min(68vh, 560px); @@ -676,13 +478,12 @@ } } - .view-kv-grid { + :deep(.view-kv-grid) { gap: 8px 16px; } - .view-kv { + :deep(.view-kv) { font-size: 12px; - grid-template-columns: 84px 1fr; } .view-field-label { @@ -740,7 +541,7 @@ .view-section-slot .view-subtable-wrap .el-table.view-subtable { --el-table-header-bg-color: #f8fafc; - --el-table-header-text-color: #64748b; + --el-table-header-text-color: #1e293b; --el-table-border-color: #e2e8f0; width: 100%; @@ -752,7 +553,7 @@ .el-table__header th.el-table__cell .cell { font-weight: 500; - color: #64748b; + color: #1e293b; } .el-table__body td.el-table__cell .cell { @@ -763,7 +564,7 @@ .view-section-slot .view-empty-hint { margin: 0; font-size: 13px; - color: #64748b; + color: #1e293b; line-height: 1.5; } } diff --git a/web-admin/src/components/business/system-view-dialog/types.ts b/web-admin/src/components/business/system-view-dialog/types.ts new file mode 100644 index 000000000..087c19e4e --- /dev/null +++ b/web-admin/src/components/business/system-view-dialog/types.ts @@ -0,0 +1,50 @@ +import type { Component } from 'vue' + +export type TagType = 'success' | 'warning' | 'danger' | 'info' | '' | 'primary' + +export interface ViewField { + label: string + value?: string | number | boolean | null | undefined + /** 无编号列表(ul),与 value / tagType 二选一 */ + items?: string[] + /** + * 跨列:true=长值(4 列下占 2 格,一行 2 个); + * 'full'=占满整行(超长备注等) + */ + span?: boolean | 'full' + /** 显式长值,等同 span:true */ + long?: boolean + /** 显式占满整行,等同 span:'full' */ + fullSpan?: boolean + tagType?: TagType + money?: boolean +} + +export interface ViewFieldGroup { + title?: string + titleStyle?: 'section' | 'field' + fields: ViewField[] + emptyHint?: string +} + +export interface ViewSection { + title: string + fields: ViewField[] + fieldGroups?: ViewFieldGroup[] + titleStyle?: 'section' | 'field' + slotTitle?: string + slotTitleStyle?: 'section' | 'field' + slot?: string +} + +export type ViewGridColumns = 1 | 2 | 3 | 4 + +export function isIconComponent(val: unknown): val is Component { + return val != null && (typeof val === 'object' || typeof val === 'function') +} + +export function formatViewValue(val: unknown): string { + if (val === null || val === undefined || val === '') return '—' + if (typeof val === 'boolean') return val ? '是' : '否' + return String(val) +} diff --git a/web-admin/src/components/bx/base/ApprovalFlowView.vue b/web-admin/src/components/bx/base/ApprovalFlowView.vue index 633413a17..c747f7f50 100644 --- a/web-admin/src/components/bx/base/ApprovalFlowView.vue +++ b/web-admin/src/components/bx/base/ApprovalFlowView.vue @@ -139,7 +139,7 @@ function connectorClass(index: number) { justify-content: center; border: 2px solid #e2e8f0; background: #f8fafc; - color: #94a3b8; + color: #1e293b; } .approval-flow-circle.is-approved { diff --git a/web-admin/src/components/bx/base/ApprovalHistoryView.vue b/web-admin/src/components/bx/base/ApprovalHistoryView.vue index 5b4e0455d..be680a504 100644 --- a/web-admin/src/components/bx/base/ApprovalHistoryView.vue +++ b/web-admin/src/components/bx/base/ApprovalHistoryView.vue @@ -135,7 +135,7 @@ const sortedItems = computed(() => justify-content: center; border: 2px solid #e2e8f0; background: #f8fafc; - color: #94a3b8; + color: #1e293b; } .approval-history-circle.is-approved { diff --git a/web-admin/src/components/bx/base/BxViewKvGrid.vue b/web-admin/src/components/bx/base/BxViewKvGrid.vue new file mode 100644 index 000000000..a7acd7c23 --- /dev/null +++ b/web-admin/src/components/bx/base/BxViewKvGrid.vue @@ -0,0 +1,19 @@ + + + diff --git a/web-admin/src/components/bx/base/BxViewKvTable.vue b/web-admin/src/components/bx/base/BxViewKvTable.vue new file mode 100644 index 000000000..c11cf52e5 --- /dev/null +++ b/web-admin/src/components/bx/base/BxViewKvTable.vue @@ -0,0 +1,23 @@ + + + diff --git a/web-admin/src/components/core/forms/art-drag-verify/index.vue b/web-admin/src/components/core/forms/art-drag-verify/index.vue index 8b33ce86c..c7ccefa57 100644 --- a/web-admin/src/components/core/forms/art-drag-verify/index.vue +++ b/web-admin/src/components/core/forms/art-drag-verify/index.vue @@ -353,7 +353,7 @@ i { padding-left: 0; font-size: 14px; - color: #999; + color: #1e293b; } .el-icon-circle-check { diff --git a/web-admin/src/components/core/layouts/art-breadcrumb/index.vue b/web-admin/src/components/core/layouts/art-breadcrumb/index.vue index 4b5485989..c80690778 100755 --- a/web-admin/src/components/core/layouts/art-breadcrumb/index.vue +++ b/web-admin/src/components/core/layouts/art-breadcrumb/index.vue @@ -10,19 +10,19 @@
{{ formatMenuTitle(item.meta?.title as string) }}