This commit is contained in:
zlwu committed 2026-05-20 09:28:36 +08:00
1 parent e6072457fd
commit be4fab78e1
578 files changed
+174415 -214

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
{
"mcpServers": {
"graphify-backend": {
"command": "/opt/anaconda3/bin/python",
"args": [
"-m",
"graphify.serve",
"/Users/wuzilong/work/00code/zkxw/backend/graphify-out/graph.json"
]
},
"graphify-frontend": {
"command": "/opt/anaconda3/bin/python",
"args": [
"-m",
"graphify.serve",
"/Users/wuzilong/work/00code/zkxw/web-admin/graphify-out/graph.json"
]
}
}
}
+21
View File
@@ -181,6 +181,27 @@ pnpm clean:dev # strip demo data for fresh start
- **Color tokens** (web-admin): Primary `#10b981`, dark `#059669`, bg `#ecfdf5`. Fresh Mint palette. **Do NOT use miniprogram colors in web-admin.**
- **Tree display**: dropdown shows node name; selected/input/table shows full path (spaced slash separator).
## Knowledge Graph (代码知识图谱)
项目已生成代码知识图谱,用于理解模块间依赖关系、追踪修改影响范围。
### 图谱位置
| 项目 | 报告 | 可视化 | 数据 |
|------|------|--------|------|
| 后端 | `backend/graphify-out/GRAPH_REPORT.md` | `backend/graphify-out/graph.html` | `backend/graphify-out/graph.json` |
| 前端 | `web-admin/graphify-out/GRAPH_REPORT.md` | `web-admin/graphify-out/graph.html` | `web-admin/graphify-out/graph.json` |
### 使用方式
- **浏览器**:直接打开 `*/graphify-out/graph.html` 查看交互式图谱
- **AI Agent 查询**:已配置 MCP 服务(graphify),可通过工具调用查询图谱
- **手动更新**:`./scripts/update-graph.sh [backend|frontend|all]`
### Agent 更新规则
完成代码修改后(新建文件、修改函数签名、新增/删除 import、重构模块),Agent SHALL 执行 `./scripts/update-graph.sh` 增量更新图谱,确保图谱与代码保持同步。如果只修改了单个项目(backend 或 web-admin),只需更新对应项目即可。
## Important Constraints
- **Language**: User communication in Chinese (简体中文) when user writes in Chinese.
+1 -1
View File
@@ -1 +1 @@
7085
94150
+4
View File
@@ -13,6 +13,8 @@ from app.api.qc import router as qc_router
from app.api.research_donation import router as research_donation_router
from app.api.production import router as production_router
from app.api.pilot_service import router as pilot_service_router
from app.api.insurance_company import router as insurance_company_router
from app.api.material import router as material_router
__all__ = [
"public_router",
@@ -29,4 +31,6 @@ __all__ = [
"research_donation_router",
"production_router",
"pilot_service_router",
"insurance_company_router",
"material_router",
]
+260 -2
View File
@@ -1,11 +1,12 @@
"""细胞存储 — 采集协议单 / 审核 / 财务确认 / 分期预警 API"""
from datetime import datetime, timedelta
from typing import Any, Dict, List, Optional
from fastapi import APIRouter, Depends, Query
from pydantic import BaseModel, ConfigDict, Field
from sqlalchemy.orm import Session
from sqlalchemy import and_ as sa_and
from sqlalchemy import and_ as sa_and, func as sa_func, or_ as sa_or
from app.core.database import get_db
from app.core.menu_guard import require_admin_or_super_admin
@@ -13,7 +14,14 @@ from app.core.response import error_response, success_response
from app.core.utils import parse_datetime
from app.crud import collection_protocol as cp_svc
from app.crud import customer as customer_crud
from app.models.models import BizCollectionProtocol, BizCustomer, SysUser
from app.models.models import (
BizCollectionProtocol,
BizCustomer,
BizProtocolPartyCustomer,
BizProtocolSample,
BizProtocolStorageCert,
SysUser,
)
router = APIRouter(prefix="/web/admin", tags=["细胞存储"])
@@ -657,3 +665,253 @@ async def post_refund_confirm(
except ValueError as e:
return error_response(400, str(e))
# ---------------------------------------------------------------------------
# 储存证明管理 / 满月待办
# ---------------------------------------------------------------------------
@router.get("/storage-certs")
async def list_storage_certs(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
keyword: Optional[str] = None,
makeStatus: Optional[str] = Query(None, alias="makeStatus"),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
q = (
db.query(BizCollectionProtocol)
.filter(
BizCollectionProtocol.del_flag == 0,
BizCollectionProtocol.tenant_no == tenant_no,
BizCollectionProtocol.protocol_status == "sxz",
)
)
kw = (keyword or "").strip()
if kw:
like = f"%{kw}%"
q = q.filter(BizCollectionProtocol.protocol_no.like(like))
protocol_ids_sub = q.with_entities(BizCollectionProtocol.id).subquery()
sample_exists = (
db.query(BizProtocolSample)
.filter(
BizProtocolSample.collection_protocol_id == protocol_ids_sub.c.id,
BizProtocolSample.del_flag == 0,
BizProtocolSample.sample_status == "yrk",
)
.limit(1)
.exists()
)
q = q.filter(sample_exists)
rows_all = q.order_by(BizCollectionProtocol.create_time.desc()).all()
protocol_ids = [r.id for r in rows_all]
pc_map: Dict[str, Any] = {}
sc_map: Dict[str, Any] = {}
sample_map: Dict[str, List[Dict[str, Any]]] = {}
if protocol_ids:
pc_rows = (
db.query(BizProtocolPartyCustomer)
.filter(
BizProtocolPartyCustomer.collection_protocol_id.in_(protocol_ids),
BizProtocolPartyCustomer.del_flag == 0,
)
.all()
)
for pc in pc_rows:
pc_map[pc.collection_protocol_id] = pc
sc_rows = (
db.query(BizProtocolStorageCert)
.filter(
BizProtocolStorageCert.collection_protocol_id.in_(protocol_ids),
BizProtocolStorageCert.del_flag == 0,
)
.all()
)
for sc in sc_rows:
sc_map[sc.collection_protocol_id] = sc
s_rows = (
db.query(BizProtocolSample)
.filter(
BizProtocolSample.collection_protocol_id.in_(protocol_ids),
BizProtocolSample.del_flag == 0,
BizProtocolSample.sample_status == "yrk",
)
.all()
)
for s in s_rows:
sample_map.setdefault(s.collection_protocol_id, []).append(
cp_svc._sample_to_dict(s)
)
items: List[Dict[str, Any]] = []
for r in rows_all:
sc = sc_map.get(r.id)
ms = (sc.make_status or "0") if sc else "0"
if makeStatus and makeStatus.strip() and ms != makeStatus.strip():
continue
pc = pc_map.get(r.id)
d: Dict[str, Any] = {
"id": r.id,
"protocolNo": r.protocol_no or "",
"protocolStatus": r.protocol_status or "",
"motherName": (pc.mother_name or "") if pc else "",
"newbornDeliveryTime": cp_svc._fmt_dt(pc.newborn_delivery_time) if pc else "",
"samples": sample_map.get(r.id, []),
"makeStatus": ms,
"certImageUrls": (sc.cert_image_urls or "") if sc else "",
"makeDate": ((sc.make_date or "").strip() if sc.make_date else "") if sc else "",
}
items.append(d)
total = len(items)
page_safe = max(1, page)
page_size_safe = min(max(1, pageSize), 100)
start = (page_safe - 1) * page_size_safe
page_items = items[start : start + page_size_safe]
tp = cp_svc.total_pages(total, page_size_safe)
return success_response(
{"list": page_items, "total": total, "page": page_safe, "pageSize": page_size_safe, "totalPages": tp}
)
@router.get("/fullmoon-todos")
async def list_fullmoon_todos(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
keyword: Optional[str] = None,
todoStatus: Optional[str] = Query(None, alias="todoStatus"),
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
q = (
db.query(BizCollectionProtocol, BizProtocolPartyCustomer)
.join(
BizProtocolPartyCustomer,
sa_and(
BizProtocolPartyCustomer.collection_protocol_id == BizCollectionProtocol.id,
BizProtocolPartyCustomer.del_flag == 0,
),
)
.filter(
BizCollectionProtocol.del_flag == 0,
BizCollectionProtocol.tenant_no == tenant_no,
BizCollectionProtocol.protocol_status == "sxz",
BizProtocolPartyCustomer.tenant_no == tenant_no,
)
)
kw = (keyword or "").strip()
if kw:
like = f"%{kw}%"
q = q.filter(
sa_or(
BizCollectionProtocol.protocol_no.like(like),
BizProtocolPartyCustomer.mother_name.like(like),
)
)
rows = q.order_by(BizCollectionProtocol.create_time.desc()).all()
protocol_ids = [r.id for r, _ in rows]
ft_map: Dict[str, Any] = {}
if protocol_ids:
from app.models.models import BizProtocolFullmoonTodo
ft_rows = (
db.query(BizProtocolFullmoonTodo)
.filter(
BizProtocolFullmoonTodo.collection_protocol_id.in_(protocol_ids),
BizProtocolFullmoonTodo.tenant_no == tenant_no,
BizProtocolFullmoonTodo.del_flag == 0,
)
.all()
)
for ft in ft_rows:
ft_map[ft.collection_protocol_id] = ft
now = datetime.now()
items: List[Dict[str, Any]] = []
for proto, pc in rows:
dt = pc.newborn_delivery_time
if not dt:
continue
fullmoon_date = dt + timedelta(days=30)
if fullmoon_date > now:
continue
ft = ft_map.get(proto.id)
ts = (ft.todo_status or "0") if ft else "0"
if todoStatus and todoStatus.strip() and ts != todoStatus.strip():
continue
d: Dict[str, Any] = {
"id": proto.id,
"protocolNo": proto.protocol_no or "",
"protocolStatus": proto.protocol_status or "",
"motherName": pc.mother_name or "",
"motherPhone": pc.mother_phone or "",
"newbornName": pc.newborn_name or "",
"newbornDeliveryTime": cp_svc._fmt_dt(dt),
"fullmoonDate": fullmoon_date.strftime("%Y-%m-%d"),
}
if ft:
d["fullmoonTodo"] = cp_svc._fullmoon_todo_to_dict(ft)
else:
d["fullmoonTodo"] = None
items.append(d)
total = len(items)
page_safe = max(1, page)
page_size_safe = min(max(1, pageSize), 100)
start = (page_safe - 1) * page_size_safe
page_items = items[start : start + page_size_safe]
tp = cp_svc.total_pages(total, page_size_safe)
return success_response(
{"list": page_items, "total": total, "page": page_safe, "pageSize": page_size_safe, "totalPages": tp}
)
class FullmoonTodoInsuranceBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
insurance_company_id: Optional[str] = Field(None, alias="insuranceCompanyId")
insurance_company_name: Optional[str] = Field(None, alias="insuranceCompanyName")
insurance_type: Optional[str] = Field(None, alias="insuranceType")
insurance_policy_no: Optional[str] = Field(None, alias="insurancePolicyNo")
insurance_effective_date: Optional[str] = Field(None, alias="insuranceEffectiveDate")
insurance_expiry_date: Optional[str] = Field(None, alias="insuranceExpiryDate")
insurance_subscribed: Optional[str] = Field(None, alias="insuranceSubscribed")
insurance_fee: Optional[float] = Field(None, alias="insuranceFee")
insurance_attachments: Optional[str] = Field(None, alias="insuranceAttachments")
todo_status: Optional[str] = Field(None, alias="todoStatus")
handle_date: Optional[str] = Field(None, alias="handleDate")
handle_remark: Optional[str] = Field(None, alias="handleRemark")
@router.put("/fullmoon-todos/{protocol_id}/insurance")
async def update_fullmoon_todo_insurance(
protocol_id: str,
body: FullmoonTodoInsuranceBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
user_id = _get_current_user_id(user)
try:
payload = body.model_dump(exclude_unset=True, by_alias=False)
ft = cp_svc.upsert_fullmoon_todo(
db,
protocol_id,
tenant_no,
user_id,
**payload,
)
return success_response(cp_svc._fullmoon_todo_to_dict(ft), message="更新成功")
except ValueError as e:
return error_response(400, str(e))
+832
View File
@@ -0,0 +1,832 @@
"""保险公司管理 API(保险公司 + 开票信息 + 项目价格)"""
import math
import uuid
from datetime import datetime
from typing import Any, List, Optional
from fastapi import APIRouter, Depends, Query
from pydantic import BaseModel, ConfigDict, Field
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.core.menu_guard import require_admin_or_super_admin
from app.core.response import error_response, success_response
from app.models.models import (
BizInsuranceCompany,
BizInsuranceCompanyInvoice,
BizInsuranceProjectPrice,
SysUser,
)
router = APIRouter(prefix="/web/admin", tags=["保险公司管理"])
# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------
def _get_tenant_no(db: Session, user: dict) -> str:
user_id = user.get("user_id")
if not user_id:
raise PermissionError("用户身份信息缺失,无法确定租户")
sys_user = db.query(SysUser).filter(SysUser.id == user_id).first()
if not sys_user or not sys_user.tenant_no:
raise PermissionError("用户租户信息缺失")
return sys_user.tenant_no
def _generate_uuid() -> str:
return str(uuid.uuid4()).replace("-", "")
def _fmt_dt(v) -> Optional[str]:
if v is None:
return None
if isinstance(v, datetime):
return v.strftime("%Y-%m-%d %H:%M:%S")
return str(v)
def _total_pages(total: int, page_size: int) -> int:
return math.ceil(total / page_size) if page_size > 0 else 0
# ---------------------------------------------------------------------------
# Row-to-dict helpers (camelCase JSON)
# ---------------------------------------------------------------------------
def _row_to_dict_company(row: BizInsuranceCompany) -> dict:
return {
"id": row.id,
"companyName": row.company_name,
"companyAddress": row.company_address,
"contactName": row.contact_name,
"contactPhone": row.contact_phone,
"status": row.status,
"tenantNo": row.tenant_no,
"orderNum": row.order_num,
"remark": row.remark,
"createBy": row.create_by,
"createDeptId": row.create_dept_id,
"createTime": _fmt_dt(row.create_time),
"updateBy": row.update_by,
"updateTime": _fmt_dt(row.update_time),
}
def _row_to_dict_invoice(row: BizInsuranceCompanyInvoice) -> dict:
return {
"id": row.id,
"insuranceCompanyId": row.insurance_company_id,
"companyName": row.company_name,
"taxNo": row.tax_no,
"companyAddress": row.company_address,
"companyPhone": row.company_phone,
"bankName": row.bank_name,
"bankAccount": row.bank_account,
"tenantNo": row.tenant_no,
"orderNum": row.order_num,
"remark": row.remark,
"createBy": row.create_by,
"createDeptId": row.create_dept_id,
"createTime": _fmt_dt(row.create_time),
"updateBy": row.update_by,
"updateTime": _fmt_dt(row.update_time),
}
def _row_to_dict_project_price(row: BizInsuranceProjectPrice) -> dict:
return {
"id": row.id,
"insuranceCompanyId": row.insurance_company_id,
"projectName": row.project_name,
"projectFee": float(row.project_fee) if row.project_fee is not None else None,
"status": row.status,
"tenantNo": row.tenant_no,
"orderNum": row.order_num,
"remark": row.remark,
"createBy": row.create_by,
"createDeptId": row.create_dept_id,
"createTime": _fmt_dt(row.create_time),
"updateBy": row.update_by,
"updateTime": _fmt_dt(row.update_time),
}
# ---------------------------------------------------------------------------
# Inline CRUD — 保险公司主表
# ---------------------------------------------------------------------------
def _list_insurance_companies(
db: Session, *, page: int, page_size: int, keyword: Optional[str], tenant_no: str
):
q = db.query(BizInsuranceCompany).filter(
BizInsuranceCompany.tenant_no == tenant_no,
BizInsuranceCompany.del_flag == 0,
)
if keyword:
q = q.filter(BizInsuranceCompany.company_name.like(f"%{keyword}%"))
total = q.count()
rows = (
q.order_by(BizInsuranceCompany.create_time.desc())
.offset((page - 1) * page_size)
.limit(page_size)
.all()
)
return [_row_to_dict_company(r) for r in rows], total
def _create_insurance_company(
db: Session,
*,
company_name: str,
company_address: Optional[str],
contact_name: Optional[str],
contact_phone: Optional[str],
status: Optional[str],
tenant_no: str,
order_num: Optional[int],
remark: Optional[str],
user_id: str,
) -> BizInsuranceCompany:
obj = BizInsuranceCompany(
id=_generate_uuid(),
company_name=company_name,
company_address=company_address,
contact_name=contact_name,
contact_phone=contact_phone,
status=status or "1",
tenant_no=tenant_no,
order_num=order_num or 0,
remark=remark,
create_by=user_id,
create_dept_id="",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
db.add(obj)
db.commit()
db.refresh(obj)
return obj
def _update_insurance_company(
db: Session,
row_id: str,
*,
company_name: Optional[str],
company_address: Optional[str],
contact_name: Optional[str],
contact_phone: Optional[str],
status: Optional[str],
order_num: Optional[int],
remark: Optional[str],
user_id: str,
tenant_no: str,
) -> BizInsuranceCompany:
obj = (
db.query(BizInsuranceCompany)
.filter(
BizInsuranceCompany.id == row_id,
BizInsuranceCompany.tenant_no == tenant_no,
BizInsuranceCompany.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("记录不存在")
if company_name is not None:
obj.company_name = company_name
if company_address is not None:
obj.company_address = company_address
if contact_name is not None:
obj.contact_name = contact_name
if contact_phone is not None:
obj.contact_phone = contact_phone
if status is not None:
obj.status = status
if order_num is not None:
obj.order_num = order_num
if remark is not None:
obj.remark = remark
obj.update_by = user_id
obj.update_time = datetime.now()
db.commit()
db.refresh(obj)
return obj
def _soft_delete_insurance_company(db: Session, row_id: str, *, tenant_no: str):
obj = (
db.query(BizInsuranceCompany)
.filter(
BizInsuranceCompany.id == row_id,
BizInsuranceCompany.tenant_no == tenant_no,
BizInsuranceCompany.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("记录不存在")
obj.del_flag = 1
db.commit()
# ---------------------------------------------------------------------------
# Inline CRUD — 保险公司开票信息
# ---------------------------------------------------------------------------
def _list_insurance_company_invoices(
db: Session, insurance_company_id: str, *, tenant_no: str
):
# Verify parent exists
parent = (
db.query(BizInsuranceCompany)
.filter(
BizInsuranceCompany.id == insurance_company_id,
BizInsuranceCompany.tenant_no == tenant_no,
BizInsuranceCompany.del_flag == 0,
)
.first()
)
if not parent:
raise ValueError("保险公司不存在")
rows = (
db.query(BizInsuranceCompanyInvoice)
.filter(
BizInsuranceCompanyInvoice.insurance_company_id == insurance_company_id,
BizInsuranceCompanyInvoice.tenant_no == tenant_no,
BizInsuranceCompanyInvoice.del_flag == 0,
)
.order_by(BizInsuranceCompanyInvoice.create_time.desc())
.all()
)
return [_row_to_dict_invoice(r) for r in rows]
def _create_insurance_company_invoice(
db: Session,
*,
insurance_company_id: str,
company_name: str,
tax_no: Optional[str],
company_address: Optional[str],
company_phone: Optional[str],
bank_name: Optional[str],
bank_account: Optional[str],
tenant_no: str,
order_num: Optional[int],
remark: Optional[str],
user_id: str,
) -> BizInsuranceCompanyInvoice:
obj = BizInsuranceCompanyInvoice(
id=_generate_uuid(),
insurance_company_id=insurance_company_id,
company_name=company_name,
tax_no=tax_no,
company_address=company_address,
company_phone=company_phone,
bank_name=bank_name,
bank_account=bank_account,
tenant_no=tenant_no,
order_num=order_num or 0,
remark=remark,
create_by=user_id,
create_dept_id="",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
db.add(obj)
db.commit()
db.refresh(obj)
return obj
def _update_insurance_company_invoice(
db: Session,
row_id: str,
*,
company_name: Optional[str],
tax_no: Optional[str],
company_address: Optional[str],
company_phone: Optional[str],
bank_name: Optional[str],
bank_account: Optional[str],
order_num: Optional[int],
remark: Optional[str],
user_id: str,
tenant_no: str,
) -> BizInsuranceCompanyInvoice:
obj = (
db.query(BizInsuranceCompanyInvoice)
.filter(
BizInsuranceCompanyInvoice.id == row_id,
BizInsuranceCompanyInvoice.tenant_no == tenant_no,
BizInsuranceCompanyInvoice.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("记录不存在")
if company_name is not None:
obj.company_name = company_name
if tax_no is not None:
obj.tax_no = tax_no
if company_address is not None:
obj.company_address = company_address
if company_phone is not None:
obj.company_phone = company_phone
if bank_name is not None:
obj.bank_name = bank_name
if bank_account is not None:
obj.bank_account = bank_account
if order_num is not None:
obj.order_num = order_num
if remark is not None:
obj.remark = remark
obj.update_by = user_id
obj.update_time = datetime.now()
db.commit()
db.refresh(obj)
return obj
def _soft_delete_insurance_company_invoice(db: Session, row_id: str, *, tenant_no: str):
obj = (
db.query(BizInsuranceCompanyInvoice)
.filter(
BizInsuranceCompanyInvoice.id == row_id,
BizInsuranceCompanyInvoice.tenant_no == tenant_no,
BizInsuranceCompanyInvoice.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("记录不存在")
obj.del_flag = 1
db.commit()
# ---------------------------------------------------------------------------
# Inline CRUD — 保险项目价格
# ---------------------------------------------------------------------------
def _list_insurance_project_prices(
db: Session, insurance_company_id: str, *, tenant_no: str
):
# Verify parent exists
parent = (
db.query(BizInsuranceCompany)
.filter(
BizInsuranceCompany.id == insurance_company_id,
BizInsuranceCompany.tenant_no == tenant_no,
BizInsuranceCompany.del_flag == 0,
)
.first()
)
if not parent:
raise ValueError("保险公司不存在")
rows = (
db.query(BizInsuranceProjectPrice)
.filter(
BizInsuranceProjectPrice.insurance_company_id == insurance_company_id,
BizInsuranceProjectPrice.tenant_no == tenant_no,
BizInsuranceProjectPrice.del_flag == 0,
)
.order_by(BizInsuranceProjectPrice.create_time.desc())
.all()
)
return [_row_to_dict_project_price(r) for r in rows]
def _create_insurance_project_price(
db: Session,
*,
insurance_company_id: str,
project_name: str,
project_fee: Optional[float],
status: Optional[str],
tenant_no: str,
order_num: Optional[int],
remark: Optional[str],
user_id: str,
) -> BizInsuranceProjectPrice:
obj = BizInsuranceProjectPrice(
id=_generate_uuid(),
insurance_company_id=insurance_company_id,
project_name=project_name,
project_fee=project_fee,
status=status or "1",
tenant_no=tenant_no,
order_num=order_num or 0,
remark=remark,
create_by=user_id,
create_dept_id="",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
db.add(obj)
db.commit()
db.refresh(obj)
return obj
def _update_insurance_project_price(
db: Session,
row_id: str,
*,
project_name: Optional[str],
project_fee: Optional[float],
status: Optional[str],
order_num: Optional[int],
remark: Optional[str],
user_id: str,
tenant_no: str,
) -> BizInsuranceProjectPrice:
obj = (
db.query(BizInsuranceProjectPrice)
.filter(
BizInsuranceProjectPrice.id == row_id,
BizInsuranceProjectPrice.tenant_no == tenant_no,
BizInsuranceProjectPrice.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("记录不存在")
if project_name is not None:
obj.project_name = project_name
if project_fee is not None:
obj.project_fee = project_fee
if status is not None:
obj.status = status
if order_num is not None:
obj.order_num = order_num
if remark is not None:
obj.remark = remark
obj.update_by = user_id
obj.update_time = datetime.now()
db.commit()
db.refresh(obj)
return obj
def _soft_delete_insurance_project_price(db: Session, row_id: str, *, tenant_no: str):
obj = (
db.query(BizInsuranceProjectPrice)
.filter(
BizInsuranceProjectPrice.id == row_id,
BizInsuranceProjectPrice.tenant_no == tenant_no,
BizInsuranceProjectPrice.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("记录不存在")
obj.del_flag = 1
db.commit()
# ---------------------------------------------------------------------------
# 1. 保险公司(主表)
# ---------------------------------------------------------------------------
class InsuranceCompanyCreateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
company_name: str = Field(..., alias="companyName")
company_address: Optional[str] = Field(None, alias="companyAddress")
contact_name: Optional[str] = Field(None, alias="contactName")
contact_phone: Optional[str] = Field(None, alias="contactPhone")
status: Optional[str] = Field("1", alias="status")
order_num: Optional[int] = Field(0, alias="orderNum")
remark: Optional[str] = None
class InsuranceCompanyUpdateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
company_name: Optional[str] = Field(None, alias="companyName")
company_address: Optional[str] = Field(None, alias="companyAddress")
contact_name: Optional[str] = Field(None, alias="contactName")
contact_phone: Optional[str] = Field(None, alias="contactPhone")
status: Optional[str] = Field(None, alias="status")
order_num: Optional[int] = Field(None, alias="orderNum")
remark: Optional[str] = None
@router.get("/insurance-companies")
async def list_insurance_companies(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
keyword: Optional[str] = None,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
tenant_no = _get_tenant_no(db, user)
items, total = _list_insurance_companies(
db, page=page, page_size=pageSize, keyword=keyword, tenant_no=tenant_no
)
tp = _total_pages(total, pageSize)
return success_response(
{"list": items, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp}
)
@router.post("/insurance-companies")
async def create_insurance_company(
body: InsuranceCompanyCreateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
obj = _create_insurance_company(
db,
company_name=body.company_name,
company_address=body.company_address,
contact_name=body.contact_name,
contact_phone=body.contact_phone,
status=body.status,
tenant_no=tenant_no,
order_num=body.order_num,
remark=body.remark,
user_id=user.get("user_id"),
)
return success_response(_row_to_dict_company(obj), message="创建成功")
except ValueError as e:
return error_response(400, str(e))
@router.put("/insurance-companies/{row_id}")
async def update_insurance_company(
row_id: str,
body: InsuranceCompanyUpdateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
payload: dict[str, Any] = body.model_dump(exclude_unset=True, by_alias=False)
obj = _update_insurance_company(
db,
row_id,
company_name=payload.get("company_name"),
company_address=payload.get("company_address"),
contact_name=payload.get("contact_name"),
contact_phone=payload.get("contact_phone"),
status=payload.get("status"),
order_num=payload.get("order_num"),
remark=payload.get("remark"),
user_id=user.get("user_id"),
tenant_no=tenant_no,
)
return success_response(_row_to_dict_company(obj), message="更新成功")
except ValueError as e:
return error_response(400, str(e))
@router.delete("/insurance-companies/{row_id}")
async def delete_insurance_company(
row_id: str,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
_soft_delete_insurance_company(db, row_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except ValueError as e:
return error_response(400, str(e))
# ---------------------------------------------------------------------------
# 2. 保险公司开票信息(子表)
# ---------------------------------------------------------------------------
class InsuranceCompanyInvoiceCreateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
company_name: str = Field(..., alias="companyName")
tax_no: Optional[str] = Field(None, alias="taxNo")
company_address: Optional[str] = Field(None, alias="companyAddress")
company_phone: Optional[str] = Field(None, alias="companyPhone")
bank_name: Optional[str] = Field(None, alias="bankName")
bank_account: Optional[str] = Field(None, alias="bankAccount")
order_num: Optional[int] = Field(0, alias="orderNum")
remark: Optional[str] = None
class InsuranceCompanyInvoiceUpdateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
company_name: Optional[str] = Field(None, alias="companyName")
tax_no: Optional[str] = Field(None, alias="taxNo")
company_address: Optional[str] = Field(None, alias="companyAddress")
company_phone: Optional[str] = Field(None, alias="companyPhone")
bank_name: Optional[str] = Field(None, alias="bankName")
bank_account: Optional[str] = Field(None, alias="bankAccount")
order_num: Optional[int] = Field(None, alias="orderNum")
remark: Optional[str] = None
@router.get("/insurance-companies/{company_id}/invoices")
async def list_insurance_company_invoices(
company_id: str,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
items = _list_insurance_company_invoices(db, company_id, tenant_no=tenant_no)
return success_response(items)
except ValueError as e:
return error_response(400, str(e))
@router.post("/insurance-companies/{company_id}/invoices")
async def create_insurance_company_invoice(
company_id: str,
body: InsuranceCompanyInvoiceCreateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
obj = _create_insurance_company_invoice(
db,
insurance_company_id=company_id,
company_name=body.company_name,
tax_no=body.tax_no,
company_address=body.company_address,
company_phone=body.company_phone,
bank_name=body.bank_name,
bank_account=body.bank_account,
tenant_no=tenant_no,
order_num=body.order_num,
remark=body.remark,
user_id=user.get("user_id"),
)
return success_response(_row_to_dict_invoice(obj), message="创建成功")
except ValueError as e:
return error_response(400, str(e))
@router.put("/insurance-company-invoices/{invoice_id}")
async def update_insurance_company_invoice(
invoice_id: str,
body: InsuranceCompanyInvoiceUpdateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
payload: dict[str, Any] = body.model_dump(exclude_unset=True, by_alias=False)
obj = _update_insurance_company_invoice(
db,
invoice_id,
company_name=payload.get("company_name"),
tax_no=payload.get("tax_no"),
company_address=payload.get("company_address"),
company_phone=payload.get("company_phone"),
bank_name=payload.get("bank_name"),
bank_account=payload.get("bank_account"),
order_num=payload.get("order_num"),
remark=payload.get("remark"),
user_id=user.get("user_id"),
tenant_no=tenant_no,
)
return success_response(_row_to_dict_invoice(obj), message="更新成功")
except ValueError as e:
return error_response(400, str(e))
@router.delete("/insurance-company-invoices/{invoice_id}")
async def delete_insurance_company_invoice(
invoice_id: str,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
_soft_delete_insurance_company_invoice(db, invoice_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except ValueError as e:
return error_response(400, str(e))
# ---------------------------------------------------------------------------
# 3. 保险项目价格(子表)
# ---------------------------------------------------------------------------
class InsuranceProjectPriceCreateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
project_name: str = Field(..., alias="projectName")
project_fee: Optional[float] = Field(None, alias="projectFee")
status: Optional[str] = Field("1", alias="status")
order_num: Optional[int] = Field(0, alias="orderNum")
remark: Optional[str] = None
class InsuranceProjectPriceUpdateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
project_name: Optional[str] = Field(None, alias="projectName")
project_fee: Optional[float] = Field(None, alias="projectFee")
status: Optional[str] = Field(None, alias="status")
order_num: Optional[int] = Field(None, alias="orderNum")
remark: Optional[str] = None
@router.get("/insurance-companies/{company_id}/project-prices")
async def list_insurance_project_prices(
company_id: str,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
items = _list_insurance_project_prices(db, company_id, tenant_no=tenant_no)
return success_response(items)
except ValueError as e:
return error_response(400, str(e))
@router.post("/insurance-companies/{company_id}/project-prices")
async def create_insurance_project_price(
company_id: str,
body: InsuranceProjectPriceCreateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
obj = _create_insurance_project_price(
db,
insurance_company_id=company_id,
project_name=body.project_name,
project_fee=body.project_fee,
status=body.status,
tenant_no=tenant_no,
order_num=body.order_num,
remark=body.remark,
user_id=user.get("user_id"),
)
return success_response(_row_to_dict_project_price(obj), message="创建成功")
except ValueError as e:
return error_response(400, str(e))
@router.put("/insurance-project-prices/{price_id}")
async def update_insurance_project_price(
price_id: str,
body: InsuranceProjectPriceUpdateBody,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
payload: dict[str, Any] = body.model_dump(exclude_unset=True, by_alias=False)
obj = _update_insurance_project_price(
db,
price_id,
project_name=payload.get("project_name"),
project_fee=payload.get("project_fee"),
status=payload.get("status"),
order_num=payload.get("order_num"),
remark=payload.get("remark"),
user_id=user.get("user_id"),
tenant_no=tenant_no,
)
return success_response(_row_to_dict_project_price(obj), message="更新成功")
except ValueError as e:
return error_response(400, str(e))
@router.delete("/insurance-project-prices/{price_id}")
async def delete_insurance_project_price(
price_id: str,
user: dict = Depends(require_admin_or_super_admin),
db: Session = Depends(get_db),
):
try:
tenant_no = _get_tenant_no(db, user)
_soft_delete_insurance_project_price(db, price_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except ValueError as e:
return error_response(400, str(e))
+226
View File
@@ -0,0 +1,226 @@
"""市场物料库 API"""
from typing import Optional
from fastapi import APIRouter, Depends, Query
from pydantic import BaseModel, ConfigDict, Field
from sqlalchemy.orm import Session
from app.api.sample_reception import _get_current_user_id, _get_tenant_no, _page_payload
from app.core.database import get_db
from app.core.menu_guard import require_admin_or_super_admin, require_menu_code
from app.core.response import error_response, success_response
from app.crud import material as mat_svc
from app.crud import material_stock_log as msl_svc
router = APIRouter(prefix="/web/admin", tags=["市场物料"])
# ---------- Body models ----------
class MaterialBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
material_code: str = Field(..., alias="materialCode")
material_name: str = Field(..., alias="materialName")
category: Optional[str] = None
spec_model: Optional[str] = Field(None, alias="specModel")
unit: Optional[str] = None
status: str = "1"
order_num: Optional[int] = Field(None, alias="orderNum")
remark: Optional[str] = None
image_urls: Optional[str] = Field(None, alias="imageUrls")
class MaterialUpdateBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
material_code: Optional[str] = Field(None, alias="materialCode")
material_name: Optional[str] = Field(None, alias="materialName")
category: Optional[str] = None
spec_model: Optional[str] = Field(None, alias="specModel")
unit: Optional[str] = None
status: Optional[str] = None
order_num: Optional[int] = Field(None, alias="orderNum")
remark: Optional[str] = None
image_urls: Optional[str] = Field(None, alias="imageUrls")
class StockInBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
qty: float = Field(..., gt=0)
remark: Optional[str] = None
class StockOutBody(BaseModel):
model_config = ConfigDict(populate_by_name=True)
qty: float = Field(..., gt=0)
receiver: Optional[str] = None
purpose: Optional[str] = None
remark: Optional[str] = None
# ---------- 物料 CRUD ----------
@router.get("/materials")
async def list_materials(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100),
keyword: Optional[str] = None,
category: Optional[str] = None,
status: Optional[str] = None,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
items, total = mat_svc.list_materials(
db, tenant_no, page=page, page_size=pageSize,
keyword=keyword, category=category, status=status,
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
except Exception as e:
return error_response(str(e))
@router.get("/materials/options")
async def material_options(
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
return success_response(mat_svc.options_list(db, tenant_no=tenant_no))
except Exception as e:
return error_response(str(e))
@router.post("/materials")
async def create_material(
body: MaterialBody,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
user_id = _get_current_user_id(user)
obj = mat_svc.create_material(
db, body.model_dump(by_alias=True, exclude_none=True),
tenant_no=tenant_no, user_id=user_id,
)
return success_response(obj, message="创建成功")
except ValueError as e:
return error_response(str(e))
except Exception as e:
return error_response(str(e))
@router.put("/materials/{material_id}")
async def update_material(
material_id: str,
body: MaterialUpdateBody,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
user_id = _get_current_user_id(user)
obj = mat_svc.update_material(
db, material_id, body.model_dump(by_alias=True, exclude_none=True),
tenant_no=tenant_no, user_id=user_id,
)
return success_response(obj, message="更新成功")
except ValueError as e:
return error_response(str(e))
except Exception as e:
return error_response(str(e))
@router.delete("/materials/{material_id}")
async def delete_material(
material_id: str,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
user_id = _get_current_user_id(user)
mat_svc.soft_delete_material(db, material_id, tenant_no=tenant_no, user_id=user_id)
return success_response(None, message="删除成功")
except ValueError as e:
return error_response(str(e))
except Exception as e:
return error_response(str(e))
@router.post("/materials/{material_id}/stock-in")
async def stock_in_material(
material_id: str,
body: StockInBody,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
user_id = _get_current_user_id(user)
obj = mat_svc.stock_in(
db, material_id, qty=body.qty, remark=body.remark,
tenant_no=tenant_no, user_id=user_id,
)
return success_response(obj, message="入库成功")
except ValueError as e:
return error_response(str(e))
except Exception as e:
return error_response(str(e))
@router.post("/materials/{material_id}/stock-out")
async def stock_out_material(
material_id: str,
body: StockOutBody,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:material:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
user_id = _get_current_user_id(user)
obj = mat_svc.stock_out(
db, material_id, qty=body.qty, receiver=body.receiver,
purpose=body.purpose, remark=body.remark,
tenant_no=tenant_no, user_id=user_id,
)
return success_response(obj, message="出库成功")
except ValueError as e:
return error_response(str(e))
except Exception as e:
return error_response(str(e))
# ---------- 库存变动记录 ----------
@router.get("/material-stock-logs")
async def list_stock_logs(
page: int = Query(1, ge=1),
pageSize: int = Query(10, ge=1, le=100),
materialId: Optional[str] = None,
changeType: Optional[str] = None,
startTime: Optional[str] = None,
endTime: Optional[str] = None,
keyword: Optional[str] = None,
db: Session = Depends(get_db),
user: dict = Depends(require_menu_code("biz:materialStockLog:list")),
):
try:
tenant_no = _get_tenant_no(db, user)
items, total = msl_svc.list_stock_logs(
db, tenant_no, page=page, page_size=pageSize,
material_id=materialId, change_type=changeType,
start_time=startTime, end_time=endTime, keyword=keyword,
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
except Exception as e:
return error_response(str(e))
+1 -13
View File
@@ -6,20 +6,8 @@ from app.core.response import success_response
router = APIRouter(prefix="/web/menu", tags=["菜单管理"])
# 与 web-admin/src/router/modules/sqxp.ts 一致:工作台、系统管理、基础信息管理 等
# 与 web-admin/src/router/modules/sqxp.ts 一致:系统管理、基础信息管理 等
STATIC_MENU_TREE = [
{
"id": "10000000000000000000000000000001_child",
"name": "Console",
"path": "/console",
"component": "/dashboard/console/index",
"meta": {
"title": "工作台",
"keepAlive": True,
"fixedTab": True,
"menuCode": "dashboard",
},
},
{
"id": "100",
"name": "System",
+105
View File
@@ -22,6 +22,7 @@ from app.models.models import (
BizCollectionProtocol,
BizProtocolAudit,
BizProtocolCollectionInfo,
BizProtocolFullmoonTodo,
BizProtocolPartyCustomer,
BizProtocolPayment,
BizProtocolPaymentDetail,
@@ -2215,3 +2216,107 @@ def upsert_storage_cert(
db.commit()
db.refresh(obj)
return obj
# ---------------------------------------------------------------------------
# 子表:满月待办
# ---------------------------------------------------------------------------
def _fullmoon_todo_to_dict(ft: BizProtocolFullmoonTodo) -> Dict[str, Any]:
return {
"id": ft.id,
"collectionProtocolId": ft.collection_protocol_id,
"todoStatus": ft.todo_status or "0",
"handleDate": (ft.handle_date or "").strip() if ft.handle_date else "",
"handleRemark": ft.handle_remark or "",
"insuranceAttachments": ft.insurance_attachments or "",
"insuranceCompanyId": ft.insurance_company_id or "",
"insuranceCompanyName": ft.insurance_company_name or "",
"insuranceType": ft.insurance_type or "",
"insurancePolicyNo": ft.insurance_policy_no or "",
"insuranceEffectiveDate": (ft.insurance_effective_date or "").strip() if ft.insurance_effective_date else "",
"insuranceExpiryDate": (ft.insurance_expiry_date or "").strip() if ft.insurance_expiry_date else "",
"insuranceSubscribed": ft.insurance_subscribed or "0",
"insuranceFee": _dec(ft.insurance_fee),
"tenantNo": ft.tenant_no,
"orderNum": ft.order_num if ft.order_num is not None else 0,
"remark": ft.remark or "",
"createTime": _fmt_dt(ft.create_time),
"updateTime": _fmt_dt(ft.update_time),
}
def get_fullmoon_todo(
db: Session,
collection_protocol_id: str,
tenant_no: str,
) -> Optional[BizProtocolFullmoonTodo]:
return (
db.query(BizProtocolFullmoonTodo)
.filter(
and_(
BizProtocolFullmoonTodo.collection_protocol_id == collection_protocol_id,
BizProtocolFullmoonTodo.tenant_no == tenant_no,
BizProtocolFullmoonTodo.del_flag == 0,
)
)
.first()
)
def upsert_fullmoon_todo(
db: Session,
collection_protocol_id: str,
tenant_no: str,
user_id: Optional[str],
**fields,
) -> BizProtocolFullmoonTodo:
fields = _normalize_fields(fields)
obj = get_fullmoon_todo(db, collection_protocol_id, tenant_no)
_STR_FIELDS = [
"todo_status", "handle_date", "handle_remark",
"insurance_attachments", "insurance_company_id",
"insurance_company_name", "insurance_type",
"insurance_policy_no", "insurance_effective_date",
"insurance_expiry_date", "insurance_subscribed",
]
_DEC_FIELDS = ["insurance_fee"]
if obj:
for k in _STR_FIELDS:
if k in fields:
setattr(obj, k, (fields[k] or "").strip() or None)
for k in _DEC_FIELDS:
if k in fields and fields[k] is not None:
setattr(obj, k, Decimal(str(fields[k])))
if "remark" in fields:
obj.remark = (fields["remark"] or "").strip() or None
obj.update_by = user_id
obj.update_time = datetime.now()
db.add(obj)
db.commit()
db.refresh(obj)
return obj
obj = BizProtocolFullmoonTodo(
id=generate_uuid(),
collection_protocol_id=collection_protocol_id,
tenant_no=tenant_no,
order_num=0,
remark=(fields.get("remark") or "").strip() or None,
create_by=user_id,
create_dept_id="",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
for k in _STR_FIELDS:
if k in fields:
setattr(obj, k, (fields[k] or "").strip() or None)
for k in _DEC_FIELDS:
if k in fields and fields[k] is not None:
setattr(obj, k, Decimal(str(fields[k])))
db.add(obj)
db.commit()
db.refresh(obj)
return obj
+397
View File
@@ -0,0 +1,397 @@
"""市场物料库 CRUD"""
from __future__ import annotations
from datetime import datetime
from decimal import Decimal
from typing import Any, Dict, List, Optional, Tuple
from sqlalchemy import func, or_
from sqlalchemy.orm import Session
from app.core.utils import generate_uuid
from app.models.material import BizMaterial, BizMaterialStockLog
def _dec(v: Any) -> float:
if v is None:
return 0.0
return float(v)
def _fmt_dt(t: Optional[datetime]) -> str:
return t.strftime("%Y-%m-%d %H:%M:%S") if t else ""
def _row_to_dict(r: BizMaterial) -> Dict[str, Any]:
return {
"id": r.id,
"materialCode": r.material_code,
"materialName": r.material_name,
"category": r.category or "",
"specModel": r.spec_model or "",
"unit": r.unit or "",
"stockQty": _dec(r.stock_qty),
"status": r.status or "1",
"imageUrls": r.image_urls or "",
"orderNum": r.order_num if r.order_num is not None else 0,
"remark": r.remark or "",
"createTime": _fmt_dt(r.create_time),
"updateTime": _fmt_dt(r.update_time),
}
def _code_exists(
db: Session, code: str, tenant_no: str, exclude_id: Optional[str] = None
) -> bool:
c = (code or "").strip()
if not c:
return False
q = db.query(BizMaterial).filter(
BizMaterial.material_code == c,
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
if exclude_id:
q = q.filter(BizMaterial.id != exclude_id)
return q.first() is not None
def list_materials(
db: Session,
tenant_no: str,
*,
page: int = 1,
page_size: int = 10,
keyword: Optional[str] = None,
category: Optional[str] = None,
status: Optional[str] = None,
) -> Tuple[List[Dict[str, Any]], int]:
def _filtered():
q0 = db.query(BizMaterial).filter(
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
kw = (keyword or "").strip()
if kw:
like = f"%{kw}%"
q0 = q0.filter(
or_(
BizMaterial.material_code.ilike(like),
BizMaterial.material_name.ilike(like),
)
)
cat = (category or "").strip()
if cat:
q0 = q0.filter(BizMaterial.category == cat)
st = (status or "").strip()
if st in ("0", "1"):
q0 = q0.filter(BizMaterial.status == st)
return q0
total = _filtered().order_by(None).with_entities(func.count(BizMaterial.id)).scalar() or 0
page = max(1, page)
page_size = min(max(1, page_size), 100)
rows = (
_filtered()
.order_by(BizMaterial.create_time.desc())
.offset((page - 1) * page_size)
.limit(page_size)
.all()
)
return [_row_to_dict(x) for x in rows], int(total)
def get_material(
db: Session, material_id: str, tenant_no: str
) -> Optional[Dict[str, Any]]:
obj = (
db.query(BizMaterial)
.filter(
BizMaterial.id == material_id,
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
.first()
)
if not obj:
return None
return _row_to_dict(obj)
def create_material(
db: Session,
data: Dict[str, Any],
*,
tenant_no: str,
user_id: Optional[str] = None,
dept_id: str = "",
) -> Dict[str, Any]:
code = (data.get("materialCode") or "").strip()
if not code:
raise ValueError("物料编码不能为空")
if _code_exists(db, code, tenant_no):
raise ValueError("物料编码已存在")
name = (data.get("materialName") or "").strip()
if not name:
raise ValueError("物料名称不能为空")
status = (data.get("status") or "1").strip()
if status not in ("0", "1"):
raise ValueError("状态无效")
obj = BizMaterial(
id=generate_uuid(),
material_code=code,
material_name=name,
category=(data.get("category") or "").strip() or None,
spec_model=(data.get("specModel") or "").strip() or None,
unit=(data.get("unit") or "").strip() or None,
stock_qty=0,
status=status,
image_urls=(data.get("imageUrls") or "").strip() or None,
tenant_no=tenant_no,
order_num=data.get("orderNum") if data.get("orderNum") is not None else 0,
remark=(data.get("remark") or "").strip() or None,
create_by=user_id,
create_dept_id=dept_id or "",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
db.add(obj)
db.commit()
db.refresh(obj)
return _row_to_dict(obj)
def update_material(
db: Session,
material_id: str,
data: Dict[str, Any],
*,
tenant_no: str,
user_id: Optional[str] = None,
) -> Dict[str, Any]:
obj = (
db.query(BizMaterial)
.filter(
BizMaterial.id == material_id,
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("物料不存在")
if "materialCode" in data and data["materialCode"] is not None:
code = data["materialCode"].strip()
if not code:
raise ValueError("物料编码不能为空")
if code != obj.material_code and _code_exists(db, code, tenant_no, exclude_id=material_id):
raise ValueError("物料编码已存在")
obj.material_code = code
if "materialName" in data and data["materialName"] is not None:
name = data["materialName"].strip()
if not name:
raise ValueError("物料名称不能为空")
obj.material_name = name
if "category" in data:
obj.category = (data["category"] or "").strip() or None
if "specModel" in data:
obj.spec_model = (data["specModel"] or "").strip() or None
if "unit" in data:
obj.unit = (data["unit"] or "").strip() or None
if "status" in data and data["status"] is not None:
st = data["status"].strip()
if st not in ("0", "1"):
raise ValueError("状态无效")
obj.status = st
if "imageUrls" in data:
obj.image_urls = (data["imageUrls"] or "").strip() or None
if "orderNum" in data:
obj.order_num = data["orderNum"]
if "remark" in data:
obj.remark = (data["remark"] or "").strip() or None
obj.update_by = user_id
obj.update_time = datetime.now()
db.add(obj)
db.commit()
db.refresh(obj)
return _row_to_dict(obj)
def soft_delete_material(
db: Session,
material_id: str,
tenant_no: str,
user_id: Optional[str] = None,
) -> None:
obj = (
db.query(BizMaterial)
.filter(
BizMaterial.id == material_id,
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
.first()
)
if not obj:
raise ValueError("物料不存在")
if obj.stock_qty is not None and _dec(obj.stock_qty) > 0:
raise ValueError("该物料仍有库存,无法删除")
obj.del_flag = 1
obj.update_by = user_id
obj.update_time = datetime.now()
db.add(obj)
db.commit()
def stock_in(
db: Session,
material_id: str,
*,
qty: float,
remark: Optional[str] = None,
tenant_no: str,
user_id: Optional[str] = None,
dept_id: str = "",
) -> Dict[str, Any]:
if qty is None or qty <= 0:
raise ValueError("入库数量必须大于0")
qty_dec = Decimal(str(qty))
obj = (
db.query(BizMaterial)
.filter(
BizMaterial.id == material_id,
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
.with_for_update()
.first()
)
if not obj:
raise ValueError("物料不存在")
stock_before = obj.stock_qty if obj.stock_qty is not None else Decimal("0")
stock_after = stock_before + qty_dec
obj.stock_qty = stock_after
obj.update_by = user_id
obj.update_time = datetime.now()
db.add(obj)
log = BizMaterialStockLog(
id=generate_uuid(),
material_id=obj.id,
material_code=obj.material_code,
material_name=obj.material_name,
change_type="rk",
change_qty=qty_dec,
stock_before=stock_before,
stock_after=stock_after,
tenant_no=tenant_no,
remark=(remark or "").strip() or None,
create_by=user_id,
create_dept_id=dept_id or "",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
db.add(log)
db.commit()
db.refresh(obj)
return _row_to_dict(obj)
def stock_out(
db: Session,
material_id: str,
*,
qty: float,
receiver: Optional[str] = None,
purpose: Optional[str] = None,
remark: Optional[str] = None,
tenant_no: str,
user_id: Optional[str] = None,
dept_id: str = "",
) -> Dict[str, Any]:
if qty is None or qty <= 0:
raise ValueError("出库数量必须大于0")
qty_dec = Decimal(str(qty))
obj = (
db.query(BizMaterial)
.filter(
BizMaterial.id == material_id,
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
)
.with_for_update()
.first()
)
if not obj:
raise ValueError("物料不存在")
stock_before = obj.stock_qty if obj.stock_qty is not None else Decimal("0")
if stock_before < qty_dec:
raise ValueError(
f"物料「{obj.material_name}」库存不足,当前库存 {stock_before},需出库 {qty_dec}"
)
stock_after = stock_before - qty_dec
obj.stock_qty = stock_after
obj.update_by = user_id
obj.update_time = datetime.now()
db.add(obj)
log = BizMaterialStockLog(
id=generate_uuid(),
material_id=obj.id,
material_code=obj.material_code,
material_name=obj.material_name,
change_type="ck",
change_qty=qty_dec,
stock_before=stock_before,
stock_after=stock_after,
receiver=(receiver or "").strip() or None,
purpose=(purpose or "").strip() or None,
tenant_no=tenant_no,
remark=(remark or "").strip() or None,
create_by=user_id,
create_dept_id=dept_id or "",
create_time=datetime.now(),
update_by=user_id,
update_time=datetime.now(),
del_flag=0,
)
db.add(log)
db.commit()
db.refresh(obj)
return _row_to_dict(obj)
def options_list(db: Session, tenant_no: str) -> List[Dict[str, Any]]:
rows = (
db.query(BizMaterial)
.filter(
BizMaterial.tenant_no == tenant_no,
BizMaterial.del_flag == 0,
BizMaterial.status == "1",
)
.order_by(BizMaterial.create_time.desc())
.all()
)
return [
{
"id": r.id,
"label": r.material_name,
"materialCode": r.material_code,
"materialName": r.material_name,
"specModel": r.spec_model or "",
"unit": r.unit or "",
"stockQty": _dec(r.stock_qty),
}
for r in rows
]
+88
View File
@@ -0,0 +1,88 @@
"""市场物料库存变动记录 CRUD"""
from __future__ import annotations
from datetime import datetime
from typing import Any, Dict, List, Optional, Tuple
from sqlalchemy import func, or_
from sqlalchemy.orm import Session
from app.models.material import BizMaterialStockLog
def _dec(v: Any) -> float:
if v is None:
return 0.0
return float(v)
def _fmt_dt(t: Optional[datetime]) -> str:
return t.strftime("%Y-%m-%d %H:%M:%S") if t else ""
def _row_to_dict(r: BizMaterialStockLog) -> Dict[str, Any]:
return {
"id": r.id,
"materialId": r.material_id,
"materialCode": r.material_code or "",
"materialName": r.material_name or "",
"changeType": r.change_type,
"changeQty": _dec(r.change_qty),
"stockBefore": _dec(r.stock_before),
"stockAfter": _dec(r.stock_after),
"receiver": r.receiver or "",
"purpose": r.purpose or "",
"remark": r.remark or "",
"createBy": r.create_by or "",
"createTime": _fmt_dt(r.create_time),
"updateTime": _fmt_dt(r.update_time),
}
def list_stock_logs(
db: Session,
tenant_no: str,
*,
page: int = 1,
page_size: int = 10,
material_id: Optional[str] = None,
change_type: Optional[str] = None,
start_time: Optional[str] = None,
end_time: Optional[str] = None,
keyword: Optional[str] = None,
) -> Tuple[List[Dict[str, Any]], int]:
def _filtered():
q0 = db.query(BizMaterialStockLog).filter(
BizMaterialStockLog.tenant_no == tenant_no,
BizMaterialStockLog.del_flag == 0,
)
if material_id:
q0 = q0.filter(BizMaterialStockLog.material_id == material_id)
if change_type:
q0 = q0.filter(BizMaterialStockLog.change_type == change_type)
if start_time:
q0 = q0.filter(BizMaterialStockLog.create_time >= start_time)
if end_time:
q0 = q0.filter(BizMaterialStockLog.create_time <= end_time + " 23:59:59")
kw = (keyword or "").strip()
if kw:
like = f"%{kw}%"
q0 = q0.filter(
or_(
BizMaterialStockLog.material_code.ilike(like),
BizMaterialStockLog.material_name.ilike(like),
)
)
return q0
total = _filtered().order_by(None).with_entities(func.count(BizMaterialStockLog.id)).scalar() or 0
page = max(1, page)
page_size = min(max(1, page_size), 100)
rows = (
_filtered()
.order_by(BizMaterialStockLog.create_time.desc())
.offset((page - 1) * page_size)
.limit(page_size)
.all()
)
return [_row_to_dict(x) for x in rows], int(total)
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "label": "site.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L1"}, {"id": "crud_site_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L15"}, {"id": "crud_site_list_sites", "label": "list_sites()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L34"}, {"id": "crud_site_get_site", "label": "get_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L65"}, {"id": "crud_site_site_code_exists", "label": "site_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L73"}, {"id": "crud_site_create_site", "label": "create_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L80"}, {"id": "crud_site_update_site", "label": "update_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L127"}, {"id": "crud_site_soft_delete_site", "label": "soft_delete_site()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L179"}, {"id": "crud_site_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L189"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_list_sites", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_get_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_site_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L73", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_site_py", "target": "crud_site_create_site", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/site.py", "source_location": "L80", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backenLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "label": "dict_type.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L1"}, {"id": "crud_dict_type_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L15"}, {"id": "crud_dict_type_list_dict_types", "label": "list_dict_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L28"}, {"id": "crud_dict_type_get_dict_type", "label": "get_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L59"}, {"id": "crud_dict_type_dict_type_code_exists", "label": "dict_type_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L67"}, {"id": "crud_dict_type_create_dict_type", "label": "create_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L78"}, {"id": "crud_dict_type_update_dict_type", "label": "update_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L113"}, {"id": "crud_dict_type_soft_delete_dict_type", "label": "soft_delete_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L149"}, {"id": "crud_dict_type_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L162"}, {"id": "crud_dict_type_rationale_1", "label": "\u5b57\u5178\u7c7b\u578b CRUD\uff08sys_dict_type\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "crud_dict_type_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "crud_dict_type_list_dict_types", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "crud_dict_type_get_dict_type", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_type.py", "source_location": "L59", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_type_py", "target": "cLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "label": "utils.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L1"}, {"id": "core_utils_generate_uuid", "label": "generate_uuid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L9"}, {"id": "core_utils_generate_id", "label": "generate_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L14"}, {"id": "core_utils_generate_random_password", "label": "generate_random_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L20"}, {"id": "core_utils_get_current_time", "label": "get_current_time()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L26"}, {"id": "core_utils_format_datetime", "label": "format_datetime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L31"}, {"id": "core_utils_parse_datetime", "label": "parse_datetime()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L38"}, {"id": "core_utils_get_file_size_display", "label": "get_file_size_display()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L48"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "uuid", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "random", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "string", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_generate_uuid", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_generate_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_generate_random_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_get_current_time", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_format_datetime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_parse_datetime", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_utils_py", "target": "core_utils_get_file_size_display", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/utils.py", "source_location": "L48", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_utils_generate_uuid", "callee": "upper", "source_file": "/Users/wuzilong/woLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_basic_info_py", "label": "basic_info.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L1"}, {"id": "api_basic_info_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L30"}, {"id": "api_basic_info_customercreatebody", "label": "CustomerCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L45"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_basic_info_customerupdatebody", "label": "CustomerUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L58"}, {"id": "api_basic_info_list_customers", "label": "list_customers()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L72"}, {"id": "api_basic_info_create_customer", "label": "create_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L95"}, {"id": "api_basic_info_update_customer", "label": "update_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L121"}, {"id": "api_basic_info_delete_customer", "label": "delete_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L150"}, {"id": "api_basic_info_cellsampletypecreatebody", "label": "CellSampleTypeCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L168"}, {"id": "api_basic_info_cellsampletypeupdatebody", "label": "CellSampleTypeUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L179"}, {"id": "api_basic_info_list_cell_sample_types", "label": "list_cell_sample_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L191"}, {"id": "api_basic_info_create_cell_sample_type", "label": "create_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L214"}, {"id": "api_basic_info_update_cell_sample_type", "label": "update_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L238"}, {"id": "api_basic_info_delete_cell_sample_type", "label": "delete_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L265"}, {"id": "api_basic_info_collectionregioncreatebody", "label": "CollectionRegionCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L283"}, {"id": "api_basic_info_collectionregionupdatebody", "label": "CollectionRegionUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L291"}, {"id": "api_basic_info_list_collection_regions", "label": "list_collection_regions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L300"}, {"id": "api_basic_info_create_collection_region", "label": "create_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L323"}, {"id": "api_basic_info_update_collection_region", "label": "update_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L344"}, {"id": "api_basic_info_delete_collection_region", "label": "delete_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L368"}, {"id": "api_basic_info_hospitalcreatebody", "label": "HospitalCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L386"}, {"id": "api_basic_info_hospitalupdatebody", "label": "HospitalUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L394"}, {"id": "api_basic_info_list_hospitals", "label": "list_hospitals()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/basic_info.py", "source_location": "L403"}, {"id": "api_basic_info_creLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_production_task_py", "label": "production_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L1"}, {"id": "crud_production_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L29"}, {"id": "crud_production_task_generate_task_no", "label": "_generate_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L33"}, {"id": "crud_production_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L47"}, {"id": "crud_production_task_step_to_dict", "label": "_step_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L67"}, {"id": "crud_production_task_step_reagent_to_dict", "label": "_step_reagent_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L87"}, {"id": "crud_production_task_step_consumable_to_dict", "label": "_step_consumable_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L102"}, {"id": "crud_production_task_step_output_to_dict", "label": "_step_output_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L117"}, {"id": "crud_production_task_step_data_collection_to_dict", "label": "_step_data_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L128"}, {"id": "crud_production_task_task_input_to_dict", "label": "_task_input_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L139"}, {"id": "crud_production_task_task_output_to_dict", "label": "_task_output_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L151"}, {"id": "crud_production_task_soft_delete_sub", "label": "_soft_delete_sub()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L166"}, {"id": "crud_production_task_clone_step_reagents", "label": "_clone_step_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L179"}, {"id": "crud_production_task_clone_step_consumables", "label": "_clone_step_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L197"}, {"id": "crud_production_task_clone_step_outputs", "label": "_clone_step_outputs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L215"}, {"id": "crud_production_task_clone_step_data_collections", "label": "_clone_step_data_collections()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L232"}, {"id": "crud_production_task_clone_route_to_task", "label": "_clone_route_to_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L248"}, {"id": "crud_production_task_create_production_task", "label": "create_production_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L281"}, {"id": "crud_production_task_list_production_tasks", "label": "list_production_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L317"}, {"id": "crud_production_task_get_production_task_detail", "label": "get_production_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L350"}, {"id": "crud_production_task_update_production_task", "label": "update_production_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L405"}, {"id": "crud_production_task_update_task_status", "label": "update_task_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/production_task.py", "source_location": "L430"}, {"id": "crud_production_task_add_task_step", "label": "add_task_step()", "file_type": "Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "label": "admin_request_json.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L1"}, {"id": "core_admin_request_json_parse_admin_request_json", "label": "parse_admin_request_json()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L19"}, {"id": "core_admin_request_json_rationale_1", "label": "\u8fd0\u8425 Web\uff08/web/admin\uff09JSON \u8bf7\u6c42\u4f53\u89e3\u6790\u3002 \u4e0e ApiCryptoMiddleware \u914d\u5408\uff1a\u4e2d\u95f4\u4ef6\u672a\u6539\u5199 body \u65f6\uff0c\u5728\u8def\u7531\u5185\u89e3\u5bc6 `", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L1"}, {"id": "core_admin_request_json_rationale_25", "label": "\u8bfb\u53d6 JSON body\uff1bdict \u65f6\u8d70 resolve_request_payload\uff08\u660e\u6587 / \u5bc6\u6587 / data \u5305\u88c5\uff09\u3002 Returns:", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L25"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "target": "app_core_request_payload", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "target": "core_admin_request_json_parse_admin_request_json", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L19", "weight": 1.0}, {"source": "core_admin_request_json_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_admin_request_json_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L1", "weight": 1.0}, {"source": "core_admin_request_json_rationale_25", "target": "core_admin_request_json_parse_admin_request_json", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L25", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L32"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "json", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L34"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "warning", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L37"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L39"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L41"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "info", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L42"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "sorted", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/admin_request_json.py", "source_location": "L45"}, {"caller_nid": "core_admin_request_json_parse_admin_request_json", "callee": "keys", "source_file": "/Users/wuzilong/work/00code/zkxw/backenLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "label": "material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L1"}, {"id": "models_material_bizmaterial", "label": "BizMaterial", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L8"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_material_bizmaterialstocklog", "label": "BizMaterialStockLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L31"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L8", "weight": 1.0}, {"source": "models_material_bizmaterial", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_material_py", "target": "models_material_bizmaterialstocklog", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L31", "weight": 1.0}, {"source": "models_material_bizmaterialstocklog", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/material.py", "source_location": "L31", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "label": "qc_lab_test_item.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L1"}, {"id": "crud_qc_lab_test_item_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L14"}, {"id": "crud_qc_lab_test_item_item_code_exists", "label": "item_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L28"}, {"id": "crud_qc_lab_test_item_list_lab_items", "label": "list_lab_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L44"}, {"id": "crud_qc_lab_test_item_list_active_lab_items", "label": "list_active_lab_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L81"}, {"id": "crud_qc_lab_test_item_get_lab_item", "label": "get_lab_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L95"}, {"id": "crud_qc_lab_test_item_create_lab_item", "label": "create_lab_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L106"}, {"id": "crud_qc_lab_test_item_update_lab_item", "label": "update_lab_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L152"}, {"id": "crud_qc_lab_test_item_soft_delete_lab_item", "label": "soft_delete_lab_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L199"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "crud_qc_lab_test_item_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "crud_qc_lab_test_item_item_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "crud_qc_lab_test_item_list_lab_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_lab_test_item_py", "target": "crud_qc_lab_test_item_list_active_lab_items", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_lab_test_item.py", "source_location": "L81", "weiLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "label": "data_scope.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L1"}, {"id": "core_data_scope_get_user_dept_id", "label": "get_user_dept_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L27"}, {"id": "core_data_scope_get_child_dept_ids", "label": "_get_child_dept_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L37"}, {"id": "core_data_scope_resolve_user_role_scopes", "label": "_resolve_user_role_scopes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L62"}, {"id": "core_data_scope_apply_data_scope", "label": "apply_data_scope()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L112"}, {"id": "core_data_scope_rationale_1", "label": "\u6570\u636e\u6743\u9650\u8fc7\u6ee4\uff08V0.3\uff1a\u57fa\u4e8e\u89d2\u8272 data_scope \u7684\u67e5\u8be2\u7ea7\u884c\u7ea7\u8fc7\u6ee4\uff09 data_scope \u503c\uff1a 1 = \u5168\u90e8\u6570\u636e 2 = \u672c\u90e8\u95e8\u6570\u636e 3", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L1"}, {"id": "core_data_scope_rationale_28", "label": "\u4ece SysUser \u8bfb\u53d6\u7528\u6237\u7684 dept_id\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L28"}, {"id": "core_data_scope_rationale_38", "label": "\u9012\u5f52\u83b7\u53d6 dept_id \u53ca\u5176\u6240\u6709\u5b50\u90e8\u95e8 ID\uff08\u542b\u81ea\u8eab\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L38"}, {"id": "core_data_scope_rationale_65", "label": "\u83b7\u53d6\u7528\u6237\u6240\u6709\u89d2\u8272\u7684\u6570\u636e\u6743\u9650\u914d\u7f6e\u3002 \u8fd4\u56de: [{\"data_scope\": str, \"details\": [SysRoleDataScopeDetai", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L65"}, {"id": "core_data_scope_rationale_113", "label": "\u6839\u636e\u7528\u6237\u89d2\u8272\u7684\u6570\u636e\u6743\u9650\u8fc7\u6ee4\u67e5\u8be2\u3002 Args: query: SQLAlchemy query \u5bf9\u8c61 model: \u67e5\u8be2", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L113"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "core_data_scope_get_user_dept_id", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "core_data_scope_get_child_dept_ids", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/data_scope.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_data_scope_py", "target": "core_data_scope_resolve_user_role_scopes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "label": "inquiry.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L1"}, {"id": "schemas_inquiry_inquiryitembase", "label": "InquiryItemBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L8"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_inquiry_inquiryitemcreate", "label": "InquiryItemCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L13"}, {"id": "schemas_inquiry_inquiryitemresponse", "label": "InquiryItemResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L18"}, {"id": "schemas_inquiry_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L24"}, {"id": "schemas_inquiry_inquirybase", "label": "InquiryBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L28"}, {"id": "schemas_inquiry_inquirycreate", "label": "InquiryCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L35"}, {"id": "schemas_inquiry_inquiryupdate", "label": "InquiryUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L40"}, {"id": "schemas_inquiry_inquiryresponse", "label": "InquiryResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L47"}, {"id": "schemas_inquiry_inquirydetailresponse", "label": "InquiryDetailResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L63"}, {"id": "schemas_inquiry_inquirylistresponse", "label": "InquiryListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L68"}, {"id": "schemas_inquiry_inquirystatusresponse", "label": "InquiryStatusResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L77"}, {"id": "schemas_inquiry_rationale_1", "label": "Pydantic schemas - \u8be2\u4ef7\u5355\u7ba1\u7406", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "target": "schemas_inquiry_inquiryitembase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L8", "weight": 1.0}, {"source": "schemas_inquiry_inquiryitembase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_inquiry_py", "target": "schemas_inquiry_inquiryitemcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L13", "weight": 1.0}, {"source": "schemas_inquiry_inquiryitemcreate", "target": "schemas_inquiry_inquiryitembase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/inquiry.py", "source_location": "L13", "weight"Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "label": "production_work_order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L1"}, {"id": "schemas_production_work_order_productionworkorderbase", "label": "ProductionWorkOrderBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_production_work_order_productionworkorderlistquery", "label": "ProductionWorkOrderListQuery", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L10"}, {"id": "schemas_production_work_order_productionworkordercomplete", "label": "ProductionWorkOrderComplete", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L19"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "target": "schemas_production_work_order_productionworkorderbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_production_work_order_productionworkorderbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "target": "schemas_production_work_order_productionworkorderlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L10", "weight": 1.0}, {"source": "schemas_production_work_order_productionworkorderlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_work_order_py", "target": "schemas_production_work_order_productionworkordercomplete", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L19", "weight": 1.0}, {"source": "schemas_production_work_order_productionworkordercomplete", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_work_order.py", "source_location": "L19", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "label": "qc_param.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L1"}, {"id": "models_qc_param_bizqcitemparam", "label": "BizQcItemParam", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L8"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_qc_param_bizqctaskresult", "label": "BizQcTaskResult", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L30"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "target": "models_qc_param_bizqcitemparam", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L8", "weight": 1.0}, {"source": "models_qc_param_bizqcitemparam", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_param_py", "target": "models_qc_param_bizqctaskresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L30", "weight": 1.0}, {"source": "models_qc_param_bizqctaskresult", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_param.py", "source_location": "L30", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "label": "qc_material_usage.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L1"}, {"id": "crud_qc_material_usage_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L16"}, {"id": "crud_qc_material_usage_list_usages", "label": "list_usages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L35"}, {"id": "crud_qc_material_usage_deduct_for_task", "label": "deduct_for_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L74"}, {"id": "crud_qc_material_usage_rationale_83", "label": "\u6263\u51cf\u7269\u6599\u5e93\u5b58\u5e76\u751f\u6210\u53d8\u52a8\u8bb0\u5f55\u3002\u8c03\u7528\u65b9\u63a7\u5236\u4e8b\u52a1\uff0c\u672c\u51fd\u6570\u4e0d commit\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L83"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "app_models_qc_material", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "crud_qc_material_usage_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "crud_qc_material_usage_list_usages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L35", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_usage_py", "target": "crud_qc_material_usage_deduct_for_task", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L74", "weight": 1.0}, {"source": "crud_qc_material_usage_list_usages", "target": "crud_qc_material_usage_row_to_dict", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material_usage.py", "source_location": "L71", "weight": 1.0}, {"source": "crud_qc_material_usage_rationale_83", "target": "crud_qc_material_usage_deduct_for_task", "relation": "rationale_for", "confidence": "EXLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "label": "collection_region.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L1"}, {"id": "crud_collection_region_region_to_dict", "label": "_region_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L15"}, {"id": "crud_collection_region_hospital_to_dict", "label": "_hospital_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L28"}, {"id": "crud_collection_region_list_collection_regions", "label": "list_collection_regions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L41"}, {"id": "crud_collection_region_get_collection_region", "label": "get_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L91"}, {"id": "crud_collection_region_create_collection_region", "label": "create_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L98"}, {"id": "crud_collection_region_update_collection_region", "label": "update_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L129"}, {"id": "crud_collection_region_soft_delete_collection_region", "label": "soft_delete_collection_region()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L159"}, {"id": "crud_collection_region_list_hospitals", "label": "list_hospitals()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L184"}, {"id": "crud_collection_region_get_hospital", "label": "get_hospital()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L222"}, {"id": "crud_collection_region_create_hospital", "label": "create_hospital()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L229"}, {"id": "crud_collection_region_update_hospital", "label": "update_hospital()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L265"}, {"id": "crud_collection_region_soft_delete_hospital", "label": "soft_delete_hospital()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L295"}, {"id": "crud_collection_region_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L305"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_region_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_region.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_reLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "label": "product_review_media.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L1"}, {"id": "schemas_product_review_media_productreviewmediabase", "label": "ProductReviewMediaBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_product_review_media_productreviewmediacreate", "label": "ProductReviewMediaCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L16"}, {"id": "schemas_product_review_media_productreviewmediacreatebatch", "label": "ProductReviewMediaCreateBatch", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L21"}, {"id": "schemas_product_review_media_productreviewmediaupdate", "label": "ProductReviewMediaUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L26"}, {"id": "schemas_product_review_media_productreviewmediaresponse", "label": "ProductReviewMediaResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L34"}, {"id": "schemas_product_review_media_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L42"}, {"id": "schemas_product_review_media_productreviewmedialistresponse", "label": "ProductReviewMediaListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L46"}, {"id": "schemas_product_review_media_rationale_1", "label": "Pydantic schemas - \u8bc4\u4ef7\u5a92\u4f53", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "target": "schemas_product_review_media_productreviewmediabase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_product_review_media_productreviewmediabase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "target": "schemas_product_review_media_productreviewmediacreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L16", "weight": 1.0}, {"source": "schemas_product_review_media_productreviewmediacreate", "target": "schemas_product_review_media_productreviewmediabase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_media_py", "target": "schemas_product_review_media_productreviewmediacreatebatch", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review_media.py", "source_location": "L21", "weight": 1.0}, {"source": "schemas_product_review_media_productreviewmediacreatebatch", "target": "basemodel", "relation": "inherits",Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L1"}, {"id": "api_workflow_business_type_label", "label": "_business_type_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L26"}, {"id": "api_workflow_leave_form_fields", "label": "_leave_form_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L41"}, {"id": "api_workflow_get_business_form_fields", "label": "_get_business_form_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L65"}, {"id": "api_workflow_enrich_task_list", "label": "_enrich_task_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L78"}, {"id": "api_workflow_processdefcreatebody", "label": "ProcessDefCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L95"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_workflow_processdefupdatebody", "label": "ProcessDefUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L105"}, {"id": "api_workflow_publishversionbody", "label": "PublishVersionBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L115"}, {"id": "api_workflow_startinstancebody", "label": "StartInstanceBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L124"}, {"id": "api_workflow_taskactionbody", "label": "TaskActionBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L134"}, {"id": "api_workflow_list_process_defs", "label": "list_process_defs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L151"}, {"id": "api_workflow_create_process_def", "label": "create_process_def()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L168"}, {"id": "api_workflow_update_process_def", "label": "update_process_def()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L191"}, {"id": "api_workflow_delete_process_def", "label": "delete_process_def()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L216"}, {"id": "api_workflow_publish_version", "label": "publish_version()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L234"}, {"id": "api_workflow_list_versions", "label": "list_versions()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L258"}, {"id": "api_workflow_get_designer_data", "label": "get_designer_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L269"}, {"id": "api_workflow_start_instance", "label": "start_instance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L300"}, {"id": "api_workflow_list_my_instances", "label": "list_my_instances()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L338"}, {"id": "api_workflow_get_instance_detail", "label": "get_instance_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L358"}, {"id": "api_workflow_list_pending_tasks", "label": "list_pending_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L421"}, {"id": "api_workflow_list_completed_tasks", "label": "list_completed_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L439"}, {"id": "api_workflow_approve_task", "label": "approve_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L462"}, {"id": "api_workflow_reject_task", "label": "reject_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/workflow.py", "source_location": "L478"}, {"id": "api_workflow_get_business_all_tasks", "lLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "label": "reagent.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L1"}, {"id": "crud_reagent_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L15"}, {"id": "crud_reagent_list_reagents", "label": "list_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L32"}, {"id": "crud_reagent_get_reagent", "label": "get_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L68"}, {"id": "crud_reagent_reagent_code_exists", "label": "reagent_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L76"}, {"id": "crud_reagent_create_reagent", "label": "create_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L85"}, {"id": "crud_reagent_update_reagent", "label": "update_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L128"}, {"id": "crud_reagent_soft_delete_reagent", "label": "soft_delete_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L174"}, {"id": "crud_reagent_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L184"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_list_reagents", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_get_reagent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_reagent_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/reagent.py", "source_location": "L76", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_reagent_py", "target": "crud_reagent_create_reagent", "relation": "contains", "confiLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "label": "post.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L1"}, {"id": "crud_post_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L15"}, {"id": "crud_post_list_posts", "label": "list_posts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L29"}, {"id": "crud_post_get_post", "label": "get_post()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L60"}, {"id": "crud_post_post_code_exists", "label": "post_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L68"}, {"id": "crud_post_create_post", "label": "create_post()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L75"}, {"id": "crud_post_update_post", "label": "update_post()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L112"}, {"id": "crud_post_soft_delete_post", "label": "soft_delete_post()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L149"}, {"id": "crud_post_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L159"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "crud_post_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "crud_post_list_posts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "crud_post_get_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L60", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "crud_post_post_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L68", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_post_py", "target": "crud_post_create_post", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/post.py", "source_location": "L75", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backenLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "label": "product_detail_media.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L1"}, {"id": "schemas_product_detail_media_productdetailmediabase", "label": "ProductDetailMediaBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_product_detail_media_productdetailmediacreate", "label": "ProductDetailMediaCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L24"}, {"id": "schemas_product_detail_media_productdetailmediacreatebatch", "label": "ProductDetailMediaCreateBatch", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L29"}, {"id": "schemas_product_detail_media_productdetailmediaupdate", "label": "ProductDetailMediaUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L36"}, {"id": "schemas_product_detail_media_productdetailmediasortitem", "label": "ProductDetailMediaSortItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L48"}, {"id": "schemas_product_detail_media_productdetailmediasortupdate", "label": "ProductDetailMediaSortUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L56"}, {"id": "schemas_product_detail_media_productdetailmediaresponse", "label": "ProductDetailMediaResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L63"}, {"id": "schemas_product_detail_media_productdetailmedialistresponse", "label": "ProductDetailMediaListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L74"}, {"id": "schemas_product_detail_media_rationale_1", "label": "Pydantic schemas - \u5546\u54c1\u8be6\u60c5\u5a92\u4f53", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "target": "schemas_product_detail_media_productdetailmediabase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_product_detail_media_productdetailmediabase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "target": "schemas_product_detail_media_productdetailmediacreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L24", "weight": 1.0}, {"source": "schemas_product_detail_media_productdetailmediacreate", "target": "schemas_product_detail_media_productdetailmediabase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_detail_media.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_detail_media_py", "target": "schemas_product_detail_media_productdetailmediacreatebatch", "reLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "label": "sample_reception_check_item.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L1"}, {"id": "crud_sample_reception_check_item_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L14"}, {"id": "crud_sample_reception_check_item_item_code_exists", "label": "item_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L28"}, {"id": "crud_sample_reception_check_item_order_query", "label": "_order_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L46"}, {"id": "crud_sample_reception_check_item_list_check_items", "label": "list_check_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L53"}, {"id": "crud_sample_reception_check_item_list_active_check_items", "label": "list_active_check_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L91"}, {"id": "crud_sample_reception_check_item_get_check_item", "label": "get_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L105"}, {"id": "crud_sample_reception_check_item_create_check_item", "label": "create_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L116"}, {"id": "crud_sample_reception_check_item_update_check_item", "label": "update_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L160"}, {"id": "crud_sample_reception_check_item_soft_delete_check_item", "label": "soft_delete_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L204"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "crud_sample_reception_check_item_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_check_item_py", "target": "crud_sample_reception_check_item_item_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception_check_item.py", "souLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_pilot_service_py", "label": "pilot_service.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L1"}, {"id": "crud_pilot_service_row_to_dict_cell_product_type", "label": "_row_to_dict_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L36"}, {"id": "crud_pilot_service_list_cell_product_types", "label": "list_cell_product_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L49"}, {"id": "crud_pilot_service_get_cell_product_type", "label": "get_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L72"}, {"id": "crud_pilot_service_cell_product_type_code_exists", "label": "cell_product_type_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L79"}, {"id": "crud_pilot_service_create_cell_product_type", "label": "create_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L90"}, {"id": "crud_pilot_service_update_cell_product_type", "label": "update_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L112"}, {"id": "crud_pilot_service_soft_delete_cell_product_type", "label": "soft_delete_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L134"}, {"id": "crud_pilot_service_row_to_dict_cell_product_spec", "label": "_row_to_dict_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L148"}, {"id": "crud_pilot_service_list_cell_product_specs", "label": "list_cell_product_specs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L161"}, {"id": "crud_pilot_service_get_cell_product_spec", "label": "get_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L184"}, {"id": "crud_pilot_service_cell_product_spec_code_exists", "label": "cell_product_spec_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L191"}, {"id": "crud_pilot_service_create_cell_product_spec", "label": "create_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L202"}, {"id": "crud_pilot_service_update_cell_product_spec", "label": "update_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L224"}, {"id": "crud_pilot_service_soft_delete_cell_product_spec", "label": "soft_delete_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L246"}, {"id": "crud_pilot_service_row_to_dict_cell_product_price", "label": "_row_to_dict_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L260"}, {"id": "crud_pilot_service_list_cell_product_prices", "label": "list_cell_product_prices()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L279"}, {"id": "crud_pilot_service_get_cell_product_price", "label": "get_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L305"}, {"id": "crud_pilot_service_cell_product_price_code_exists", "label": "cell_product_price_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L312"}, {"id": "crud_pilot_service_create_cell_product_price", "label": "create_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L323"}, {"id": "crud_pilot_service_update_cell_product_price", "label": "update_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/pilot_service.py", "source_location": "L366"}, {"id": "crud_pilot_service_soft_delete_cell_product_price", "label": "soft_delete_cell_product_price()", "file_type": "code", "source_file": "/UsLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", "label": "collection_protocol_no.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L1"}, {"id": "crud_collection_protocol_no_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L15"}, {"id": "crud_collection_protocol_no_protocol_no_exists", "label": "protocol_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L31"}, {"id": "crud_collection_protocol_no_list_protocol_nos", "label": "list_protocol_nos()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L47"}, {"id": "crud_collection_protocol_no_get_protocol_no", "label": "get_protocol_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L78"}, {"id": "crud_collection_protocol_no_create_protocol_no", "label": "create_protocol_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L85"}, {"id": "crud_collection_protocol_no_update_protocol_no", "label": "update_protocol_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L120"}, {"id": "crud_collection_protocol_no_soft_delete_protocol_no", "label": "soft_delete_protocol_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L164"}, {"id": "crud_collection_protocol_no_batch_generate_protocol_nos", "label": "batch_generate_protocol_nos()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L174"}, {"id": "crud_collection_protocol_no_batch_issue_protocol_nos", "label": "batch_issue_protocol_nos()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L252"}, {"id": "crud_collection_protocol_no_batch_revoke_protocol_nos", "label": "batch_revoke_protocol_nos()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L297"}, {"id": "crud_collection_protocol_no_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L336"}, {"id": "crud_collection_protocol_no_rationale_1", "label": "\u91c7\u96c6\u534f\u8bae\u53f7\u6c60 CRUD\uff08biz_collection_protocol_no\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L1"}, {"id": "crud_collection_protocol_no_rationale_185", "label": "\u6279\u91cf\u751f\u6210\u534f\u8bae\u53f7: \u524d\u7f00 + \u4e2d\u95f4\u6bb5 + \u8865\u96f6\u5e8f\u53f7", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L185"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_collection_protocol_no_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/collection_protocol_no.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_woLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "label": "express_company.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L1"}, {"id": "crud_express_company_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L15"}, {"id": "crud_express_company_list_express_companies", "label": "list_express_companies()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L28"}, {"id": "crud_express_company_get_express_company", "label": "get_express_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L59"}, {"id": "crud_express_company_express_code_exists", "label": "express_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L67"}, {"id": "crud_express_company_create_express_company", "label": "create_express_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L74"}, {"id": "crud_express_company_update_express_company", "label": "update_express_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L109"}, {"id": "crud_express_company_soft_delete_express_company", "label": "soft_delete_express_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L143"}, {"id": "crud_express_company_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L153"}, {"id": "crud_express_company_rationale_1", "label": "\u5feb\u9012\u516c\u53f8 CRUD\uff08biz_express_company\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "crud_express_company_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_express_company_py", "target": "crud_express_company_list_express_companies", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/express_company.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_exLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "label": "response.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L1"}, {"id": "core_response_responsemodel", "label": "ResponseModel", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L8"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "core_response_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L15"}, {"id": "core_response_pageresult", "label": "PageResult", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L19"}, {"id": "core_response_success_response", "label": "success_response()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L28"}, {"id": "core_response_error_response", "label": "error_response()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L39"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "core_response_responsemodel", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L8", "weight": 1.0}, {"source": "core_response_responsemodel", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "core_response_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "core_response_pageresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L19", "weight": 1.0}, {"source": "core_response_pageresult", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "core_response_success_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_response_py", "target": "core_response_error_response", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L39", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_response_success_response", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L35"}, {"caller_nid": "core_response_success_response", "callee": "timestamp", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L35"}, {"caller_nid": "core_response_success_response", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L35"}, {"caller_nid": "core_response_error_response", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L46"}, {"caller_nid": "core_response_error_response", "callee": "timestamp", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L46"}, {"caller_nid": "core_response_error_response", "callee": "now", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/response.py", "source_location": "L46"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "label": "tenant.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L1"}, {"id": "crud_tenant_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L16"}, {"id": "crud_tenant_list_tenants", "label": "list_tenants()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L30"}, {"id": "crud_tenant_get_tenant", "label": "get_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L58"}, {"id": "crud_tenant_tenant_no_exists", "label": "tenant_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L66"}, {"id": "crud_tenant_create_tenant", "label": "create_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L73"}, {"id": "crud_tenant_update_tenant", "label": "update_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L110"}, {"id": "crud_tenant_soft_delete_tenant", "label": "soft_delete_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L152"}, {"id": "crud_tenant_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L164"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_list_tenants", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_get_tenant", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/tenant.py", "source_location": "L58", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_tenant_py", "target": "crud_tenant_tenant_no_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backeLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "label": "cell_sample_type.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L1"}, {"id": "crud_cell_sample_type_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L15"}, {"id": "crud_cell_sample_type_type_code_exists", "label": "type_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L31"}, {"id": "crud_cell_sample_type_list_cell_sample_types", "label": "list_cell_sample_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L43"}, {"id": "crud_cell_sample_type_get_cell_sample_type", "label": "get_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L74"}, {"id": "crud_cell_sample_type_create_cell_sample_type", "label": "create_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L81"}, {"id": "crud_cell_sample_type_update_cell_sample_type", "label": "update_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L120"}, {"id": "crud_cell_sample_type_soft_delete_cell_sample_type", "label": "soft_delete_cell_sample_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L161"}, {"id": "crud_cell_sample_type_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L171"}, {"id": "crud_cell_sample_type_rationale_1", "label": "\u7ec6\u80de\u6837\u672c\u7c7b\u578b CRUD\uff08biz_cell_sample_type\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "crud_cell_sample_type_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_cell_sample_type_py", "target": "crud_cell_sample_type_type_code_exists", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/cell_sample_type.py", "source_location": "L31", "weight": 1.0}, {"source": "uLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_production_py", "label": "production.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L1"}, {"id": "api_production_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L52"}, {"id": "api_production_consumablecreatebody", "label": "ConsumableCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L65"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_production_consumableupdatebody", "label": "ConsumableUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L77"}, {"id": "api_production_list_consumables", "label": "list_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L90"}, {"id": "api_production_list_all_consumables", "label": "list_all_consumables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L104"}, {"id": "api_production_create_consumable", "label": "create_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L114"}, {"id": "api_production_update_consumable", "label": "update_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L140"}, {"id": "api_production_delete_consumable", "label": "delete_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L167"}, {"id": "api_production_reagentcreatebody", "label": "ReagentCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L184"}, {"id": "api_production_reagentupdatebody", "label": "ReagentUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L196"}, {"id": "api_production_list_reagents", "label": "list_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L209"}, {"id": "api_production_list_all_reagents", "label": "list_all_reagents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L223"}, {"id": "api_production_create_reagent", "label": "create_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L233"}, {"id": "api_production_update_reagent", "label": "update_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L259"}, {"id": "api_production_delete_reagent", "label": "delete_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L286"}, {"id": "api_production_sopdocumentcreatebody", "label": "SopDocumentCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L303"}, {"id": "api_production_sopdocumentupdatebody", "label": "SopDocumentUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L313"}, {"id": "api_production_list_sop_documents", "label": "list_sop_documents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L324"}, {"id": "api_production_list_all_sop_documents", "label": "list_all_sop_documents()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L338"}, {"id": "api_production_create_sop_document", "label": "create_sop_document()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L348"}, {"id": "api_production_update_sop_document", "label": "update_sop_document()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L375"}, {"id": "api_production_delete_sop_document", "label": "delete_sop_document()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/production.py", "source_location": "L404"}, {"id": "api_production_processcategorycreatebody", "label": "ProcessCategoryCreateBody", "file_type": "code", "source_file": "/Users/wuziloLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "label": "sample_code.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L1"}, {"id": "crud_sample_code_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L15"}, {"id": "crud_sample_code_sample_code_exists", "label": "sample_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L32"}, {"id": "crud_sample_code_list_sample_codes", "label": "list_sample_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L44"}, {"id": "crud_sample_code_get_sample_code", "label": "get_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L75"}, {"id": "crud_sample_code_create_sample_code", "label": "create_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L82"}, {"id": "crud_sample_code_update_sample_code", "label": "update_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L117"}, {"id": "crud_sample_code_soft_delete_sample_code", "label": "soft_delete_sample_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L161"}, {"id": "crud_sample_code_batch_generate_sample_codes", "label": "batch_generate_sample_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L171"}, {"id": "crud_sample_code_batch_issue_sample_codes", "label": "batch_issue_sample_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L254"}, {"id": "crud_sample_code_batch_revoke_sample_codes", "label": "batch_revoke_sample_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L299"}, {"id": "crud_sample_code_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L338"}, {"id": "crud_sample_code_rationale_1", "label": "\u6837\u672c\u7f16\u7801\u6c60 CRUD\uff08biz_sample_code\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L1"}, {"id": "crud_sample_code_rationale_182", "label": "\u6279\u91cf\u751f\u6210\u6837\u672c\u7f16\u7801: \u7c7b\u578b\u524d\u7f00 + \u4e2d\u95f4\u6bb5 + \u8865\u96f6\u5e8f\u53f7", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L182"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_code.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_code_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "sourceLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_models_py", "label": "models.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L1"}, {"id": "models_models_userrole", "label": "UserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L10"}, {"id": "str", "label": "str", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysuser", "label": "SysUser", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L22"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_models_sysrole", "label": "SysRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L48"}, {"id": "models_models_sysuserrole", "label": "SysUserRole", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L68"}, {"id": "models_models_sysrolemenu", "label": "SysRoleMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L87"}, {"id": "models_models_sysroledatascopedetail", "label": "SysRoleDataScopeDetail", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L106"}, {"id": "models_models_sysmenu", "label": "SysMenu", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L126"}, {"id": "models_models_sysdept", "label": "SysDept", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L152"}, {"id": "models_models_systenant", "label": "SysTenant", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L175"}, {"id": "models_models_syssite", "label": "SysSite", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L195"}, {"id": "models_models_syspost", "label": "SysPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L220"}, {"id": "models_models_sysuserpost", "label": "SysUserPost", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L240"}, {"id": "models_models_bizitemunit", "label": "BizItemUnit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L259"}, {"id": "models_models_bizexpresscompany", "label": "BizExpressCompany", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L278"}, {"id": "models_models_bizcustomer", "label": "BizCustomer", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L297"}, {"id": "models_models_bizcellsampletype", "label": "BizCellSampleType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L320"}, {"id": "models_models_bizcollectionregion", "label": "BizCollectionRegion", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L341"}, {"id": "models_models_bizcollectionhospital", "label": "BizCollectionHospital", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L359"}, {"id": "models_models_bizcollectionprotocolno", "label": "BizCollectionProtocolNo", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L378"}, {"id": "models_models_bizsamplecode", "label": "BizSampleCode", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L400"}, {"id": "models_models_sysdicttype", "label": "SysDictType", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L428"}, {"id": "models_models_sysethnic", "label": "SysEthnic", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L447"}, {"id": "models_models_sysdictdata", "label": "SysDictData", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location": "L466"}, {"id": "models_models_sysapirequestlog", "label": "SysApiRequestLog", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/models.py", "source_location"Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "label": "production_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L1"}, {"id": "schemas_production_task_productiontaskcreate", "label": "ProductionTaskCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_production_task_productiontasklistquery", "label": "ProductionTaskListQuery", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L14"}, {"id": "schemas_production_task_productiontaskupdate", "label": "ProductionTaskUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L22"}, {"id": "schemas_production_task_productiontaskstatusupdate", "label": "ProductionTaskStatusUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L29"}, {"id": "schemas_production_task_taskstepadd", "label": "TaskStepAdd", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L33"}, {"id": "schemas_production_task_taskstepupdate", "label": "TaskStepUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L43"}, {"id": "schemas_production_task_taskstepmaterialitem", "label": "TaskStepMaterialItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L53"}, {"id": "schemas_production_task_taskstepoutputitem", "label": "TaskStepOutputItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L66"}, {"id": "schemas_production_task_taskstepdatacollectionitem", "label": "TaskStepDataCollectionItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L72"}, {"id": "schemas_production_task_taskinputitem", "label": "TaskInputItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L78"}, {"id": "schemas_production_task_taskoutputitem", "label": "TaskOutputItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L85"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "target": "schemas_production_task_productiontaskcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_production_task_productiontaskcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "target": "schemas_production_task_productiontasklistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L14", "weight": 1.0}, {"source": "schemas_production_task_productiontasklistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/production_task.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_production_task_py", "target": "schemas_Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_collection_protocol_py", "label": "collection_protocol.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L1"}, {"id": "api_collection_protocol_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L29"}, {"id": "api_collection_protocol_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L39"}, {"id": "api_collection_protocol_parse_datetime_fields", "label": "_parse_datetime_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L53"}, {"id": "api_collection_protocol_ensure_customer_for_mother", "label": "_ensure_customer_for_mother()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L67"}, {"id": "api_collection_protocol_list_collection_protocols", "label": "list_collection_protocols()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L116"}, {"id": "api_collection_protocol_get_collection_protocol_detail", "label": "get_collection_protocol_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L140"}, {"id": "api_collection_protocol_protocolcreatebody", "label": "ProtocolCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L155"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_collection_protocol_protocolupdatebody", "label": "ProtocolUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L174"}, {"id": "api_collection_protocol_resolve_protocol_attachments", "label": "_resolve_protocol_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L200"}, {"id": "api_collection_protocol_persist_protocol_sub_resources", "label": "_persist_protocol_sub_resources()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L210"}, {"id": "api_collection_protocol_create_collection_protocol", "label": "create_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L246"}, {"id": "api_collection_protocol_update_collection_protocol", "label": "update_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L289"}, {"id": "api_collection_protocol_delete_collection_protocol", "label": "delete_collection_protocol()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L338"}, {"id": "api_collection_protocol_list_collection_protocol_audits", "label": "list_collection_protocol_audits()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L364"}, {"id": "api_collection_protocol_auditcreatebody", "label": "AuditCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L385"}, {"id": "api_collection_protocol_submit_collection_protocol_audit", "label": "submit_collection_protocol_audit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L393"}, {"id": "api_collection_protocol_list_payment_details", "label": "list_payment_details()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L422"}, {"id": "api_collection_protocol_batchdetailidsbody", "label": "BatchDetailIdsBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L445"}, {"id": "api_collection_protocol_refundfinancesubmitbody", "label": "RefundFinanceSubmitBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/collection_protocol.py", "source_location": "L451"}, {"id": "api_collection_protocol_batchrefundfinancesubmitbody", "label": "BatchRefundFinanceSubmitBody", "file_type": "code", "source_file": "/Users/wuzilongLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_common", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_region", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_category", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_unit", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L31", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L42", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product_banner", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L54", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product_detail_media", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product_parameter", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L71", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_category_parameter", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L79", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product_parameter_value", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L89", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product_review", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L98", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_product_review_media", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L112", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_inquiry", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L120", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_quotation", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L132", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": "app_schemas_price_list", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/__init__.py", "source_location": "L146", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_init_py", "target": Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_price_list_py", "label": "price_list.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L1"}, {"id": "schemas_price_list_pricelistitembase", "label": "PriceListItemBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L8"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_price_list_pricelistitemcreate", "label": "PriceListItemCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L15"}, {"id": "schemas_price_list_pricelistitemupdate", "label": "PriceListItemUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L20"}, {"id": "schemas_price_list_pricelistitemresponse", "label": "PriceListItemResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L26"}, {"id": "schemas_price_list_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L38"}, {"id": "schemas_price_list_pricelistbase", "label": "PriceListBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L42"}, {"id": "schemas_price_list_pricelistcreate", "label": "PriceListCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L48"}, {"id": "schemas_price_list_pricelistupdate", "label": "PriceListUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L56"}, {"id": "schemas_price_list_pricelistresponse", "label": "PriceListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L63"}, {"id": "schemas_price_list_pricelistdetailresponse", "label": "PriceListDetailResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L84"}, {"id": "schemas_price_list_pricelistlistresponse", "label": "PriceListListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L93"}, {"id": "schemas_price_list_pricelistpublishrequest", "label": "PriceListPublishRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L102"}, {"id": "schemas_price_list_pricelistinvalidaterequest", "label": "PriceListInvalidateRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L109"}, {"id": "schemas_price_list_priceliststatusresponse", "label": "PriceListStatusResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L114"}, {"id": "schemas_price_list_productpriceresponse", "label": "ProductPriceResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L121"}, {"id": "schemas_price_list_productpricehistoryitem", "label": "ProductPriceHistoryItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L133"}, {"id": "schemas_price_list_productpricehistoryresponse", "label": "ProductPriceHistoryResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L144"}, {"id": "schemas_price_list_pricelistgeneraterequest", "label": "PriceListGenerateRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L154"}, {"id": "schemas_price_list_rationale_1", "label": "Pydantic schemas - \u4ef7\u683c\u6e05\u5355\u7ba1\u7406", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_price_list_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_list.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_price_list_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/price_Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_ws_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/ws/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "label": "api_request_log_middleware.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L1"}, {"id": "core_api_request_log_middleware_truncate", "label": "_truncate()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L35"}, {"id": "core_api_request_log_middleware_redact_obj", "label": "_redact_obj()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L43"}, {"id": "core_api_request_log_middleware_format_body_bytes", "label": "_format_body_bytes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L62"}, {"id": "core_api_request_log_middleware_claims_from_auth", "label": "_claims_from_auth()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L89"}, {"id": "core_api_request_log_middleware_should_skip", "label": "_should_skip()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L107"}, {"id": "core_api_request_log_middleware_persist_log", "label": "_persist_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L118"}, {"id": "core_api_request_log_middleware_schedule_persist_log", "label": "_schedule_persist_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L168"}, {"id": "core_api_request_log_middleware_apirequestlogmiddleware", "label": "ApiRequestLogMiddleware", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L191"}, {"id": "basehttpmiddleware", "label": "BaseHTTPMiddleware", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "core_api_request_log_middleware_apirequestlogmiddleware_dispatch", "label": ".dispatch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L192"}, {"id": "core_api_request_log_middleware_rationale_1", "label": "\u7edf\u4e00\u8bb0\u5f55 API \u8bf7\u6c42/\u54cd\u5e94\u51fa\u5165\u53c2\u7684\u4e2d\u95f4\u4ef6", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "json", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "time", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_request_log_middleware_py", "target": "jose", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_request_log_middleware.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py", "label": "exhibition_appointment.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L1"}, {"id": "crud_exhibition_appointment_format_visit_date", "label": "_format_visit_date()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L15"}, {"id": "crud_exhibition_appointment_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L24"}, {"id": "crud_exhibition_appointment_list_exhibition_appointments", "label": "list_exhibition_appointments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L41"}, {"id": "crud_exhibition_appointment_get_exhibition_appointment", "label": "get_exhibition_appointment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L78"}, {"id": "crud_exhibition_appointment_appointment_no_exists", "label": "appointment_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L86"}, {"id": "crud_exhibition_appointment_generate_appointment_no", "label": "_generate_appointment_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L99"}, {"id": "crud_exhibition_appointment_create_exhibition_appointment", "label": "create_exhibition_appointment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L123"}, {"id": "crud_exhibition_appointment_update_exhibition_appointment", "label": "update_exhibition_appointment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L173"}, {"id": "crud_exhibition_appointment_soft_delete_exhibition_appointment", "label": "soft_delete_exhibition_appointment()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L225"}, {"id": "crud_exhibition_appointment_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L235"}, {"id": "crud_exhibition_appointment_rationale_1", "label": "\u5c55\u89c8\u9884\u7ea6 CRUD\uff08biz_exhibition_appointment\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L1"}, {"id": "crud_exhibition_appointment_rationale_16", "label": "\u683c\u5f0f\u5316 visit_date \u4e3a YYYY-MM-DD HH:mm:ss \u5b57\u7b26\u4e32", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L16"}, {"id": "crud_exhibition_appointment_rationale_100", "label": "\u751f\u6210\u9884\u7ea6\u7f16\u53f7\uff1aYYYYMMDD + 6\u4f4d\u5e8f\u53f7\uff08\u5982 20260515000001\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L100"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/exhibition_appointment.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_exhibition_appointment_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00coLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "label": "customer.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L1"}, {"id": "crud_customer_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L15"}, {"id": "crud_customer_id_card_taken", "label": "id_card_taken()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L32"}, {"id": "crud_customer_list_customers", "label": "list_customers()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L44"}, {"id": "crud_customer_get_customer", "label": "get_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L82"}, {"id": "crud_customer_create_customer", "label": "create_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L89"}, {"id": "crud_customer_update_customer", "label": "update_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L133"}, {"id": "crud_customer_soft_delete_customer", "label": "soft_delete_customer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L181"}, {"id": "crud_customer_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L191"}, {"id": "crud_customer_rationale_1", "label": "\u5ba2\u6237 CRUD\uff08biz_customer\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "crud_customer_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "crud_customer_id_card_taken", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "crud_customer_list_customers", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/customer.py", "source_location": "L44", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_customer_py", "target": "crud_customer_get_customer", "relation": "contains", "confidence": "EXTRACTED", "sourcLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py", "label": "workflow_engine.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L1"}, {"id": "services_workflow_engine_workflowengine", "label": "WorkflowEngine", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L31"}, {"id": "services_workflow_engine_workflowengine_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L32"}, {"id": "services_workflow_engine_workflowengine_start_process", "label": ".start_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L39"}, {"id": "services_workflow_engine_workflowengine_approve_task", "label": ".approve_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L77"}, {"id": "services_workflow_engine_workflowengine_reject_task", "label": ".reject_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L126"}, {"id": "services_workflow_engine_workflowengine_advance", "label": "._advance()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L160"}, {"id": "services_workflow_engine_workflowengine_execute_node", "label": "._execute_node()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L201"}, {"id": "services_workflow_engine_workflowengine_resolve_approvers", "label": "._resolve_approvers()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L238"}, {"id": "services_workflow_engine_workflowengine_evaluate_condition", "label": "._evaluate_condition()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L284"}, {"id": "services_workflow_engine_workflowengine_check_rules", "label": "._check_rules()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L306"}, {"id": "services_workflow_engine_compare", "label": "_compare()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L330"}, {"id": "services_workflow_engine_get_variable", "label": "_get_variable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L359"}, {"id": "services_workflow_engine_parse_node_config", "label": "_parse_node_config()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L374"}, {"id": "services_workflow_engine_parse_variables", "label": "_parse_variables()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L383"}, {"id": "services_workflow_engine_rationale_1", "label": "\u5de5\u4f5c\u6d41\u5f15\u64ce \u2014\u2014 \u8bfb\u53d6\u8282\u70b9\u4e0e\u8fde\u7ebf\u6267\u884c\u5ba1\u6279\u6d41\u8f6c", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py", "target": "json", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py", "target": "re", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_engine.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_engine_pLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_security_py", "label": "security.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L1"}, {"id": "core_security_verify_password", "label": "verify_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L4"}, {"id": "core_security_get_password_hash", "label": "get_password_hash()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L20"}, {"id": "core_security_rationale_5", "label": "\u9a8c\u8bc1\u5bc6\u7801\uff08\u54c8\u5e0c\u975e bcrypt \u6216\u635f\u574f\u65f6\u8fd4\u56de False\uff0c\u907f\u514d\u629b\u9519\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L5"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_security_py", "target": "bcrypt", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_security_py", "target": "core_security_verify_password", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_security_py", "target": "core_security_get_password_hash", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L20", "weight": 1.0}, {"source": "core_security_rationale_5", "target": "core_security_verify_password", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L5", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_security_verify_password", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L8"}, {"caller_nid": "core_security_verify_password", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L8"}, {"caller_nid": "core_security_verify_password", "callee": "startswith", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L9"}, {"caller_nid": "core_security_verify_password", "callee": "checkpw", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L12"}, {"caller_nid": "core_security_verify_password", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L13"}, {"caller_nid": "core_security_verify_password", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L14"}, {"caller_nid": "core_security_get_password_hash", "callee": "decode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L22"}, {"caller_nid": "core_security_get_password_hash", "callee": "hashpw", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L22"}, {"caller_nid": "core_security_get_password_hash", "callee": "encode", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L22"}, {"caller_nid": "core_security_get_password_hash", "callee": "gensalt", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/security.py", "source_location": "L22"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "label": "login_crypto.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L1"}, {"id": "core_login_crypto_ensure_initialized", "label": "ensure_initialized()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L22"}, {"id": "core_login_crypto_get_public_pem", "label": "get_public_pem()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L56"}, {"id": "core_login_crypto_decrypt_login_payload", "label": "decrypt_login_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L62"}, {"id": "core_login_crypto_validate_ts", "label": "_validate_ts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L71"}, {"id": "core_login_crypto_extract_login_credentials", "label": "extract_login_credentials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L83"}, {"id": "core_login_crypto_rationale_1", "label": "\u767b\u5f55\u51ed\u636e RSA \u89e3\u5bc6\uff08\u4e0e\u524d\u7aef JSEncrypt PKCS#1 v1.5 \u517c\u5bb9\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L1"}, {"id": "core_login_crypto_rationale_63", "label": "Base64 \u5bc6\u6587 -> JSON \u5bf9\u8c61\uff08\u987b\u542b username\u3001password\u3001ts \u6beb\u79d2\u65f6\u95f4\u6233\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L63"}, {"id": "core_login_crypto_rationale_84", "label": "\u4ece\u8bf7\u6c42\u4f53\u89e3\u6790\u7528\u6237\u540d\u3001\u5bc6\u7801\u3002 \u8fd4\u56de (username, password, error_message)\uff1berror_message \u975e\u7a7a\u65f6\u8868\u793a\u5931\u8d25\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L84"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "base64", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "json", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "time", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "cryptography_hazmat_backends", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "cryptography_hazmat_primitives", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "cryptography_hazmat_primitives_asymmetric", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/login_crypto.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_login_crypto_py", "target":Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "label": "config.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L1"}, {"id": "core_config_settings", "label": "Settings", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/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/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L143"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "pydantic_settings", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "pathlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "core_config_settings", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "core_config_settings", "target": "basesettings", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_config_py", "target": "core_config_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/config.py", "source_location": "L143", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "label": "user.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L1"}, {"id": "schemas_user_userbase", "label": "UserBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_user_usercreate", "label": "UserCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L16"}, {"id": "schemas_user_userupdate", "label": "UserUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L21"}, {"id": "schemas_user_userresponse", "label": "UserResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L30"}, {"id": "schemas_user_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L35"}, {"id": "schemas_user_userlistresponse", "label": "UserListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L39"}, {"id": "schemas_user_loginrequest", "label": "LoginRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L48"}, {"id": "schemas_user_loginresponse", "label": "LoginResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L54"}, {"id": "schemas_user_changepasswordrequest", "label": "ChangePasswordRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L62"}, {"id": "schemas_user_resetpasswordrequest", "label": "ResetPasswordRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L68"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "schemas_user_userbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_user_userbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "schemas_user_usercreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L16", "weight": 1.0}, {"source": "schemas_user_usercreate", "target": "schemas_user_userbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "schemas_user_userupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L21", "weight": 1.0}, {"source": "schemas_user_userupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "schemas_user_userresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L30", "weight": 1.0}, {"source": "schemas_user_userresponse", "target": "schemas_user_userbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/user.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_user_py", "target": "schemas_user_config", "relation": "contains", "coLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_operations_py", "label": "operations.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L1"}, {"id": "api_operations_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L21"}, {"id": "api_operations_cleanroomcreatebody", "label": "CleanRoomCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L36"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_operations_cleanroomupdatebody", "label": "CleanRoomUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L48"}, {"id": "api_operations_list_clean_rooms", "label": "list_clean_rooms()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L61"}, {"id": "api_operations_create_clean_room", "label": "create_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L84"}, {"id": "api_operations_update_clean_room", "label": "update_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L109"}, {"id": "api_operations_delete_clean_room", "label": "delete_clean_room()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L137"}, {"id": "api_operations_accesslogcreatebody", "label": "AccessLogCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L155"}, {"id": "api_operations_accesslogupdatebody", "label": "AccessLogUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L169"}, {"id": "api_operations_parse_optional_dt", "label": "_parse_optional_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L182"}, {"id": "api_operations_list_access_logs", "label": "list_access_logs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L189"}, {"id": "api_operations_create_access_log", "label": "create_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L218"}, {"id": "api_operations_update_access_log", "label": "update_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L245"}, {"id": "api_operations_delete_access_log", "label": "delete_access_log()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L274"}, {"id": "api_operations_storagefacilitycreatebody", "label": "StorageFacilityCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L292"}, {"id": "api_operations_storagefacilityupdatebody", "label": "StorageFacilityUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L303"}, {"id": "api_operations_list_storage_facilities", "label": "list_storage_facilities()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L314"}, {"id": "api_operations_create_storage_facility", "label": "create_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L333"}, {"id": "api_operations_update_storage_facility", "label": "update_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L357"}, {"id": "api_operations_delete_storage_facility", "label": "delete_storage_facility()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L383"}, {"id": "api_operations_storageslotcreatebody", "label": "StorageSlotCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L401"}, {"id": "api_operations_storageslotbatchcreatebody", "label": "StorageSlotBatchCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/operations.py", "source_location": "L411"}, {"id": "api_operations_storageslotupdatebody", "label":Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "label": "qc_task_result.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L1"}, {"id": "crud_qc_task_result_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L15"}, {"id": "crud_qc_task_result_list_saved_results_by_task", "label": "_list_saved_results_by_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L27"}, {"id": "crud_qc_task_result_resolve_task_item_ref", "label": "_resolve_task_item_ref()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L43"}, {"id": "crud_qc_task_result_merge_saved_into_template", "label": "_merge_saved_into_template()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L70"}, {"id": "crud_qc_task_result_list_results_by_task", "label": "list_results_by_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L94"}, {"id": "crud_qc_task_result_save_results_for_task", "label": "save_results_for_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L111"}, {"id": "crud_qc_task_result_rationale_44", "label": "\u8fd4\u56de (item_source, item_id) \u4f9b biz_qc_item_param \u67e5\u8be2\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L44"}, {"id": "crud_qc_task_result_rationale_97", "label": "\u8fd4\u56de\u4efb\u52a1\u7ed3\u679c\u586b\u5199\u8868\u5355\uff1a\u9879\u76ee\u53c2\u6570\u6a21\u677f + \u5df2\u4fdd\u5b58\u503c\uff08\u65e0\u6a21\u677f\u65f6\u4ec5\u8fd4\u56de\u5df2\u4fdd\u5b58\u8bb0\u5f55\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L97"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_crud_qc_task", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "app_models_qc_param", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target": "crud_qc_task_result_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task_result.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_result_py", "target":Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "label": "dict_data.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L1"}, {"id": "crud_dict_data_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L15"}, {"id": "crud_dict_data_list_dict_data", "label": "list_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L29"}, {"id": "crud_dict_data_get_dict_data", "label": "get_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L63"}, {"id": "crud_dict_data_create_dict_data", "label": "create_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L71"}, {"id": "crud_dict_data_update_dict_data", "label": "update_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L103"}, {"id": "crud_dict_data_soft_delete_dict_data", "label": "soft_delete_dict_data()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L132"}, {"id": "crud_dict_data_list_dict_data_options", "label": "list_dict_data_options()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L142"}, {"id": "crud_dict_data_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L154"}, {"id": "crud_dict_data_rationale_1", "label": "\u5b57\u5178\u6570\u636e CRUD\uff08sys_dict_data\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "crud_dict_data_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "crud_dict_data_list_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L29", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "crud_dict_data_get_dict_data", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dict_data.py", "source_location": "L63", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dict_data_py", "target": "cLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_admin_py", "label": "admin.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L1"}, {"id": "api_admin_list_roles_for_select", "label": "list_roles_for_select()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L40"}, {"id": "api_admin_list_users_for_select", "label": "list_users_for_select()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L72"}, {"id": "api_admin_list_roles_for_designer", "label": "list_roles_for_designer()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L87"}, {"id": "api_admin_tenantcreatebody", "label": "TenantCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L107"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_admin_tenantupdatebody", "label": "TenantUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L118"}, {"id": "api_admin_list_tenants", "label": "list_tenants()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L130"}, {"id": "api_admin_create_tenant", "label": "create_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L151"}, {"id": "api_admin_update_tenant", "label": "update_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L173"}, {"id": "api_admin_delete_tenant", "label": "delete_tenant()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L198"}, {"id": "api_admin_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L215"}, {"id": "api_admin_usercreatebody", "label": "UserCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L228"}, {"id": "api_admin_userupdatebody", "label": "UserUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L245"}, {"id": "api_admin_list_users", "label": "list_users()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L261"}, {"id": "api_admin_get_user_by_id", "label": "get_user_by_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L290"}, {"id": "api_admin_create_user", "label": "create_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L306"}, {"id": "api_admin_update_user", "label": "update_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L339"}, {"id": "api_admin_delete_user", "label": "delete_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L369"}, {"id": "api_admin_reset_user_password", "label": "reset_user_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L382"}, {"id": "api_admin_dicttypecreatebody", "label": "DictTypeCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L399"}, {"id": "api_admin_dicttypeupdatebody", "label": "DictTypeUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L408"}, {"id": "api_admin_list_dict_types", "label": "list_dict_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L418"}, {"id": "api_admin_create_dict_type", "label": "create_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L434"}, {"id": "api_admin_update_dict_type", "label": "update_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L456"}, {"id": "api_admin_delete_dict_type", "label": "delete_dict_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/admin.py", "source_location": "L481"}, {"id": "api_admin_dictdatacreatebody", "label": "DictDataCreateBody", "file_type": "code", "sLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_pilot_service_py", "label": "pilot_service.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L1"}, {"id": "api_pilot_service_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L17"}, {"id": "api_pilot_service_cellproducttypecreatebody", "label": "CellProductTypeCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L32"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_pilot_service_cellproducttypeupdatebody", "label": "CellProductTypeUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L41"}, {"id": "api_pilot_service_list_cell_product_types", "label": "list_cell_product_types()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L51"}, {"id": "api_pilot_service_create_cell_product_type", "label": "create_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L69"}, {"id": "api_pilot_service_update_cell_product_type", "label": "update_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L91"}, {"id": "api_pilot_service_delete_cell_product_type", "label": "delete_cell_product_type()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L116"}, {"id": "api_pilot_service_cellproductspeccreatebody", "label": "CellProductSpecCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L134"}, {"id": "api_pilot_service_cellproductspecupdatebody", "label": "CellProductSpecUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L143"}, {"id": "api_pilot_service_list_cell_product_specs", "label": "list_cell_product_specs()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L153"}, {"id": "api_pilot_service_create_cell_product_spec", "label": "create_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L171"}, {"id": "api_pilot_service_update_cell_product_spec", "label": "update_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L193"}, {"id": "api_pilot_service_delete_cell_product_spec", "label": "delete_cell_product_spec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L218"}, {"id": "api_pilot_service_cellproductpricecreatebody", "label": "CellProductPriceCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L236"}, {"id": "api_pilot_service_cellproductpriceupdatebody", "label": "CellProductPriceUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L251"}, {"id": "api_pilot_service_list_cell_product_prices", "label": "list_cell_product_prices()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L267"}, {"id": "api_pilot_service_create_cell_product_price", "label": "create_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L291"}, {"id": "api_pilot_service_update_cell_product_price", "label": "update_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L319"}, {"id": "api_pilot_service_delete_cell_product_price", "label": "delete_cell_product_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L350"}, {"id": "api_pilot_service_projectsystemcreatebody", "label": "ProjectSystemCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/pilot_service.py", "source_location": "L368"}, {"id": "api_pilot_service_projectsystemupdatebody", "label": "ProjectSystemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/apLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "label": "category_parameter.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L1"}, {"id": "schemas_category_parameter_categoryparameterbase", "label": "CategoryParameterBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_category_parameter_categoryparameteritem", "label": "CategoryParameterItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L18"}, {"id": "schemas_category_parameter_categoryparametercreate", "label": "CategoryParameterCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L28"}, {"id": "schemas_category_parameter_categoryparameterupdate", "label": "CategoryParameterUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L33"}, {"id": "schemas_category_parameter_categoryparameterbatchupdate", "label": "CategoryParameterBatchUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L42"}, {"id": "schemas_category_parameter_categoryparameterresponse", "label": "CategoryParameterResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L49"}, {"id": "schemas_category_parameter_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L57"}, {"id": "schemas_category_parameter_categoryparameterwithdetailresponse", "label": "CategoryParameterWithDetailResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L61"}, {"id": "schemas_category_parameter_categoryparameterlistresponse", "label": "CategoryParameterListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L79"}, {"id": "schemas_category_parameter_rationale_1", "label": "Pydantic schemas - \u5206\u7c7b\u53c2\u6570\u5173\u8054", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L1"}, {"id": "schemas_category_parameter_rationale_19", "label": "\u6279\u91cf\u66f4\u65b0\u4e2d\u7684\u5355\u4e2a\u53c2\u6570\u9879\uff08\u4e0d\u5305\u542bcategoryId\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L19"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "target": "schemas_category_parameter_categoryparameterbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_category_parameter_categoryparameterbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_category_parameter_py", "target": "schemas_category_parameter_categoryparameteritem", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/category_parameter.py", "source_location": "L18", "weight": 1.0}, {"source": "schemas_category_parameter_categoryparLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py", "label": "workflow.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L1"}, {"id": "schemas_workflow_processdefcreate", "label": "ProcessDefCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_workflow_processdefupdate", "label": "ProcessDefUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L15"}, {"id": "schemas_workflow_processdefresponse", "label": "ProcessDefResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L23"}, {"id": "schemas_workflow_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L35"}, {"id": "schemas_workflow_nodedata", "label": "NodeData", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L39"}, {"id": "schemas_workflow_transitiondata", "label": "TransitionData", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L46"}, {"id": "schemas_workflow_publishversionrequest", "label": "PublishVersionRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L52"}, {"id": "schemas_workflow_versionresponse", "label": "VersionResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L59"}, {"id": "schemas_workflow_startinstancerequest", "label": "StartInstanceRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L71"}, {"id": "schemas_workflow_approverequest", "label": "ApproveRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L79"}, {"id": "schemas_workflow_taskresponse", "label": "TaskResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L83"}, {"id": "schemas_workflow_instanceresponse", "label": "InstanceResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L103"}, {"id": "schemas_workflow_rationale_1", "label": "Pydantic schemas - \u5de5\u4f5c\u6d41", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py", "target": "schemas_workflow_processdefcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_workflow_processdefcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py", "target": "schemas_workflow_processdefupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L15", "weight": 1.0}, {"source": "schemas_workflow_processdefupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_workflow_py", "target": "schemas_workflow_processdefresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/workflow.py", "source_location": "L23", "weight": 1.0}, {"source": "schemas_workflow_processdefresponse", Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "label": "qc_material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L1"}, {"id": "crud_qc_material_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L15"}, {"id": "crud_qc_material_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L21"}, {"id": "crud_qc_material_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L25"}, {"id": "crud_qc_material_code_exists", "label": "code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L42"}, {"id": "crud_qc_material_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L58"}, {"id": "crud_qc_material_list_materials", "label": "list_materials()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L72"}, {"id": "crud_qc_material_get_material", "label": "get_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L112"}, {"id": "crud_qc_material_create_material", "label": "create_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L123"}, {"id": "crud_qc_material_update_material", "label": "update_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L175"}, {"id": "crud_qc_material_soft_delete_material", "label": "soft_delete_material()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L228"}, {"id": "crud_qc_material_stock_in", "label": "stock_in()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L240"}, {"id": "crud_qc_material_options_list", "label": "options_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L291"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "crud_qc_material_dec", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_material.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_material_py", "target": "crud_qc_material_fmt_Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "label": "order_status_compat.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L1"}, {"id": "core_order_status_compat_threestatus", "label": "ThreeStatus", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L9"}, {"id": "core_order_status_compat_to_decimal", "label": "_to_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L15"}, {"id": "core_order_status_compat_derive_three_status_from_legacy", "label": "derive_three_status_from_legacy()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L26"}, {"id": "core_order_status_compat_derive_legacy_status_from_three", "label": "derive_legacy_status_from_three()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L69"}, {"id": "core_order_status_compat_rationale_31", "label": "\u9636\u6bb5A\u517c\u5bb9\uff1a\u4ece\u65e7 status \u63a8\u5bfc\u4e09\u5b57\u6bb5\u3002 \u7ea6\u675f\uff1a\u65e7 status \u672c\u8eab\u6df7\u5408\u4e86\u652f\u4ed8/\u914d\u9001/\u8ba2\u5355\u751f\u547d\u5468\u671f\uff0c\u56e0\u6b64\u53ea\u80fd\u5c3d\u529b\u63a8\u65ad\uff1b \u82e5\u4e1a\u52a1\u4fa7\u5df2\u6709\u66f4\u7cbe\u786e", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L31"}, {"id": "core_order_status_compat_rationale_75", "label": "\u9636\u6bb5A\u517c\u5bb9\uff1a\u4ece\u4e09\u5b57\u6bb5\u53cd\u63a8\u65e7 status\uff08\u7528\u4e8e\u65e7\u524d\u7aef/\u65e7\u7b5b\u9009\u53c2\u6570\u517c\u5bb9\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L75"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "dataclasses", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "core_order_status_compat_threestatus", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "core_order_status_compat_to_decimal", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "core_order_status_compat_derive_three_status_from_legacy", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_order_status_compat_py", "target": "core_order_status_compat_derive_legacy_status_from_three", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L69", "weight": 1.0}, {"source": "core_order_status_compat_derive_three_status_from_legacy", "target": "core_order_status_compat_to_decimal", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L37", "weight": 1.0}, {"source": "core_order_status_compat_derive_three_status_from_legacy", "target": "core_order_status_compat_threestatus", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/order_status_compat.py", "source_location": "L66", "weight": 1.0}, {"source": "core_order_status_compat_rationale_31", "target": "core_order_stLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_order_py", "label": "order.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L1"}, {"id": "schemas_order_orderitembase", "label": "OrderItemBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L8"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_order_orderitemcreate", "label": "OrderItemCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L16"}, {"id": "schemas_order_orderitemresponse", "label": "OrderItemResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L21"}, {"id": "schemas_order_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L34"}, {"id": "schemas_order_ordercreate", "label": "OrderCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L38"}, {"id": "schemas_order_orderpreviewrequest", "label": "OrderPreviewRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L47"}, {"id": "schemas_order_orderresponse", "label": "OrderResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L54"}, {"id": "schemas_order_orderdetailresponse", "label": "OrderDetailResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L86"}, {"id": "schemas_order_orderlistresponse", "label": "OrderListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L92"}, {"id": "schemas_order_orderpreviewresponse", "label": "OrderPreviewResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L101"}, {"id": "schemas_order_ordercancelrequest", "label": "OrderCancelRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L110"}, {"id": "schemas_order_orderdirectcancelrequest", "label": "OrderDirectCancelRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L115"}, {"id": "schemas_order_orderreviewcancelrequest", "label": "OrderReviewCancelRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L120"}, {"id": "schemas_order_orderstatusresponse", "label": "OrderStatusResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L126"}, {"id": "schemas_order_orderstatuslogresponse", "label": "OrderStatusLogResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L133"}, {"id": "schemas_order_deliveryprogressresponse", "label": "DeliveryProgressResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L149"}, {"id": "schemas_order_orderadjustitem", "label": "OrderAdjustItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L162"}, {"id": "schemas_order_orderadjustrequest", "label": "OrderAdjustRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L171"}, {"id": "schemas_order_orderadjustresponse", "label": "OrderAdjustResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L176"}, {"id": "schemas_order_orderadjustresult", "label": "OrderAdjustResult", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L195"}, {"id": "schemas_order_orderlockrequest", "label": "OrderLockRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L207"}, {"id": "schemas_order_orderlockresponse", "label": "OrderLockResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L212"}, {"id": "schemas_order_orderunlockrequest", "label": "OrderUnlockRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/order.py", "source_location": "L220"}, {"id": "schemas_order_orderunlLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_insurance_company_py", "label": "insurance_company.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L1"}, {"id": "api_insurance_company_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L29"}, {"id": "api_insurance_company_generate_uuid", "label": "_generate_uuid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L39"}, {"id": "api_insurance_company_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L43"}, {"id": "api_insurance_company_total_pages", "label": "_total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L51"}, {"id": "api_insurance_company_row_to_dict_company", "label": "_row_to_dict_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L60"}, {"id": "api_insurance_company_row_to_dict_invoice", "label": "_row_to_dict_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L79"}, {"id": "api_insurance_company_row_to_dict_project_price", "label": "_row_to_dict_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L100"}, {"id": "api_insurance_company_list_insurance_companies", "label": "_list_insurance_companies()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L123"}, {"id": "api_insurance_company_create_insurance_company", "label": "_create_insurance_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L142"}, {"id": "api_insurance_company_update_insurance_company", "label": "_update_insurance_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L178"}, {"id": "api_insurance_company_soft_delete_insurance_company", "label": "_soft_delete_insurance_company()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L224"}, {"id": "api_insurance_company_list_insurance_company_invoices", "label": "_list_insurance_company_invoices()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L245"}, {"id": "api_insurance_company_create_insurance_company_invoice", "label": "_create_insurance_company_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L273"}, {"id": "api_insurance_company_update_insurance_company_invoice", "label": "_update_insurance_company_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L313"}, {"id": "api_insurance_company_soft_delete_insurance_company_invoice", "label": "_soft_delete_insurance_company_invoice()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L362"}, {"id": "api_insurance_company_list_insurance_project_prices", "label": "_list_insurance_project_prices()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L383"}, {"id": "api_insurance_company_create_insurance_project_price", "label": "_create_insurance_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L411"}, {"id": "api_insurance_company_update_insurance_project_price", "label": "_update_insurance_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L445"}, {"id": "api_insurance_company_soft_delete_insurance_project_price", "label": "_soft_delete_insurance_project_price()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L485"}, {"id": "api_insurance_company_insurancecompanycreatebody", "label": "InsuranceCompanyCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/insurance_company.py", "source_location": "L506"}, {"id": "basemodel", "label": "BaseModel", "file_typeLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "label": "role.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L1"}, {"id": "crud_role_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L20"}, {"id": "crud_role_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L34"}, {"id": "crud_role_list_roles", "label": "list_roles()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L45"}, {"id": "crud_role_get_role", "label": "get_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L76"}, {"id": "crud_role_role_name_exists", "label": "role_name_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L84"}, {"id": "crud_role_create_role", "label": "create_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L98"}, {"id": "crud_role_update_role", "label": "update_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L135"}, {"id": "crud_role_soft_delete_role", "label": "soft_delete_role()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L172"}, {"id": "crud_role_get_role_menu_ids", "label": "get_role_menu_ids()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L194"}, {"id": "crud_role_update_role_menus", "label": "update_role_menus()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L203"}, {"id": "crud_role_get_role_data_scope", "label": "get_role_data_scope()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L238"}, {"id": "crud_role_update_role_data_scope", "label": "update_role_data_scope()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L247"}, {"id": "crud_role_rationale_1", "label": "\u89d2\u8272 CRUD\uff08sys_role / sys_role_menu / sys_role_data_scope_detail\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "crud_role_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/role.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_role_py", "target": "crud_role_total_pagesLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "label": "auth.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L1"}, {"id": "core_auth_redis_session_enabled", "label": "_redis_session_enabled()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L27"}, {"id": "core_auth_get_redis_client", "label": "_get_redis_client()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L32"}, {"id": "core_auth_session_key", "label": "_session_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L49"}, {"id": "core_auth_refresh_key", "label": "_refresh_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L53"}, {"id": "core_auth_store_session", "label": "store_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L57"}, {"id": "core_auth_revoke_session", "label": "revoke_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L65"}, {"id": "core_auth_extend_session", "label": "extend_session()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L73"}, {"id": "core_auth_is_session_valid", "label": "is_session_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L81"}, {"id": "core_auth_store_refresh_token", "label": "store_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L96"}, {"id": "core_auth_is_refresh_token_valid", "label": "is_refresh_token_valid()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L104"}, {"id": "core_auth_revoke_refresh_token", "label": "revoke_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L116"}, {"id": "core_auth_create_access_token", "label": "create_access_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L123"}, {"id": "core_auth_create_refresh_token", "label": "create_refresh_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L147"}, {"id": "core_auth_decode_token", "label": "decode_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L163"}, {"id": "core_auth_get_current_user_by_token", "label": "get_current_user_by_token()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L176"}, {"id": "core_auth_get_current_user", "label": "get_current_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L230"}, {"id": "core_auth_get_current_user_simple", "label": "get_current_user_simple()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L238"}, {"id": "core_auth_get_client_ip", "label": "get_client_ip()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L256"}, {"id": "core_auth_rationale_74", "label": "\u5237\u65b0\u4f1a\u8bdd TTL\uff08\u7528\u4e8e refreshToken \u5ef6\u957f\u4f1a\u8bdd\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L74"}, {"id": "core_auth_rationale_97", "label": "\u5199\u5165 refreshToken\uff08\u7528\u4e8e one-time \u4f7f\u7528/\u540a\u9500\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L97"}, {"id": "core_auth_rationale_180", "label": "\u6839\u636e token \u83b7\u53d6\u5f53\u524d\u7528\u6237\uff08\u5305\u542b Redis \u4f1a\u8bdd\u6821\u9a8c\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L180"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/auth.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_auth_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "label": "process.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L1"}, {"id": "crud_process_reagent_row_to_dict", "label": "_reagent_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L21"}, {"id": "crud_process_consumable_row_to_dict", "label": "_consumable_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L35"}, {"id": "crud_process_output_row_to_dict", "label": "_output_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L49"}, {"id": "crud_process_data_collection_row_to_dict", "label": "_data_collection_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L59"}, {"id": "crud_process_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L70"}, {"id": "crud_process_list_processes", "label": "list_processes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L88"}, {"id": "crud_process_list_all_processes", "label": "list_all_processes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L124"}, {"id": "crud_process_get_process", "label": "get_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L134"}, {"id": "crud_process_get_process_detail", "label": "get_process_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L142"}, {"id": "crud_process_process_code_exists", "label": "process_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L182"}, {"id": "crud_process_create_sub_reagent", "label": "_create_sub_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L191"}, {"id": "crud_process_create_sub_consumable", "label": "_create_sub_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L213"}, {"id": "crud_process_create_sub_output", "label": "_create_sub_output()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L236"}, {"id": "crud_process_create_sub_data_collection", "label": "_create_sub_data_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L256"}, {"id": "crud_process_create_process", "label": "create_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L275"}, {"id": "crud_process_soft_delete_sub_records", "label": "_soft_delete_sub_records()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L340"}, {"id": "crud_process_update_process", "label": "update_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L352"}, {"id": "crud_process_soft_delete_process", "label": "soft_delete_process()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L427"}, {"id": "crud_process_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L444"}, {"id": "crud_process_rationale_1", "label": "\u5de5\u827a\u5e93 CRUD\uff08biz_process + biz_process_reagent/consumable/output\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_py", "target": "typing", "relationLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "label": "main.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L1"}, {"id": "app_main_lifespan", "label": "lifespan()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L17"}, {"id": "app_main_mask_secret", "label": "_mask_secret()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L81"}, {"id": "app_main_root", "label": "root()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L103"}, {"id": "app_main_health_check", "label": "health_check()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L108"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "contextlib", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "fastapi_middleware_cors", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_core_api_request_log_middleware", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_core_api_crypto_middleware", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_api", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_main_lifespan", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L17", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_main_mask_secret", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L81", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_main_root", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L103", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_main_py", "target": "app_main_health_check", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L108", "weight": 1.0}], "raw_calls": [{"caller_nid": "app_main_lifespan", "callee": "ensure_initialized", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L21"}, {"caller_nid": "app_main_lifespan", "callee": "init_scheduled_tasks", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/main.py", "source_location": "L26"}, {"caller_nid": "app_main_lifespan", "callee": "warning", "soLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "label": "dept.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L1"}, {"id": "crud_dept_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L13"}, {"id": "crud_dept_build_tree", "label": "_build_tree()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L30"}, {"id": "crud_dept_list_depts", "label": "list_depts()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L38"}, {"id": "crud_dept_list_depts_tree", "label": "list_depts_tree()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L55"}, {"id": "crud_dept_get_dept", "label": "get_dept()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L65"}, {"id": "crud_dept_create_dept", "label": "create_dept()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L73"}, {"id": "crud_dept_update_dept", "label": "update_dept()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L114"}, {"id": "crud_dept_cascade_soft_delete", "label": "_cascade_soft_delete()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L152"}, {"id": "crud_dept_soft_delete_dept", "label": "soft_delete_dept()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L165"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "crud_dept_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "crud_dept_build_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "crud_dept_list_depts", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "crud_dept_list_depts_tree", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L55", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "crud_dept_get_dept", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/dept.py", "source_location": "L65", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_dept_py", "target": "crud_dept_create_dept", "relatiLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_init_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/__init__.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "label": "leave.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L1"}, {"id": "api_leave_leave_local_callback", "label": "_leave_local_callback()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L24"}, {"id": "api_leave_list_leaves", "label": "list_leaves()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L39"}, {"id": "api_leave_create_leave", "label": "create_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L62"}, {"id": "api_leave_submit_leave", "label": "submit_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L87"}, {"id": "api_leave_leave_workflow_callback", "label": "leave_workflow_callback()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L142"}, {"id": "api_leave_get_leave", "label": "get_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L161"}, {"id": "api_leave_delete_leave", "label": "delete_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L174"}, {"id": "api_leave_update_leave", "label": "update_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L191"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_core_menu_guard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_crud", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_crud_leave", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_schemas_leave", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "api_leave_leave_local_callback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_leave_py", "target": "app_services_workflow_callback", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/leave.py", "source_location": "L34", "weighLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L1"}, {"id": "api_research_donation_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L18"}, {"id": "api_research_donation_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L28"}, {"id": "api_research_donation_donationcreatebody", "label": "DonationCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L40"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_research_donation_donationupdatebody", "label": "DonationUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L61"}, {"id": "api_research_donation_batchdeletebody", "label": "BatchDeleteBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L82"}, {"id": "api_research_donation_auditsubmitbody", "label": "AuditSubmitBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L88"}, {"id": "api_research_donation_statuschangebody", "label": "StatusChangeBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L95"}, {"id": "api_research_donation_convertfromstoragebody", "label": "ConvertFromStorageBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L103"}, {"id": "api_research_donation_list_research_donations", "label": "list_research_donations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L115"}, {"id": "api_research_donation_list_research_donation_audits", "label": "list_research_donation_audits()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L143"}, {"id": "api_research_donation_get_research_donation_detail", "label": "get_research_donation_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L169"}, {"id": "api_research_donation_create_research_donation", "label": "create_research_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L187"}, {"id": "api_research_donation_update_research_donation", "label": "update_research_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L217"}, {"id": "api_research_donation_delete_research_donation", "label": "delete_research_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L248"}, {"id": "api_research_donation_batch_delete_research_donations", "label": "batch_delete_research_donations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L273"}, {"id": "api_research_donation_submit_donation_audit", "label": "submit_donation_audit()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L298"}, {"id": "api_research_donation_change_donation_status", "label": "change_donation_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L331"}, {"id": "api_research_donation_convert_from_storage", "label": "convert_from_storage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L363"}, {"id": "api_research_donation_convert_to_storage", "label": "convert_to_storage()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L391"}, {"id": "api_research_donation_rationale_1", "label": "\u79d1\u7814\u6350\u8d60\u7ba1\u7406 \u2014 \u6350\u8d60\u5355 CRUD / \u5ba1\u6838 / \u72b6\u6001\u53d8\u66f4 / \u8f6c\u6362 API", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/research_donation.py", "source_location": "L1"}], "edges": [{Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "label": "leave.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L1"}, {"id": "crud_leave_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L14"}, {"id": "crud_leave_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L18"}, {"id": "crud_leave_list_leaves", "label": "list_leaves()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L38"}, {"id": "crud_leave_get_leave", "label": "get_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L69"}, {"id": "crud_leave_create_leave", "label": "create_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L74"}, {"id": "crud_leave_update_leave", "label": "update_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L105"}, {"id": "crud_leave_update_leave_status", "label": "update_leave_status()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L125"}, {"id": "crud_leave_soft_delete_leave", "label": "soft_delete_leave()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L137"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_total_pages", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L18", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_list_leaves", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L38", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_get_leave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L69", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_create_leave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_location": "L74", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_leave_py", "target": "crud_leave_update_leave", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/leave.py", "source_lLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_py", "label": "product_review.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L1"}, {"id": "schemas_product_review_productreviewbase", "label": "ProductReviewBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_product_review_productreviewcreate", "label": "ProductReviewCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L19"}, {"id": "schemas_product_review_productreviewupdate", "label": "ProductReviewUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L24"}, {"id": "schemas_product_review_productreviewreplyrequest", "label": "ProductReviewReplyRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L32"}, {"id": "schemas_product_review_productreviewrejectrequest", "label": "ProductReviewRejectRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L37"}, {"id": "schemas_product_review_productreviewtoprequest", "label": "ProductReviewTopRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L42"}, {"id": "schemas_product_review_productreviewresponse", "label": "ProductReviewResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L47"}, {"id": "schemas_product_review_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L64"}, {"id": "schemas_product_review_productreviewdetailresponse", "label": "ProductReviewDetailResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L68"}, {"id": "schemas_product_review_productreviewlistresponse", "label": "ProductReviewListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L73"}, {"id": "schemas_product_review_productreviewstatisticsresponse", "label": "ProductReviewStatisticsResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L81"}, {"id": "schemas_product_review_productreviewadminlistrequest", "label": "ProductReviewAdminListRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L91"}, {"id": "schemas_product_review_minireviewlistrequest", "label": "MiniReviewListRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L102"}, {"id": "schemas_product_review_rationale_1", "label": "Pydantic schemas - \u552e\u540e\u8bc4\u4ef7", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_product_review_py", "target": "schemas_product_review_productreviewbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_product_review_productreviewbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/product_review.py", "sourLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_route_py", "label": "process_route.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L1"}, {"id": "crud_process_route_route_row_to_dict", "label": "_route_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L31"}, {"id": "crud_process_route_step_row_to_dict", "label": "_step_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L47"}, {"id": "crud_process_route_step_reagent_row_to_dict", "label": "_step_reagent_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L64"}, {"id": "crud_process_route_step_consumable_row_to_dict", "label": "_step_consumable_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L78"}, {"id": "crud_process_route_step_output_row_to_dict", "label": "_step_output_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L92"}, {"id": "crud_process_route_step_data_collection_row_to_dict", "label": "_step_data_collection_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L103"}, {"id": "crud_process_route_list_routes", "label": "list_routes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L118"}, {"id": "crud_process_route_get_route", "label": "get_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L150"}, {"id": "crud_process_route_get_route_detail", "label": "get_route_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L156"}, {"id": "crud_process_route_create_route", "label": "create_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L194"}, {"id": "crud_process_route_update_route", "label": "update_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L225"}, {"id": "crud_process_route_set_current_route", "label": "set_current_route()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L241"}, {"id": "crud_process_route_soft_delete_sub_records", "label": "_soft_delete_sub_records()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L267"}, {"id": "crud_process_route_create_step_reagent", "label": "_create_step_reagent()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L277"}, {"id": "crud_process_route_create_step_consumable", "label": "_create_step_consumable()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L292"}, {"id": "crud_process_route_create_step_output", "label": "_create_step_output()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L307"}, {"id": "crud_process_route_create_step_data_collection", "label": "_create_step_data_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L319"}, {"id": "crud_process_route_add_step", "label": "add_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L335"}, {"id": "crud_process_route_update_step", "label": "update_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L410"}, {"id": "crud_process_route_reorder_steps", "label": "reorder_steps()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L429"}, {"id": "crud_process_route_copy_step", "label": "copy_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L443"}, {"id": "crud_process_route_soft_delete_step", "label": "soft_delete_step()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_route.py", "source_location": "L531"}, {"id": "crud_process_route_soft_delete_routLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "label": "sample_reception.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L1"}, {"id": "api_sample_reception_get_tenant_no", "label": "_get_tenant_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L21"}, {"id": "api_sample_reception_get_current_user_id", "label": "_get_current_user_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L31"}, {"id": "api_sample_reception_page_payload", "label": "_page_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L38"}, {"id": "api_sample_reception_checkitembody", "label": "CheckItemBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L51"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "api_sample_reception_checkitemupdatebody", "label": "CheckItemUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L61"}, {"id": "api_sample_reception_list_check_items", "label": "list_check_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L72"}, {"id": "api_sample_reception_list_active_check_items", "label": "list_active_check_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L102"}, {"id": "api_sample_reception_create_check_item", "label": "create_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L117"}, {"id": "api_sample_reception_update_check_item", "label": "update_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L148"}, {"id": "api_sample_reception_delete_check_item", "label": "delete_check_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L178"}, {"id": "api_sample_reception_list_pending_samples", "label": "list_pending_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L199"}, {"id": "api_sample_reception_list_received_samples", "label": "list_received_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L221"}, {"id": "api_sample_reception_get_sample_reception_detail", "label": "get_sample_reception_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L243"}, {"id": "api_sample_reception_receptionchecksubmit", "label": "ReceptionCheckSubmit", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L260"}, {"id": "api_sample_reception_samplereceptioncreatebody", "label": "SampleReceptionCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L267"}, {"id": "api_sample_reception_post_sample_reception", "label": "post_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L286"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_sample_reception_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/sample_reception.py", Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_delivery_py", "label": "delivery.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L1"}, {"id": "schemas_delivery_deliverytaskitemresponse", "label": "DeliveryTaskItemResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L8"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_delivery_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L25"}, {"id": "schemas_delivery_deliverytaskresponse", "label": "DeliveryTaskResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L29"}, {"id": "schemas_delivery_deliverytaskdetailresponse", "label": "DeliveryTaskDetailResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L54"}, {"id": "schemas_delivery_deliverytasklistresponse", "label": "DeliveryTaskListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L61"}, {"id": "schemas_delivery_deliverytaskcreaterequest", "label": "DeliveryTaskCreateRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L70"}, {"id": "schemas_delivery_deliverytaskassignrequest", "label": "DeliveryTaskAssignRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L79"}, {"id": "schemas_delivery_deliverytaskpickuprequest", "label": "DeliveryTaskPickupRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L84"}, {"id": "schemas_delivery_deliverytaskdeliverrequest", "label": "DeliveryTaskDeliverRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L90"}, {"id": "schemas_delivery_deliverytaskcancelrequest", "label": "DeliveryTaskCancelRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L96"}, {"id": "schemas_delivery_deliverytaskstatusupdaterequest", "label": "DeliveryTaskStatusUpdateRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L101"}, {"id": "schemas_delivery_suppliertaskresponse", "label": "SupplierTaskResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L110"}, {"id": "schemas_delivery_suppliertasklistresponse", "label": "SupplierTaskListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L134"}, {"id": "schemas_delivery_supplierconfirmpickuprequest", "label": "SupplierConfirmPickupRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L143"}, {"id": "schemas_delivery_supplierconfirmpreparedrequest", "label": "SupplierConfirmPreparedRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L148"}, {"id": "schemas_delivery_deliverystatisticsresponse", "label": "DeliveryStatisticsResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L156"}, {"id": "schemas_delivery_deliverywarningitem", "label": "DeliveryWarningItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L167"}, {"id": "schemas_delivery_deliverywarninglistresponse", "label": "DeliveryWarningListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L178"}, {"id": "schemas_delivery_deliveryassignrequest", "label": "DeliveryAssignRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L190"}, {"id": "schemas_delivery_deliveryassignbatchrequest", "label": "DeliveryAssignBatchRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L195"}, {"id": "schemas_delivery_deliverypickuprequest", "label": "DeliveryPickupRequest", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/delivery.py", "source_location": "L201"}, {"id": "schemas_delivery_deliverydLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/__init__.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_init_py", "target": "app_crud_base", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/__init__.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_init_py", "target": "app_crud_user", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/__init__.py", "source_location": "L3", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_sample_reception_py", "label": "sample_reception.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L1"}, {"id": "crud_sample_reception_donation_sample_id_col", "label": "_donation_sample_id_col()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L34"}, {"id": "crud_sample_reception_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L39"}, {"id": "crud_sample_reception_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L43"}, {"id": "crud_sample_reception_reception_to_dict", "label": "_reception_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L49"}, {"id": "crud_sample_reception_sample_detail_rows_query", "label": "_sample_detail_rows_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L73"}, {"id": "crud_sample_reception_donation_sample_detail_rows_query", "label": "_donation_sample_detail_rows_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L107"}, {"id": "crud_sample_reception_donation_sample_pending_query", "label": "_donation_sample_pending_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L141"}, {"id": "crud_sample_reception_donation_rows_to_sample_list_items", "label": "_donation_rows_to_sample_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L172"}, {"id": "crud_sample_reception_sample_pending_query", "label": "_sample_pending_query()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L253"}, {"id": "crud_sample_reception_rows_to_sample_list_items", "label": "_rows_to_sample_list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L282"}, {"id": "crud_sample_reception_list_pending_protocol_samples", "label": "list_pending_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L364"}, {"id": "crud_sample_reception_list_received_protocol_samples", "label": "list_received_protocol_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L420"}, {"id": "crud_sample_reception_get_reception_by_id", "label": "get_reception_by_id()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L532"}, {"id": "crud_sample_reception_create_sample_reception", "label": "create_sample_reception()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L609"}, {"id": "crud_sample_reception_get_receptions_map_for_samples", "label": "get_receptions_map_for_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L781"}, {"id": "crud_sample_reception_get_receptions_map_for_donation_samples", "label": "get_receptions_map_for_donation_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L815"}, {"id": "crud_sample_reception_rationale_35", "label": "\u6350\u8d60\u6837\u672c ID \u4e0e biz_sample_reception.donation_sample_id \u6bd4\u8f83\u65f6\u7edf\u4e00\u6392\u5e8f\u89c4\u5219\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L35"}, {"id": "crud_sample_reception_rationale_74", "label": "\u534f\u8bae\u6837\u672c + \u534f\u8bae\u5355 + \u5ba2\u6237 + \u8fd0\u8f93\uff08\u663e\u5f0f select_from \u907f\u514d\u591a\u8868 join \u6b67\u4e49\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L74"}, {"id": "crud_sample_reception_rationale_108", "label": "\u6350\u8d60\u6837\u672c + \u6350\u8d60\u5355 + \u5f53\u4e8b\u4eba + \u8fd0\u8f93\uff08\u56db\u8868 JOIN\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/sample_reception.py", "source_location": "L108"}, {Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "label": "cell_product.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L1"}, {"id": "schemas_cell_product_cellproductcreate", "label": "CellProductCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_cell_product_cellproductupdate", "label": "CellProductUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L22"}, {"id": "schemas_cell_product_cellproductlistquery", "label": "CellProductListQuery", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L36"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "target": "schemas_cell_product_cellproductcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_cell_product_cellproductcreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "target": "schemas_cell_product_cellproductupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L22", "weight": 1.0}, {"source": "schemas_cell_product_cellproductupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L22", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_cell_product_py", "target": "schemas_cell_product_cellproductlistquery", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L36", "weight": 1.0}, {"source": "schemas_cell_product_cellproductlistquery", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/cell_product.py", "source_location": "L36", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "label": "common.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L1"}, {"id": "schemas_common_paginationparams", "label": "PaginationParams", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_common_paginationresult", "label": "PaginationResult", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L12"}, {"id": "schemas_common_idinput", "label": "IdInput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L21"}, {"id": "schemas_common_statusinput", "label": "StatusInput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L26"}, {"id": "schemas_common_deleteinput", "label": "DeleteInput", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L31"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "schemas_common_paginationparams", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_common_paginationparams", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "schemas_common_paginationresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L12", "weight": 1.0}, {"source": "schemas_common_paginationresult", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "schemas_common_idinput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L21", "weight": 1.0}, {"source": "schemas_common_idinput", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L21", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "schemas_common_statusinput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L26", "weight": 1.0}, {"source": "schemas_common_statusinput", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_common_py", "target": "schemas_common_deleteinput", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L31", "weight": 1.0}, {"source": "schemas_common_deleteinput", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/common.py", "source_location": "L31", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "label": "process_category.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L1"}, {"id": "crud_process_category_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L15"}, {"id": "crud_process_category_list_process_categories", "label": "list_process_categories()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L28"}, {"id": "crud_process_category_get_process_category", "label": "get_process_category()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L64"}, {"id": "crud_process_category_category_code_exists", "label": "category_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L72"}, {"id": "crud_process_category_create_process_category", "label": "create_process_category()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L81"}, {"id": "crud_process_category_update_process_category", "label": "update_process_category()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L116"}, {"id": "crud_process_category_soft_delete_process_category", "label": "soft_delete_process_category()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L150"}, {"id": "crud_process_category_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L160"}, {"id": "crud_process_category_rationale_1", "label": "\u5de5\u827a\u5de5\u5e8f\u5206\u7c7b CRUD\uff08biz_process_category\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "crud_process_category_row_to_dict", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_process_category_py", "target": "crud_process_category_list_process_categories", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/process_category.py", "source_location": "L28", "weight": 1.Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "label": "api_crypto_middleware.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L1"}, {"id": "core_api_crypto_middleware_nonce_key", "label": "_nonce_key()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L28"}, {"id": "core_api_crypto_middleware_should_skip_path", "label": "_should_skip_path()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L32"}, {"id": "core_api_crypto_middleware_is_crypto_api", "label": "_is_crypto_api()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L37"}, {"id": "core_api_crypto_middleware_claims_from_auth", "label": "_claims_from_auth()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L43"}, {"id": "core_api_crypto_middleware_get_redis_client", "label": "_get_redis_client()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L61"}, {"id": "core_api_crypto_middleware_mark_nonce_once", "label": "_mark_nonce_once()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L78"}, {"id": "core_api_crypto_middleware_json_error_response", "label": "_json_error_response()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L100"}, {"id": "core_api_crypto_middleware_coerce_post_method_override_to_get", "label": "_coerce_post_method_override_to_get()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L105"}, {"id": "core_api_crypto_middleware_apicryptomiddleware", "label": "ApiCryptoMiddleware", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L151"}, {"id": "basehttpmiddleware", "label": "BaseHTTPMiddleware", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "core_api_crypto_middleware_apicryptomiddleware_dispatch", "label": ".dispatch()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L152"}, {"id": "core_api_crypto_middleware_rationale_38", "label": "\u4ec5\u5bf9\u8fd0\u8425\u7aef\u4e0e\u5c0f\u7a0b\u5e8f\u4e1a\u52a1 API \u5e94\u7528\u7edf\u4e00\u5bc6\u6587\u534f\u8bae\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L38"}, {"id": "core_api_crypto_middleware_rationale_106", "label": "\u524d\u7aef Axios \u5728\u5f00\u542f\u52a0\u5bc6\u65f6\u4f1a\u628a GET \u6539\u4e3a POST \u5e76\u5e26 X-HTTP-Method-Override: GET\u3002 \u5f53\u540e\u7aef\u672a\u542f\u7528 API_EN", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L106"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "target": "json", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "target": "time", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/api_crypto_middleware.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_api_crypto_middleware_py", "target": Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "label": "qc_third_party_item.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L1"}, {"id": "crud_qc_third_party_item_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L16"}, {"id": "crud_qc_third_party_item_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L22"}, {"id": "crud_qc_third_party_item_item_code_exists", "label": "item_code_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L38"}, {"id": "crud_qc_third_party_item_company_name_map", "label": "_company_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L59"}, {"id": "crud_qc_third_party_item_list_items", "label": "list_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L70"}, {"id": "crud_qc_third_party_item_list_active_items", "label": "list_active_items()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L115"}, {"id": "crud_qc_third_party_item_get_item", "label": "get_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L132"}, {"id": "crud_qc_third_party_item_create_item", "label": "create_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L143"}, {"id": "crud_qc_third_party_item_update_item", "label": "update_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L195"}, {"id": "crud_qc_third_party_item_soft_delete_item", "label": "soft_delete_item()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L249"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "app_core_utils", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "app_crud_qc_third_party_company", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L12", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_third_party_item.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_third_party_item_py", "target": "crud_qc_third_party_item_dec", "relation": "contains", "confidence": "EXTLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "label": "workflow_callback.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L1"}, {"id": "services_workflow_callback_register_local_callback", "label": "register_local_callback()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L23"}, {"id": "services_workflow_callback_dispatch_local", "label": "_dispatch_local()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L28"}, {"id": "services_workflow_callback_trigger_callback", "label": "trigger_callback()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L60"}, {"id": "services_workflow_callback_rationale_1", "label": "\u5de5\u4f5c\u6d41\u56de\u8c03\u670d\u52a1 \u2014\u2014 \u6d41\u7a0b\u72b6\u6001\u53d8\u66f4\u65f6\u901a\u77e5\u4e1a\u52a1\u7cfb\u7edf", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L1"}, {"id": "services_workflow_callback_rationale_24", "label": "\u6ce8\u518c\u672c\u5730\u56de\u8c03\u51fd\u6570\u3002\u5f53 callback_url \u4ee5 path \u5f00\u5934\u65f6\u76f4\u63a5\u8c03\u7528 fn\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L24"}, {"id": "services_workflow_callback_rationale_29", "label": "\u5c1d\u8bd5\u672c\u5730\u76f4\u8c03\u3002\u8fd4\u56de True \u8868\u793a\u5df2\u5904\u7406\uff0cFalse \u8868\u793a\u65e0\u5339\u914d\u7684\u672c\u5730\u56de\u8c03\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L29"}, {"id": "services_workflow_callback_rationale_61", "label": "\u6d41\u7a0b\u5b9e\u4f8b\u72b6\u6001\u53d8\u66f4\u540e\uff0c\u5411\u4e1a\u52a1\u7cfb\u7edf\u53d1\u9001\u56de\u8c03\u901a\u77e5\u3002 \u4f18\u5148\u7ea7\uff1a 1. \u5982\u679c callback_url \u662f\u5185\u90e8\u8def\u5f84\uff08\u4ee5 / \u5f00\u5934\uff09\uff0c\u4f18\u5148\u5c1d\u8bd5\u672c\u5730\u76f4\u8c03", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L61"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "requests", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "services_workflow_callback_register_local_callback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "services_workflow_callback_dispatch_local", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_workflow_callback_py", "target": "services_workflow_callback_trigger_callback", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", "source_location": "L60", "weight": 1.0}, {"source": "services_workflow_callback_trigger_callback", "target": "services_workflow_callback_dispatch_local", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/workflow_callback.py", Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "label": "web_auth_roles.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L1"}, {"id": "services_web_auth_roles_map_role_name_to_web", "label": "_map_role_name_to_web()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L13"}, {"id": "services_web_auth_roles_resolve_web_role_for_user", "label": "resolve_web_role_for_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L25"}, {"id": "services_web_auth_roles_iter_user_menu_perm_codes", "label": "iter_user_menu_perm_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L53"}, {"id": "services_web_auth_roles_rationale_1", "label": "Web \u7ba1\u7406\u7aef\u767b\u5f55\uff1a\u57fa\u4e8e V0.3 sys_user / sys_user_role / sys_role \u7684\u89d2\u8272\u4e0e\u83dc\u5355\u6743\u9650\u89e3\u6790", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L1"}, {"id": "services_web_auth_roles_rationale_14", "label": "\u5c06 sys_role.role_name \u6620\u5c04\u4e3a web-admin \u4f7f\u7528\u7684 role \u5b57\u7b26\u4e32\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L14"}, {"id": "services_web_auth_roles_rationale_26", "label": "\u6839\u636e\u7528\u6237\u5173\u8054\u89d2\u8272\u89e3\u6790 Web \u7aef role\uff08admin / super_admin\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L26"}, {"id": "services_web_auth_roles_rationale_54", "label": "\u7528\u6237\u901a\u8fc7\u89d2\u8272\u5173\u8054\u5f97\u5230\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\uff08sys_menu.perms\uff0c\u7a7a\u5219\u9000\u56de\u83dc\u5355 id\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L54"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "app_models_models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_map_role_name_to_web", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_resolve_web_role_for_user", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_services_web_auth_roles_py", "target": "services_web_auth_roles_iter_user_menu_perm_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/services/web_auth_roles.py", "source_location": "L53", "weight": 1.0}, {"source": "services_web_auth_roles_resolve_web_role_for_user", "target": "services_web_auth_roles_map_role_name_to_web", "relation": "calls", "confidence": "EXTRACTED", "source_file": "/UsLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_storage_py", "label": "storage.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L1"}, {"id": "core_storage_convert_heic_to_jpeg", "label": "convert_heic_to_jpeg()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L37"}, {"id": "core_storage_process_image_content", "label": "process_image_content()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L52"}, {"id": "core_storage_basestorage", "label": "BaseStorage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L61"}, {"id": "core_storage_basestorage_upload_file", "label": ".upload_file()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L64"}, {"id": "core_storage_basestorage_upload_base64", "label": ".upload_base64()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L68"}, {"id": "core_storage_basestorage_delete_file", "label": ".delete_file()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L72"}, {"id": "core_storage_basestorage_get_url", "label": ".get_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L76"}, {"id": "core_storage_basestorage_presigned_download_url", "label": ".presigned_download_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L80"}, {"id": "core_storage_localstorage", "label": "LocalStorage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L87"}, {"id": "core_storage_localstorage_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L90"}, {"id": "core_storage_localstorage_ensure_dir", "label": "._ensure_dir()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L94"}, {"id": "core_storage_localstorage_generate_filename", "label": "._generate_filename()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L100"}, {"id": "core_storage_localstorage_upload_file", "label": ".upload_file()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L106"}, {"id": "core_storage_localstorage_upload_base64", "label": ".upload_base64()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L121"}, {"id": "core_storage_localstorage_delete_file", "label": ".delete_file()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L130"}, {"id": "core_storage_localstorage_get_url", "label": ".get_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L147"}, {"id": "core_storage_qiniustorage", "label": "QiniuStorage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L152"}, {"id": "core_storage_qiniustorage_init", "label": ".__init__()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L155"}, {"id": "core_storage_qiniustorage_generate_filename", "label": "._generate_filename()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L164"}, {"id": "core_storage_qiniustorage_upload_file", "label": ".upload_file()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L170"}, {"id": "core_storage_qiniustorage_upload_base64", "label": ".upload_base64()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L185"}, {"id": "core_storage_qiniustorage_delete_file", "label": ".delete_file()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L193"}, {"id": "core_storage_qiniustorage_get_url", "label": ".get_url()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/storage.py", "source_location": "L204"}, {"id": "core_storage_ossstorage", "label": "OSSStorage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_init_py", "label": "__init__.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/__init__.py", "source_location": "L1"}], "edges": [], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_attachment_py", "label": "attachment.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "source_location": "L1"}, {"id": "schemas_attachment_attachmentuploadresponse", "label": "AttachmentUploadResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "source_location": "L5"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_attachment_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_attachment_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_attachment_py", "target": "schemas_attachment_attachmentuploadresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "source_location": "L5", "weight": 1.0}, {"source": "schemas_attachment_attachmentuploadresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/attachment.py", "source_location": "L5", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "label": "request_payload.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L1"}, {"id": "core_request_payload_resolve_request_payload", "label": "resolve_request_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L12"}, {"id": "core_request_payload_rationale_1", "label": "\u7edf\u4e00\u89e3\u6790\u63a5\u53e3\u8bf7\u6c42\u8f7d\u8377\uff08\u660e\u6587 / \u5bc6\u6587\u4fe1\u5c01\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L1"}, {"id": "core_request_payload_rationale_18", "label": "\u517c\u5bb9\u660e\u6587\u4e0e\u5bc6\u6587\u4fe1\u5c01\uff0c\u8fd4\u56de\u4e1a\u52a1\u5c42 payload\uff08\u591a\u4e3a dict\uff1b\u6279\u91cf\u6570\u7ec4\u63a5\u53e3\u89e3\u5bc6\u540e\u4e3a list\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L18"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "target": "logging", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "target": "app_core", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "target": "app_core_config", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "target": "core_request_payload_resolve_request_payload", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L12", "weight": 1.0}, {"source": "core_request_payload_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_request_payload_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L1", "weight": 1.0}, {"source": "core_request_payload_rationale_18", "target": "core_request_payload_resolve_request_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L18", "weight": 1.0}], "raw_calls": [{"caller_nid": "core_request_payload_resolve_request_payload", "callee": "getLogger", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L19"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L20"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "int", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L21"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L21"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "isinstance", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L21"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L21"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "warning", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L22"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "str", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/request_payload.py", "source_location": "L27"}, {"caller_nid": "core_request_payload_resolve_request_payload", "callee": "get", "source_file": "/Users/wuzilong/work/00code/zkxw/bacLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", "label": "qc_material.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L1"}, {"id": "models_qc_material_bizqcmaterial", "label": "BizQcMaterial", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L8"}, {"id": "base", "label": "Base", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_qc_material_bizqcmaterialusage", "label": "BizQcMaterialUsage", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L30"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L1", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", "target": "sqlalchemy", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", "target": "models_qc_material_bizqcmaterial", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L8", "weight": 1.0}, {"source": "models_qc_material_bizqcmaterial", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_models_qc_material_py", "target": "models_qc_material_bizqcmaterialusage", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L30", "weight": 1.0}, {"source": "models_qc_material_bizqcmaterialusage", "target": "base", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/models/qc_material.py", "source_location": "L30", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "label": "region.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L1"}, {"id": "schemas_region_regionbase", "label": "RegionBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_region_regioncreate", "label": "RegionCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L25"}, {"id": "schemas_region_regionupdate", "label": "RegionUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L30"}, {"id": "schemas_region_regionresponse", "label": "RegionResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L49"}, {"id": "schemas_region_regionlistresponse", "label": "RegionListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L61"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "schemas_region_regionbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_region_regionbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "schemas_region_regioncreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L25", "weight": 1.0}, {"source": "schemas_region_regioncreate", "target": "schemas_region_regionbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "schemas_region_regionupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L30", "weight": 1.0}, {"source": "schemas_region_regionupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L30", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "schemas_region_regionresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L49", "weight": 1.0}, {"source": "schemas_region_regionresponse", "target": "schemas_region_regionbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L49", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_region_py", "target": "schemas_region_regionlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L61", "weight": 1.0}, {"source": "schemas_region_regionlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/region.py", "source_location": "L61", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "label": "user.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L1"}, {"id": "crud_user_hash_password", "label": "_hash_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L18"}, {"id": "crud_user_usercrudcompat", "label": "_UserCRUDCompat", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L22"}, {"id": "crud_user_usercrudcompat_get_by_user_no", "label": ".get_by_user_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L23"}, {"id": "crud_user_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L38"}, {"id": "crud_user_list_users", "label": "list_users()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L58"}, {"id": "crud_user_get_user", "label": "get_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L109"}, {"id": "crud_user_list_post_ids_for_user", "label": "list_post_ids_for_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L117"}, {"id": "crud_user_set_user_post_ids_only", "label": "set_user_post_ids_only()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L127"}, {"id": "crud_user_list_user_ids_bound_to_post", "label": "list_user_ids_bound_to_post()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L159"}, {"id": "crud_user_sync_post_user_bindings", "label": "sync_post_user_bindings()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L174"}, {"id": "crud_user_get_user_with_relations", "label": "get_user_with_relations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L202"}, {"id": "crud_user_user_no_exists", "label": "user_no_exists()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L227"}, {"id": "crud_user_replace_associations", "label": "_replace_associations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L236"}, {"id": "crud_user_create_user", "label": "create_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L287"}, {"id": "crud_user_update_user", "label": "update_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L346"}, {"id": "crud_user_soft_delete_user", "label": "soft_delete_user()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L401"}, {"id": "crud_user_reset_password", "label": "reset_password()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L411"}, {"id": "crud_user_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L421"}, {"id": "crud_user_rationale_1", "label": "\u7528\u6237 CRUD\uff08sys_user + sys_user_role + sys_user_post\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L1"}, {"id": "crud_user_rationale_134", "label": "\u4ec5\u66ff\u6362 sys_user_post\uff0c\u4e0d\u5f71\u54cd sys_user_role\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L134"}, {"id": "crud_user_rationale_181", "label": "\u5c06\u672c\u804c\u4f4d\u7ed1\u5b9a\u7684\u7528\u6237\u96c6\u5408\u8bbe\u4e3a user_ids\uff08\u53ea\u589e\u5220\u672c\u804c\u4f4d\uff0c\u4fdd\u7559\u7528\u6237\u5176\u5b83\u804c\u4f4d\u4e0e\u89d2\u8272\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L181"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "math", "relation": "imports", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/user.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_user_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED",Line truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "label": "unit.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L1"}, {"id": "schemas_unit_unitbase", "label": "UnitBase", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L6"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_unit_unitcreate", "label": "UnitCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L14"}, {"id": "schemas_unit_unitupdate", "label": "UnitUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L19"}, {"id": "schemas_unit_unitresponse", "label": "UnitResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L27"}, {"id": "schemas_unit_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L36"}, {"id": "schemas_unit_unitlistresponse", "label": "UnitListResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L40"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "schemas_unit_unitbase", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L6", "weight": 1.0}, {"source": "schemas_unit_unitbase", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "schemas_unit_unitcreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L14", "weight": 1.0}, {"source": "schemas_unit_unitcreate", "target": "schemas_unit_unitbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L14", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "schemas_unit_unitupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L19", "weight": 1.0}, {"source": "schemas_unit_unitupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "schemas_unit_unitresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L27", "weight": 1.0}, {"source": "schemas_unit_unitresponse", "target": "schemas_unit_unitbase", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "schemas_unit_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L36", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_unit_py", "target": "schemas_unit_unitlistresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L40", "weight": 1.0}, {"source": "schemas_unit_unitlistresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/unit.py", "source_location": "L40", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "label": "menu_guard.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1"}, {"id": "core_menu_guard_require_admin_or_super_admin", "label": "require_admin_or_super_admin()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L15"}, {"id": "core_menu_guard_get_user_menu_codes", "label": "get_user_menu_codes()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L23"}, {"id": "core_menu_guard_require_menu_code", "label": "require_menu_code()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L28"}, {"id": "core_menu_guard_rationale_1", "label": "\u83dc\u5355 code \u6743\u9650\u5b88\u536b\uff08V0.3\uff1a\u901a\u8fc7 sys_user_role \u2192 sys_role_menu \u2192 sys_menu.perms\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L1"}, {"id": "core_menu_guard_rationale_16", "label": "\u8fd0\u8425\u7aef\u89d2\u8272\u5b88\u536b\uff1aadmin / super_admin \u53ef\u8bbf\u95ee\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L16"}, {"id": "core_menu_guard_rationale_24", "label": "\u8bfb\u53d6\u7528\u6237\u6388\u6743\u7684\u83dc\u5355\u6743\u9650\u6807\u8bc6\u96c6\u5408\uff08\u4e0e\u524d\u7aef meta.menuCode / perms \u5bf9\u9f50\uff09\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L24"}, {"id": "core_menu_guard_rationale_29", "label": "\u63a5\u53e3\u83dc\u5355\u6743\u9650\u5b88\u536b\u3002super_admin \u76f4\u63a5\u653e\u884c\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L29"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "sqlalchemy_orm", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_core_auth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_core_database", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "app_services_web_auth_roles", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_admin_or_super_admin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_get_user_menu_codes", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L23", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "target": "core_menu_guard_require_menu_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_location": "L28", "weight": 1.0}, {"source": "core_menu_guard_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_core_menu_guard_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/core/menu_guard.py", "source_locatLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_process_route_py", "label": "process_route.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L1"}, {"id": "schemas_process_route_processroutecreatebody", "label": "ProcessRouteCreateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_process_route_processrouteupdatebody", "label": "ProcessRouteUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L16"}, {"id": "schemas_process_route_setcurrentbody", "label": "SetCurrentBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L25"}, {"id": "schemas_process_route_stepaddbody", "label": "StepAddBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L31"}, {"id": "schemas_process_route_stepcopybody", "label": "StepCopyBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L38"}, {"id": "schemas_process_route_stepupdatebody", "label": "StepUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L43"}, {"id": "schemas_process_route_stepreorderbody", "label": "StepReorderBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L55"}, {"id": "schemas_process_route_stepreagentitem", "label": "StepReagentItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L62"}, {"id": "schemas_process_route_stepconsumableitem", "label": "StepConsumableItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L73"}, {"id": "schemas_process_route_stepoutputitem", "label": "StepOutputItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L84"}, {"id": "schemas_process_route_stepdatacollectionitem", "label": "StepDataCollectionItem", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L92"}, {"id": "schemas_process_route_stepreagentupdatebody", "label": "StepReagentUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L101"}, {"id": "schemas_process_route_stepconsumableupdatebody", "label": "StepConsumableUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L107"}, {"id": "schemas_process_route_stepoutputupdatebody", "label": "StepOutputUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L113"}, {"id": "schemas_process_route_stepdatacollectionupdatebody", "label": "StepDataCollectionUpdateBody", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L119"}, {"id": "schemas_process_route_rationale_1", "label": "\u5de5\u827a\u8def\u7ebf\u7ba1\u7406 Pydantic Schemas", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_process_route_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_process_route_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L3", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_process_route_py", "target": "schemas_process_route_processroutecreatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/process_route.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_process_route_processroutecreatebody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/prLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "label": "menu.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L1"}, {"id": "api_menu_get_menu_list", "label": "get_menu_list()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L272"}, {"id": "api_menu_rationale_1", "label": "\u8fd0\u8425\u7aef\u83dc\u5355\u63a5\u53e3\uff08\u4e0e web-admin \u524d\u7aef\u9759\u6001\u8def\u7531 sqxp.ts \u5bf9\u9f50\uff0c\u4f9b\u540e\u7aef\u83dc\u5355\u6a21\u5f0f\u8054\u8c03\uff09", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "fastapi", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "app_core_menu_guard", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "app_core_response", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "target": "api_menu_get_menu_list", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L272", "weight": 1.0}, {"source": "api_menu_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_api_menu_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "api_menu_get_menu_list", "callee": "success_response", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/api/menu.py", "source_location": "L274"}]}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_research_donation_py", "label": "research_donation.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L1"}, {"id": "crud_research_donation_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L51"}, {"id": "crud_research_donation_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L57"}, {"id": "crud_research_donation_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L61"}, {"id": "crud_research_donation_optional_decimal", "label": "_optional_decimal()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L69"}, {"id": "crud_research_donation_normalize_fields", "label": "_normalize_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L81"}, {"id": "crud_research_donation_merge_comma_separated_urls", "label": "_merge_comma_separated_urls()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L92"}, {"id": "crud_research_donation_resolve_donation_payload", "label": "_resolve_donation_payload()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L108"}, {"id": "crud_research_donation_user_nick_name_map", "label": "_user_nick_name_map()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L126"}, {"id": "crud_research_donation_donation_to_dict", "label": "_donation_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L139"}, {"id": "crud_research_donation_audit_to_dict", "label": "_audit_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L173"}, {"id": "crud_research_donation_party_to_dict", "label": "_party_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L195"}, {"id": "crud_research_donation_collection_to_dict", "label": "_collection_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L227"}, {"id": "crud_research_donation_sample_to_dict", "label": "_sample_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L245"}, {"id": "crud_research_donation_transport_to_dict", "label": "_transport_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L268"}, {"id": "crud_research_donation_get_party", "label": "get_party()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L293"}, {"id": "crud_research_donation_get_collection", "label": "get_collection()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L309"}, {"id": "crud_research_donation_list_samples", "label": "list_samples()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L325"}, {"id": "crud_research_donation_list_sample_transports", "label": "list_sample_transports()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L345"}, {"id": "crud_research_donation_list_donations", "label": "list_donations()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L370"}, {"id": "crud_research_donation_get_donation_detail", "label": "get_donation_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L534"}, {"id": "crud_research_donation_create_donation", "label": "create_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/research_donation.py", "source_location": "L628"}, {"id": "crud_research_donation_update_donation", "label": "update_donation()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/researcLine truncated
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "label": "leave.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L1"}, {"id": "schemas_leave_leavecreate", "label": "LeaveCreate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "schemas_leave_leaveupdate", "label": "LeaveUpdate", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L16"}, {"id": "schemas_leave_leaveresponse", "label": "LeaveResponse", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L25"}, {"id": "schemas_leave_config", "label": "Config", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L39"}, {"id": "schemas_leave_rationale_1", "label": "Pydantic schemas - \u8bf7\u5047\u7533\u8bf7", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "target": "schemas_leave_leavecreate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L7", "weight": 1.0}, {"source": "schemas_leave_leavecreate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "target": "schemas_leave_leaveupdate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L16", "weight": 1.0}, {"source": "schemas_leave_leaveupdate", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "target": "schemas_leave_leaveresponse", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L25", "weight": 1.0}, {"source": "schemas_leave_leaveresponse", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "target": "schemas_leave_config", "relation": "contains", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L39", "weight": 1.0}, {"source": "schemas_leave_rationale_1", "target": "users_wuzilong_work_00code_zkxw_backend_app_schemas_leave_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/schemas/leave.py", "source_location": "L1", "weight": 1.0}], "raw_calls": []}
@@ -0,0 +1 @@
{"nodes": [{"id": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "label": "qc_task.py", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L1"}, {"id": "crud_qc_task_dec", "label": "_dec()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L30"}, {"id": "crud_qc_task_fmt_dt", "label": "_fmt_dt()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L36"}, {"id": "crud_qc_task_gen_task_no", "label": "_gen_task_no()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L40"}, {"id": "crud_qc_task_conclusion_label", "label": "_conclusion_label()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L47"}, {"id": "crud_qc_task_task_to_dict", "label": "_task_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L52"}, {"id": "crud_qc_task_task_work_order_context", "label": "_task_work_order_context()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L84"}, {"id": "crud_qc_task_enrich_tasks_reception_fields", "label": "_enrich_tasks_reception_fields()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L102"}, {"id": "crud_qc_task_task_row_to_dict", "label": "_task_row_to_dict()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L169"}, {"id": "crud_qc_task_create_task_for_line", "label": "create_task_for_line()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L180"}, {"id": "crud_qc_task_list_tasks", "label": "list_tasks()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L223"}, {"id": "crud_qc_task_list_tasks_by_work_order", "label": "list_tasks_by_work_order()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L292"}, {"id": "crud_qc_task_get_task", "label": "get_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L309"}, {"id": "crud_qc_task_get_task_detail", "label": "get_task_detail()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L318"}, {"id": "crud_qc_task_start_task", "label": "start_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L341"}, {"id": "crud_qc_task_set_task_remark", "label": "_set_task_remark()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L358"}, {"id": "crud_qc_task_complete_task", "label": "complete_task()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L362"}, {"id": "crud_qc_task_apply_task_result", "label": "apply_task_result()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L402"}, {"id": "crud_qc_task_update_task_attachments", "label": "update_task_attachments()", "file_type": "code", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L437"}, {"id": "crud_qc_task_rationale_411", "label": "\u4fdd\u5b58\u68c0\u6d4b\u7ed3\u679c\u4e0e\u7ed3\u8bba\uff1b\u4efb\u52a1\u672a\u5b8c\u6210\u65f6\u987a\u5e26\u6807\u8bb0\u4e3a\u5df2\u5b8c\u6210\u3002", "file_type": "rationale", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L411"}], "edges": [{"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "target": "datetime", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "target": "decimal", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_task_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "/Users/wuzilong/work/00code/zkxw/backend/app/crud/qc_task.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_zkxw_backend_app_crud_qc_Line truncated
Loaded 100 of 578 files, more files were not shown because too many files have changed in this diff. Show more