提交
This commit is contained in:
1 parent
8dbb816d01
commit
b74d483682
156 files changed
+258503
-10836
No files matched your search
@@ -228,7 +228,7 @@ pnpm clean:dev # strip demo data for fresh start
|
||||
- **No backdrop blur on modals**: `backdrop-filter: none`.
|
||||
- **Dialog forms**: `label-position="top"`.
|
||||
- **Table action column**: `fixed="right"`, min-width ≥ 260px.
|
||||
- **Table column widths**: All `el-table-column` SHALL use `min-width` (not `width`) for proportional scaling when viewport resizes.
|
||||
- **Table column widths**: Business data / action columns SHALL use `min-width` (not `width`) for proportional scaling. Exception: `type="selection"` and `type="index"` SHALL use fixed `width` (约 48–55 / 60–68) so they stay compact on wide screens.
|
||||
- **Toolbar**: "已选 N 项" first, then primary action button (only one `type="primary"` per toolbar row), no `space-between` push.
|
||||
- **Database changes**: always pair with schema SQL in `docs/sql/` and evaluate API/TypeScript type impact.
|
||||
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
41167
|
||||
65236
|
||||
@@ -14,6 +14,7 @@ from app.core.db_auth import DbUserContext, get_db_current_user
|
||||
from app.core.delete_guard import assert_row_deletable_by_creator, user_info_from_context
|
||||
from app.core.menu_guard import SUPER_ADMIN_ROLE, get_user_menu_codes
|
||||
from app.services.pl_data_scope import apply_pl_scope, assert_pl_row_in_scope
|
||||
from app.services.pl_plan_arrange_copy_flags import load_plan_arrange_copy_flags
|
||||
from app.core.tenant_context import get_tenant_no
|
||||
from app.utils.excel_export import (
|
||||
EXPORT_MAX_ROWS,
|
||||
@@ -425,6 +426,7 @@ def list_plans(
|
||||
plan_product_ids=[p.id for p in all_products],
|
||||
)
|
||||
contracts_by_plan = load_plan_contracts_grouped(db, tenant_no, plan_ids)
|
||||
arrange_copy_flags = load_plan_arrange_copy_flags(db, tenant_no, plans)
|
||||
|
||||
result_list: list[PlanWithProducts] = []
|
||||
for plan in plans:
|
||||
@@ -462,6 +464,11 @@ def list_plans(
|
||||
supplier_contracts, demander_contracts = contracts_by_plan.get(plan.id, ([], []))
|
||||
plan_item.supplier_contracts = supplier_contracts
|
||||
plan_item.demander_contracts = demander_contracts
|
||||
flags = arrange_copy_flags.get(plan.id)
|
||||
if flags:
|
||||
plan_item.can_copy_to_driver = flags.can_copy_to_driver
|
||||
plan_item.can_copy_to_site = flags.can_copy_to_site
|
||||
plan_item.can_copy_pound_qrcode = flags.can_copy_pound_qrcode
|
||||
if not (plan_item.personnel_summary or "").strip():
|
||||
snapshot = plan_item.resource_snapshot
|
||||
if snapshot and snapshot.personnel_summary:
|
||||
|
||||
@@ -277,6 +277,21 @@ class PlanRead(PlanBase, PlanResourceSnapshotMixin):
|
||||
|
||||
class PlanWithProducts(PlanRead):
|
||||
products: list[PlanProductRead] = []
|
||||
can_copy_to_driver: bool = Field(
|
||||
default=False,
|
||||
alias="canCopyToDriver",
|
||||
description="列表/查看:是否可「复制给司机」(已安排且有司机链接或现场/地磅关联)",
|
||||
)
|
||||
can_copy_to_site: bool = Field(
|
||||
default=False,
|
||||
alias="canCopyToSite",
|
||||
description="是否可「复制给现场」",
|
||||
)
|
||||
can_copy_pound_qrcode: bool = Field(
|
||||
default=False,
|
||||
alias="canCopyPoundQrcode",
|
||||
description="是否可「复制磅单二维码」",
|
||||
)
|
||||
|
||||
|
||||
class PlanInboundSlipTemplateSave(BaseModel):
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
"""运输计划列表:批量计算「复制给司机 / 现场 / 磅单二维码」按钮显示标志。
|
||||
|
||||
语义与查看弹窗 / usePlPlanArrangeActions 对齐:
|
||||
- 已安排且未取消,且存在司机链接或现场记录或地磅出入库关联时,显示「复制给司机」
|
||||
- 有现场链接记录(含出入库单现场令牌回退)时显示「复制给现场」
|
||||
- 有勾选生成地磅单的出入库关联(db_purchase_plan_id 非空)时显示「复制磅单二维码」
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from typing import Iterable
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.models.pl_models import (
|
||||
PlInboundOrder,
|
||||
PlOutboundOrder,
|
||||
PlPlan,
|
||||
PlTransport,
|
||||
PlTransportDbLink,
|
||||
PlTransportSiteLink,
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class PlanArrangeCopyFlags:
|
||||
can_copy_to_driver: bool = False
|
||||
can_copy_to_site: bool = False
|
||||
can_copy_pound_qrcode: bool = False
|
||||
|
||||
|
||||
def load_plan_arrange_copy_flags(
|
||||
db: Session,
|
||||
tenant_no: str,
|
||||
plans: Iterable[PlPlan],
|
||||
) -> dict[str, PlanArrangeCopyFlags]:
|
||||
plan_list = list(plans)
|
||||
empty = PlanArrangeCopyFlags()
|
||||
result: dict[str, PlanArrangeCopyFlags] = {plan.id: empty for plan in plan_list}
|
||||
|
||||
candidates = [
|
||||
plan
|
||||
for plan in plan_list
|
||||
if plan.transport_status == "arranged"
|
||||
and plan.follow_status != "cancelled"
|
||||
and (plan.transport_id or "").strip()
|
||||
]
|
||||
if not candidates:
|
||||
return result
|
||||
|
||||
plan_ids = [plan.id for plan in candidates]
|
||||
transport_ids = list({plan.transport_id for plan in candidates if plan.transport_id})
|
||||
|
||||
transports = (
|
||||
db.query(PlTransport)
|
||||
.filter(
|
||||
PlTransport.id.in_(transport_ids),
|
||||
PlTransport.tenant_no == tenant_no,
|
||||
PlTransport.del_flag == 0,
|
||||
)
|
||||
.all()
|
||||
)
|
||||
transport_by_id = {
|
||||
row.id: row for row in transports if row.transport_status != "cancelled"
|
||||
}
|
||||
|
||||
site_plan_ids: set[str] = {
|
||||
plan_id
|
||||
for (plan_id,) in db.query(PlTransportSiteLink.plan_id)
|
||||
.filter(
|
||||
PlTransportSiteLink.tenant_no == tenant_no,
|
||||
PlTransportSiteLink.plan_id.in_(plan_ids),
|
||||
PlTransportSiteLink.del_flag == 0,
|
||||
)
|
||||
.distinct()
|
||||
.all()
|
||||
}
|
||||
|
||||
inventory_plan_ids: set[str] = set()
|
||||
dibang_plan_ids: set[str] = set()
|
||||
for plan_id, db_purchase_plan_id in (
|
||||
db.query(PlTransportDbLink.plan_id, PlTransportDbLink.db_purchase_plan_id)
|
||||
.filter(
|
||||
PlTransportDbLink.tenant_no == tenant_no,
|
||||
PlTransportDbLink.plan_id.in_(plan_ids),
|
||||
PlTransportDbLink.del_flag == 0,
|
||||
)
|
||||
.all()
|
||||
):
|
||||
inventory_plan_ids.add(plan_id)
|
||||
if (db_purchase_plan_id or "").strip():
|
||||
dibang_plan_ids.add(plan_id)
|
||||
|
||||
# 与 get_plan_arrange_info 一致:无 site_link 时,用未作废出入库单的现场令牌回退
|
||||
inbound_ids = [
|
||||
plan.id
|
||||
for plan in candidates
|
||||
if plan.plan_type == "inbound" and plan.id not in site_plan_ids
|
||||
]
|
||||
if inbound_ids:
|
||||
for plan_id, site_access_token, status in (
|
||||
db.query(PlInboundOrder.plan_id, PlInboundOrder.site_access_token, PlInboundOrder.status)
|
||||
.filter(
|
||||
PlInboundOrder.tenant_no == tenant_no,
|
||||
PlInboundOrder.plan_id.in_(inbound_ids),
|
||||
PlInboundOrder.del_flag == 0,
|
||||
)
|
||||
.all()
|
||||
):
|
||||
if status != "voided" and (site_access_token or "").strip():
|
||||
site_plan_ids.add(plan_id)
|
||||
|
||||
outbound_ids = [
|
||||
plan.id
|
||||
for plan in candidates
|
||||
if plan.plan_type == "outbound" and plan.id not in site_plan_ids
|
||||
]
|
||||
if outbound_ids:
|
||||
for plan_id, site_access_token, status in (
|
||||
db.query(
|
||||
PlOutboundOrder.plan_id, PlOutboundOrder.site_access_token, PlOutboundOrder.status
|
||||
)
|
||||
.filter(
|
||||
PlOutboundOrder.tenant_no == tenant_no,
|
||||
PlOutboundOrder.plan_id.in_(outbound_ids),
|
||||
PlOutboundOrder.del_flag == 0,
|
||||
)
|
||||
.all()
|
||||
):
|
||||
if status != "voided" and (site_access_token or "").strip():
|
||||
site_plan_ids.add(plan_id)
|
||||
|
||||
for plan in candidates:
|
||||
transport = transport_by_id.get(plan.transport_id or "")
|
||||
if not transport:
|
||||
continue
|
||||
has_driver = bool((transport.driver_access_token or "").strip())
|
||||
has_site = plan.id in site_plan_ids
|
||||
has_inventory = plan.id in inventory_plan_ids
|
||||
has_dibang = plan.id in dibang_plan_ids
|
||||
if not (has_driver or has_site or has_inventory):
|
||||
continue
|
||||
result[plan.id] = PlanArrangeCopyFlags(
|
||||
can_copy_to_driver=True,
|
||||
can_copy_to_site=has_site,
|
||||
can_copy_pound_qrcode=has_dibang,
|
||||
)
|
||||
|
||||
return result
|
||||
@@ -140,7 +140,12 @@
|
||||
"138": "Community 138",
|
||||
"139": "get_current_user_by_token",
|
||||
"140": "UserRole",
|
||||
"141": "crm_export_columns.py",
|
||||
"142": "parse_resource_snapshot",
|
||||
"143": "web_login_rsa_public_key",
|
||||
"144": "get_client_ip",
|
||||
"145": "resolve_crm_product",
|
||||
"146": "context.py",
|
||||
"147": "Community 147",
|
||||
"151": "Community 151",
|
||||
"154": "response.py",
|
||||
|
||||
@@ -1 +1 @@
|
||||
/Users/wuzilong/work/00code/shanxia2.0/backend
|
||||
.
|
||||
@@ -0,0 +1,182 @@
|
||||
{
|
||||
"0": "Community 0",
|
||||
"1": "Community 1",
|
||||
"2": "Community 2",
|
||||
"3": "Community 3",
|
||||
"4": "Community 4",
|
||||
"5": "Community 5",
|
||||
"6": "Community 6",
|
||||
"7": "Community 7",
|
||||
"8": "Community 8",
|
||||
"9": "Community 9",
|
||||
"10": "Community 10",
|
||||
"11": "Community 11",
|
||||
"12": "Community 12",
|
||||
"13": "Community 13",
|
||||
"14": "Community 14",
|
||||
"15": "Community 15",
|
||||
"16": "Community 16",
|
||||
"17": "Community 17",
|
||||
"18": "Community 18",
|
||||
"19": "Community 19",
|
||||
"20": "Community 20",
|
||||
"21": "Community 21",
|
||||
"22": "Community 22",
|
||||
"23": "Community 23",
|
||||
"24": "Community 24",
|
||||
"25": "Community 25",
|
||||
"26": "Community 26",
|
||||
"27": "Community 27",
|
||||
"28": "Community 28",
|
||||
"29": "Community 29",
|
||||
"30": "Community 30",
|
||||
"31": "Community 31",
|
||||
"32": "Community 32",
|
||||
"33": "Community 33",
|
||||
"34": "Community 34",
|
||||
"35": "Community 35",
|
||||
"36": "Community 36",
|
||||
"37": "Community 37",
|
||||
"38": "Community 38",
|
||||
"39": "Community 39",
|
||||
"40": "Community 40",
|
||||
"41": "Community 41",
|
||||
"42": "Community 42",
|
||||
"43": "Community 43",
|
||||
"44": "Community 44",
|
||||
"45": "Community 45",
|
||||
"46": "Community 46",
|
||||
"47": "Community 47",
|
||||
"48": "Community 48",
|
||||
"49": "Community 49",
|
||||
"50": "Community 50",
|
||||
"51": "Community 51",
|
||||
"52": "Community 52",
|
||||
"53": "Community 53",
|
||||
"54": "Community 54",
|
||||
"55": "Community 55",
|
||||
"56": "Community 56",
|
||||
"57": "Community 57",
|
||||
"58": "Community 58",
|
||||
"59": "Community 59",
|
||||
"60": "Community 60",
|
||||
"61": "Community 61",
|
||||
"62": "Community 62",
|
||||
"63": "Community 63",
|
||||
"64": "Community 64",
|
||||
"65": "Community 65",
|
||||
"66": "Community 66",
|
||||
"67": "Community 67",
|
||||
"68": "Community 68",
|
||||
"69": "Community 69",
|
||||
"70": "Community 70",
|
||||
"71": "Community 71",
|
||||
"72": "Community 72",
|
||||
"73": "Community 73",
|
||||
"74": "Community 74",
|
||||
"75": "apply_crm_create_by_scope",
|
||||
"76": "opportunity_follow.py",
|
||||
"77": "Community 77",
|
||||
"78": "Community 78",
|
||||
"79": "PlCarrier",
|
||||
"80": "resolve_crm_product",
|
||||
"81": "customer_follow.py",
|
||||
"82": "storage.py",
|
||||
"83": "Community 83",
|
||||
"84": "Community 84",
|
||||
"85": "allocate_next_biz_no",
|
||||
"86": "Community 86",
|
||||
"87": "Community 87",
|
||||
"88": "CrmProduct",
|
||||
"89": "pl_ocr_service.py",
|
||||
"90": "WechatMessageService",
|
||||
"91": "opportunity_product.py",
|
||||
"92": "Community 92",
|
||||
"93": "api_request_log_middleware.py",
|
||||
"94": "assert_contract_editable_for_update",
|
||||
"95": "test_pl_public_link_archived.py",
|
||||
"96": "minio_url.py",
|
||||
"97": "contact.py",
|
||||
"98": "LocalStorage",
|
||||
"99": "redis_client.py",
|
||||
"100": "price_letter_detail",
|
||||
"101": "tenant.py",
|
||||
"102": "crm_supplier_hazard.py",
|
||||
"103": "pl_internal_customer.py",
|
||||
"104": "apply_crm_create_by_scope",
|
||||
"105": "pool_customer_assign",
|
||||
"106": "site.py",
|
||||
"107": "apply_pl_scope",
|
||||
"108": "statistics.py",
|
||||
"109": "monitor.py",
|
||||
"110": "list_duty_staff_users",
|
||||
"111": "dict_data.py",
|
||||
"112": ".to_tenant_user_dict",
|
||||
"113": "dict_type.py",
|
||||
"114": "db_models.py",
|
||||
"115": "site.py",
|
||||
"116": "Community 116",
|
||||
"117": "price_letter_detail",
|
||||
"118": "Community 118",
|
||||
"119": "Community 119",
|
||||
"120": "sqlalchemy_exception_handler",
|
||||
"121": "post.py",
|
||||
"122": "site.py",
|
||||
"123": "customer_options",
|
||||
"124": "datetime_parse.py",
|
||||
"125": "resolve_crm_product",
|
||||
"126": "customer_pool.py",
|
||||
"127": "allocate_next_biz_no",
|
||||
"128": "product_allowed",
|
||||
"129": "BaseStorage",
|
||||
"130": "contact.py",
|
||||
"131": "customer_update",
|
||||
"132": "context.py",
|
||||
"133": "opportunity_export",
|
||||
"134": "response.py",
|
||||
"135": "unsettled_plans_q_filter",
|
||||
"136": "Community 136",
|
||||
"137": "customer_options",
|
||||
"138": "Community 138",
|
||||
"139": "get_current_user_by_token",
|
||||
"140": "UserRole",
|
||||
"145": "resolve_crm_product",
|
||||
"147": "Community 147",
|
||||
"151": "Community 151",
|
||||
"154": "response.py",
|
||||
"159": "customer_update",
|
||||
"162": ".to_tenant_user_dict",
|
||||
"164": "get_client_ip",
|
||||
"166": "code:block1 (/iflytek/shanxia2.0/backend)",
|
||||
"170": "test_quote_approver_setting.py",
|
||||
"173": "resolve_create_time_bounds",
|
||||
"179": "test_pl_vehicle_personnel_photo_schema.py",
|
||||
"206": "crm_quote_pdf.py",
|
||||
"207": "shanxia2.0 后端骨架(FastAPI)",
|
||||
"220": "api_crypto_middleware.py",
|
||||
"237": "order_status_compat.py",
|
||||
"239": "shanxia2.0 Backend 生产部署说明",
|
||||
"246": "db_collation.py",
|
||||
"254": "Activate.ps1",
|
||||
"263": "__init__.py",
|
||||
"264": "__init__.py",
|
||||
"304": "__init__.py",
|
||||
"305": "__init__.py",
|
||||
"306": "__init__.py",
|
||||
"307": "__init__.py",
|
||||
"308": "__init__.py",
|
||||
"309": "__init__.py",
|
||||
"310": "__init__.py",
|
||||
"311": "__init__.py",
|
||||
"312": "__init__.py",
|
||||
"495": "code:bash (cd /path/to/shanxia2.0)",
|
||||
"496": "code:bash (./start-prod.sh status # 查看状态)",
|
||||
"497": "code:bash (curl -s http://127.0.0.1:9111/health)",
|
||||
"498": "code:bash (cd /iflytek/shanxia2.0/backend)",
|
||||
"499": "code:bash (python -m venv venv)",
|
||||
"500": "code:bash (pip install -r requirements.txt)",
|
||||
"501": "code:env (# 数据库配置)",
|
||||
"502": "code:bash (uvicorn app.main:app --reload --port 8000)",
|
||||
"503": "BaseModel",
|
||||
"504": "PlanResourceSnapshotMixin"
|
||||
}
|
||||
@@ -0,0 +1,859 @@
|
||||
# Graph Report - backend (2026-08-21)
|
||||
|
||||
## Corpus Check
|
||||
- 340 files · ~233,591 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4793 nodes · 18045 edges · 180 communities (165 shown, 15 thin omitted)
|
||||
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 903 edges (avg confidence: 0.52)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `833544de`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
## Community Hubs (Navigation)
|
||||
- [[_COMMUNITY_Community 0|Community 0]]
|
||||
- [[_COMMUNITY_Community 1|Community 1]]
|
||||
- [[_COMMUNITY_Community 2|Community 2]]
|
||||
- [[_COMMUNITY_Community 3|Community 3]]
|
||||
- [[_COMMUNITY_Community 4|Community 4]]
|
||||
- [[_COMMUNITY_Community 5|Community 5]]
|
||||
- [[_COMMUNITY_Community 6|Community 6]]
|
||||
- [[_COMMUNITY_Community 7|Community 7]]
|
||||
- [[_COMMUNITY_Community 8|Community 8]]
|
||||
- [[_COMMUNITY_Community 9|Community 9]]
|
||||
- [[_COMMUNITY_Community 10|Community 10]]
|
||||
- [[_COMMUNITY_Community 11|Community 11]]
|
||||
- [[_COMMUNITY_Community 12|Community 12]]
|
||||
- [[_COMMUNITY_Community 13|Community 13]]
|
||||
- [[_COMMUNITY_Community 14|Community 14]]
|
||||
- [[_COMMUNITY_Community 15|Community 15]]
|
||||
- [[_COMMUNITY_Community 16|Community 16]]
|
||||
- [[_COMMUNITY_Community 17|Community 17]]
|
||||
- [[_COMMUNITY_Community 18|Community 18]]
|
||||
- [[_COMMUNITY_Community 19|Community 19]]
|
||||
- [[_COMMUNITY_Community 20|Community 20]]
|
||||
- [[_COMMUNITY_Community 21|Community 21]]
|
||||
- [[_COMMUNITY_Community 22|Community 22]]
|
||||
- [[_COMMUNITY_Community 23|Community 23]]
|
||||
- [[_COMMUNITY_Community 24|Community 24]]
|
||||
- [[_COMMUNITY_Community 25|Community 25]]
|
||||
- [[_COMMUNITY_Community 26|Community 26]]
|
||||
- [[_COMMUNITY_Community 27|Community 27]]
|
||||
- [[_COMMUNITY_Community 28|Community 28]]
|
||||
- [[_COMMUNITY_Community 29|Community 29]]
|
||||
- [[_COMMUNITY_Community 30|Community 30]]
|
||||
- [[_COMMUNITY_Community 31|Community 31]]
|
||||
- [[_COMMUNITY_Community 32|Community 32]]
|
||||
- [[_COMMUNITY_Community 33|Community 33]]
|
||||
- [[_COMMUNITY_Community 34|Community 34]]
|
||||
- [[_COMMUNITY_Community 35|Community 35]]
|
||||
- [[_COMMUNITY_Community 36|Community 36]]
|
||||
- [[_COMMUNITY_Community 37|Community 37]]
|
||||
- [[_COMMUNITY_Community 38|Community 38]]
|
||||
- [[_COMMUNITY_Community 39|Community 39]]
|
||||
- [[_COMMUNITY_Community 40|Community 40]]
|
||||
- [[_COMMUNITY_Community 41|Community 41]]
|
||||
- [[_COMMUNITY_Community 42|Community 42]]
|
||||
- [[_COMMUNITY_Community 43|Community 43]]
|
||||
- [[_COMMUNITY_Community 44|Community 44]]
|
||||
- [[_COMMUNITY_Community 45|Community 45]]
|
||||
- [[_COMMUNITY_Community 46|Community 46]]
|
||||
- [[_COMMUNITY_Community 47|Community 47]]
|
||||
- [[_COMMUNITY_Community 48|Community 48]]
|
||||
- [[_COMMUNITY_Community 49|Community 49]]
|
||||
- [[_COMMUNITY_Community 50|Community 50]]
|
||||
- [[_COMMUNITY_Community 51|Community 51]]
|
||||
- [[_COMMUNITY_Community 52|Community 52]]
|
||||
- [[_COMMUNITY_Community 53|Community 53]]
|
||||
- [[_COMMUNITY_Community 54|Community 54]]
|
||||
- [[_COMMUNITY_Community 55|Community 55]]
|
||||
- [[_COMMUNITY_Community 56|Community 56]]
|
||||
- [[_COMMUNITY_Community 57|Community 57]]
|
||||
- [[_COMMUNITY_Community 58|Community 58]]
|
||||
- [[_COMMUNITY_Community 59|Community 59]]
|
||||
- [[_COMMUNITY_Community 60|Community 60]]
|
||||
- [[_COMMUNITY_Community 61|Community 61]]
|
||||
- [[_COMMUNITY_Community 62|Community 62]]
|
||||
- [[_COMMUNITY_Community 63|Community 63]]
|
||||
- [[_COMMUNITY_Community 64|Community 64]]
|
||||
- [[_COMMUNITY_Community 65|Community 65]]
|
||||
- [[_COMMUNITY_Community 66|Community 66]]
|
||||
- [[_COMMUNITY_Community 67|Community 67]]
|
||||
- [[_COMMUNITY_Community 68|Community 68]]
|
||||
- [[_COMMUNITY_Community 69|Community 69]]
|
||||
- [[_COMMUNITY_Community 70|Community 70]]
|
||||
- [[_COMMUNITY_Community 71|Community 71]]
|
||||
- [[_COMMUNITY_Community 72|Community 72]]
|
||||
- [[_COMMUNITY_Community 73|Community 73]]
|
||||
- [[_COMMUNITY_Community 74|Community 74]]
|
||||
- [[_COMMUNITY_apply_crm_create_by_scope|apply_crm_create_by_scope]]
|
||||
- [[_COMMUNITY_opportunity_follow.py|opportunity_follow.py]]
|
||||
- [[_COMMUNITY_Community 77|Community 77]]
|
||||
- [[_COMMUNITY_Community 78|Community 78]]
|
||||
- [[_COMMUNITY_PlCarrier|PlCarrier]]
|
||||
- [[_COMMUNITY_resolve_crm_product|resolve_crm_product]]
|
||||
- [[_COMMUNITY_customer_follow.py|customer_follow.py]]
|
||||
- [[_COMMUNITY_storage.py|storage.py]]
|
||||
- [[_COMMUNITY_Community 83|Community 83]]
|
||||
- [[_COMMUNITY_Community 84|Community 84]]
|
||||
- [[_COMMUNITY_allocate_next_biz_no|allocate_next_biz_no]]
|
||||
- [[_COMMUNITY_Community 86|Community 86]]
|
||||
- [[_COMMUNITY_Community 87|Community 87]]
|
||||
- [[_COMMUNITY_CrmProduct|CrmProduct]]
|
||||
- [[_COMMUNITY_pl_ocr_service.py|pl_ocr_service.py]]
|
||||
- [[_COMMUNITY_WechatMessageService|WechatMessageService]]
|
||||
- [[_COMMUNITY_opportunity_product.py|opportunity_product.py]]
|
||||
- [[_COMMUNITY_Community 92|Community 92]]
|
||||
- [[_COMMUNITY_api_request_log_middleware.py|api_request_log_middleware.py]]
|
||||
- [[_COMMUNITY_assert_contract_editable_for_update|assert_contract_editable_for_update]]
|
||||
- [[_COMMUNITY_test_pl_public_link_archived.py|test_pl_public_link_archived.py]]
|
||||
- [[_COMMUNITY_minio_url.py|minio_url.py]]
|
||||
- [[_COMMUNITY_contact.py|contact.py]]
|
||||
- [[_COMMUNITY_LocalStorage|LocalStorage]]
|
||||
- [[_COMMUNITY_redis_client.py|redis_client.py]]
|
||||
- [[_COMMUNITY_price_letter_detail|price_letter_detail]]
|
||||
- [[_COMMUNITY_tenant.py|tenant.py]]
|
||||
- [[_COMMUNITY_crm_supplier_hazard.py|crm_supplier_hazard.py]]
|
||||
- [[_COMMUNITY_pl_internal_customer.py|pl_internal_customer.py]]
|
||||
- [[_COMMUNITY_apply_crm_create_by_scope|apply_crm_create_by_scope]]
|
||||
- [[_COMMUNITY_pool_customer_assign|pool_customer_assign]]
|
||||
- [[_COMMUNITY_site.py|site.py]]
|
||||
- [[_COMMUNITY_apply_pl_scope|apply_pl_scope]]
|
||||
- [[_COMMUNITY_statistics.py|statistics.py]]
|
||||
- [[_COMMUNITY_monitor.py|monitor.py]]
|
||||
- [[_COMMUNITY_list_duty_staff_users|list_duty_staff_users]]
|
||||
- [[_COMMUNITY_dict_data.py|dict_data.py]]
|
||||
- [[_COMMUNITY_.to_tenant_user_dict|.to_tenant_user_dict]]
|
||||
- [[_COMMUNITY_dict_type.py|dict_type.py]]
|
||||
- [[_COMMUNITY_db_models.py|db_models.py]]
|
||||
- [[_COMMUNITY_site.py|site.py]]
|
||||
- [[_COMMUNITY_Community 116|Community 116]]
|
||||
- [[_COMMUNITY_price_letter_detail|price_letter_detail]]
|
||||
- [[_COMMUNITY_Community 118|Community 118]]
|
||||
- [[_COMMUNITY_Community 119|Community 119]]
|
||||
- [[_COMMUNITY_sqlalchemy_exception_handler|sqlalchemy_exception_handler]]
|
||||
- [[_COMMUNITY_post.py|post.py]]
|
||||
- [[_COMMUNITY_site.py|site.py]]
|
||||
- [[_COMMUNITY_customer_options|customer_options]]
|
||||
- [[_COMMUNITY_datetime_parse.py|datetime_parse.py]]
|
||||
- [[_COMMUNITY_resolve_crm_product|resolve_crm_product]]
|
||||
- [[_COMMUNITY_customer_pool.py|customer_pool.py]]
|
||||
- [[_COMMUNITY_allocate_next_biz_no|allocate_next_biz_no]]
|
||||
- [[_COMMUNITY_product_allowed|product_allowed]]
|
||||
- [[_COMMUNITY_BaseStorage|BaseStorage]]
|
||||
- [[_COMMUNITY_contact.py|contact.py]]
|
||||
- [[_COMMUNITY_customer_update|customer_update]]
|
||||
- [[_COMMUNITY_context.py|context.py]]
|
||||
- [[_COMMUNITY_opportunity_export|opportunity_export]]
|
||||
- [[_COMMUNITY_response.py|response.py]]
|
||||
- [[_COMMUNITY_unsettled_plans_q_filter|unsettled_plans_q_filter]]
|
||||
- [[_COMMUNITY_Community 136|Community 136]]
|
||||
- [[_COMMUNITY_customer_options|customer_options]]
|
||||
- [[_COMMUNITY_Community 138|Community 138]]
|
||||
- [[_COMMUNITY_get_current_user_by_token|get_current_user_by_token]]
|
||||
- [[_COMMUNITY_UserRole|UserRole]]
|
||||
- [[_COMMUNITY_resolve_crm_product|resolve_crm_product]]
|
||||
- [[_COMMUNITY_Community 147|Community 147]]
|
||||
- [[_COMMUNITY_Community 151|Community 151]]
|
||||
- [[_COMMUNITY_response.py|response.py]]
|
||||
- [[_COMMUNITY_customer_update|customer_update]]
|
||||
- [[_COMMUNITY_.to_tenant_user_dict|.to_tenant_user_dict]]
|
||||
- [[_COMMUNITY_get_client_ip|get_client_ip]]
|
||||
- [[_COMMUNITY_codeblock1 (iflytekshanxia2.0backend)|code:block1 (/iflytek/shanxia2.0/backend)]]
|
||||
- [[_COMMUNITY_test_quote_approver_setting.py|test_quote_approver_setting.py]]
|
||||
- [[_COMMUNITY_resolve_create_time_bounds|resolve_create_time_bounds]]
|
||||
- [[_COMMUNITY_test_pl_vehicle_personnel_photo_schema.py|test_pl_vehicle_personnel_photo_schema.py]]
|
||||
- [[_COMMUNITY_crm_quote_pdf.py|crm_quote_pdf.py]]
|
||||
- [[_COMMUNITY_shanxia2.0 后端骨架(FastAPI)|shanxia2.0 后端骨架(FastAPI)]]
|
||||
- [[_COMMUNITY_api_crypto_middleware.py|api_crypto_middleware.py]]
|
||||
- [[_COMMUNITY_order_status_compat.py|order_status_compat.py]]
|
||||
- [[_COMMUNITY_shanxia2.0 Backend 生产部署说明|shanxia2.0 Backend 生产部署说明]]
|
||||
- [[_COMMUNITY_db_collation.py|db_collation.py]]
|
||||
- [[_COMMUNITY___init__.py|__init__.py]]
|
||||
- [[_COMMUNITY___init__.py|__init__.py]]
|
||||
- [[_COMMUNITY_codebash (cd pathtoshanxia2.0)|code:bash (cd /path/to/shanxia2.0)]]
|
||||
- [[_COMMUNITY_codebash (.start-prod.sh status 查看状态)|code:bash (./start-prod.sh status # 查看状态)]]
|
||||
- [[_COMMUNITY_codebash (curl -s http127.0.0.19111health)|code:bash (curl -s http://127.0.0.1:9111/health)]]
|
||||
- [[_COMMUNITY_codebash (cd iflytekshanxia2.0backend)|code:bash (cd /iflytek/shanxia2.0/backend)]]
|
||||
- [[_COMMUNITY_codebash (python -m venv venv)|code:bash (python -m venv venv)]]
|
||||
- [[_COMMUNITY_codebash (pip install -r requirements.txt)|code:bash (pip install -r requirements.txt)]]
|
||||
- [[_COMMUNITY_codeenv ( 数据库配置)|code:env (# 数据库配置)]]
|
||||
- [[_COMMUNITY_codebash (uvicorn app.mainapp --reload --port 8000)|code:bash (uvicorn app.main:app --reload --port 8000)]]
|
||||
- [[_COMMUNITY_BaseModel|BaseModel]]
|
||||
- [[_COMMUNITY_PlanResourceSnapshotMixin|PlanResourceSnapshotMixin]]
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `BaseModel` - 504 edges
|
||||
2. `get_tenant_no()` - 378 edges
|
||||
3. `DbUserContext` - 304 edges
|
||||
4. `success_response()` - 273 edges
|
||||
5. `error_response()` - 267 edges
|
||||
6. `BxUserContext` - 204 edges
|
||||
7. `generate_uuid()` - 198 edges
|
||||
8. `crm_user_info()` - 137 edges
|
||||
9. `ExportValidationError` - 108 edges
|
||||
10. `ExportColumn` - 106 edges
|
||||
|
||||
## Surprising Connections (you probably didn't know these)
|
||||
- `BackfillRule` --uses--> `Settings` [INFERRED]
|
||||
scripts/migrate_crm_sys_oss.py → app/core/config.py
|
||||
- `MigrationStats` --uses--> `Settings` [INFERRED]
|
||||
scripts/migrate_bx_data.py → app/core/config.py
|
||||
- `StepStats` --uses--> `Settings` [INFERRED]
|
||||
scripts/migrate_bx_data.py → app/core/config.py
|
||||
- `MigrationStats` --uses--> `Settings` [INFERRED]
|
||||
scripts/migrate_crm_clue.py → app/core/config.py
|
||||
- `StepStats` --uses--> `Settings` [INFERRED]
|
||||
scripts/migrate_crm_clue.py → app/core/config.py
|
||||
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (180 total, 15 thin omitted)
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): filter_current_cycle_approvals(), 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, 审批进度仅展示当前轮次;完整历史由 get_approval_history 返回。, T
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.07
|
||||
Nodes (39): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody (+31 more)
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.09
|
||||
Nodes (43): dump_export_row(), issue_status_label(), Any, Session, respond_xlsx(), status_label(), advance_issue_stats(), batch_offset() (+35 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.06
|
||||
Nodes (89): attachment_download_url(), attachment_preview_url(), create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite(), create_post() (+81 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.09
|
||||
Nodes (75): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+67 more)
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.05
|
||||
Nodes (128): archive_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan(), create_plan_full(), _determine_plan_type(), _ensure_subpack_slip_no() (+120 more)
|
||||
|
||||
### Community 6 - "Community 6"
|
||||
Cohesion: 0.13
|
||||
Nodes (39): assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer(), create_customer(), deal_customer(), _enrich_user_names(), _ensure_customer_in_scope() (+31 more)
|
||||
|
||||
### Community 7 - "Community 7"
|
||||
Cohesion: 0.06
|
||||
Nodes (94): clue_assign(), clue_convert(), clue_create(), clue_delete(), clue_detail(), clue_export(), clue_follow_create(), clue_follow_delete() (+86 more)
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 0.10
|
||||
Nodes (68): register_quote_routes(), accept_quote(), assert_quote_editable_for_update(), _build_quote_filters(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value() (+60 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.09
|
||||
Nodes (53): download_reimburse_import_template(), clue_import_template(), customer_import_template(), product_import_template(), build_annotated_result_bytes(), build_applicant_label(), build_expense_path_labels(), build_import_template_bytes() (+45 more)
|
||||
|
||||
### Community 10 - "Community 10"
|
||||
Cohesion: 0.07
|
||||
Nodes (41): export_depts(), export_menus(), export_posts(), export_role_management(), export_sites(), export_tenants(), export_users(), list_tenants() (+33 more)
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 0.15
|
||||
Nodes (40): PlVehicleUreaApply, PlVehicleUreaDisburse, 车辆尿素申请 pl_vehicle_urea_apply, 车辆尿素发放登记 pl_vehicle_urea_disburse, Decimal, VehicleUreaApplyCreate, VehicleUreaApplyRead, VehicleUreaApplyUpdate (+32 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
Cohesion: 0.04
|
||||
Nodes (79): InventoryExportBody, InventoryRelatedData, PlanRelatedData, RechargeApplyExportBody, RechargeDisburseExportBody, UreaApplyExportBody, UreaDisburseExportBody, BaseModel (+71 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.18
|
||||
Nodes (33): approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse(), delete_reimburse(), export_approved_by_me_reimburses(), export_my_reimburses(), export_pending_approval_reimburses() (+25 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.10
|
||||
Nodes (29): 报销模块认证适配:门户 JWT 用户 → bx 业务上下文。, BxAttachment, BxReimburseInvoice, BxReimburseOffset, BxWorkflowNode, 报销(bx)模块数据模型 — 对齐 docs/sql/20260606_bx_tables.sql, ReimburseDetailOut, AttachmentService (+21 more)
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.12
|
||||
Nodes (14): BxReimburseApply, BxReimburseApproval, BxReimburseDetail, 报销单勾选的发票附件(同一发票可勾选多个附件,各占一条)。, ReimburseInvoiceBriefOut, ReimburseInvoiceLinkIn, Any, Session (+6 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.09
|
||||
Nodes (62): cancel_apply(), create_apply(), create_record(), delete_applies(), delete_records(), export_recharge_applies(), export_recharge_disburse_board(), get_apply() (+54 more)
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.06
|
||||
Nodes (88): ApiCryptoError, _b64url_decode(), _b64url_encode(), decrypt_json(), encrypt_json(), Any, generate_id(), DutyAssignment (+80 more)
|
||||
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.09
|
||||
Nodes (42): _advance_list_filters(), advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _export_advance_rows() (+34 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.28
|
||||
Nodes (11): DbSequence, _allocate_inbound_outbound_id(), _ensure_sequence_row(), max_numeric_inbound_outbound_id(), next_inbound_outbound_id(), Session, 出入库单 id 生成 — 租户内纯数字自增,并发安全。, 当前租户下纯数字 id 的最大值(不含 UUID 等非数字主键)。 (+3 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.13
|
||||
Nodes (35): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), export_settlements(), export_unsettled_plans(), _generate_settlement_no() (+27 more)
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.08
|
||||
Nodes (60): _alias_row_to_dict(), _assert_brand_deletable(), barcode_exists(), _brand_row_to_dict(), _build_category_tree(), category_code_exists(), _category_row_to_dict(), _collect_category_with_ancestors() (+52 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.19
|
||||
Nodes (13): BusinessException, InvalidStatusTransitionException, log_delivery_operation(), log_operation(), log_order_operation(), log_settlement_operation(), log_user_operation(), OrderLockedException (+5 more)
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.38
|
||||
Nodes (6): 解析司机:显式选择优先,否则取车辆关联司机;均无则允许为空。, _resolve_driver(), 运输计划解析司机:车辆未关联司机时允许为空。, 未显式选司机、车辆也无关联司机时,应返回空三元组而非 400。, test_resolve_driver_with_explicit_id_returns_personnel(), test_resolve_driver_without_vehicle_link_returns_none()
|
||||
|
||||
### Community 24 - "Community 24"
|
||||
Cohesion: 0.19
|
||||
Nodes (16): DictEnsureError, ensure_dict_data(), ensure_remove_dict_data(), Session, 业务页字典 ensure:白名单内按 label 复用或插入 sys_dict_data。, label miss, but preferred value already exists → reuse, no insert, test_ensure_honors_explicit_preferred_value_on_insert(), test_ensure_inserts_new_with_value_equals_label() (+8 more)
|
||||
|
||||
### Community 25 - "Community 25"
|
||||
Cohesion: 0.26
|
||||
Nodes (12): list_share_logs(), _parse_user_agent(), Any, Session, CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, Java: statisticsVisits, 简易 User-Agent 解析(替代 Hutool UserAgentUtil), Java: queryLogsByQuoteId (+4 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
Cohesion: 0.11
|
||||
Nodes (43): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+35 more)
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
Cohesion: 0.11
|
||||
Nodes (32): CRM 报价单 API 路由 — 挂接到 crm.router, QuoteApproverSettingSaveBody, QuoteAcceptBody, QuoteApprovalApproveBody, QuoteApprovalListBody, QuoteApprovalRefreshNamesBody, QuoteApprovalWithdrawBody, QuoteCreateBody (+24 more)
|
||||
|
||||
### Community 28 - "Community 28"
|
||||
Cohesion: 0.11
|
||||
Nodes (56): PlFreightSettlement, PlFreightSettlementApproval, PlFreightSettlementTransport, PlRemittanceVoucher, 运费结算表 pl_freight_settlement, 运费结算审批 pl_freight_settlement_approval, 结算单-运输关联表 pl_freight_settlement_transport, 汇款凭证表 pl_remittance_voucher (+48 more)
|
||||
|
||||
### Community 29 - "Community 29"
|
||||
Cohesion: 0.18
|
||||
Nodes (18): align_contract_no_to_sign_date(), generate_contract_no(), date, Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} 流水与撞号检测须含软删:uk_contr, 标准编号替换日期段,保留序号;非标准返回 None。, 将标准合同编号日期段对齐签订日;撞号则序号顺延(含软删查重)。 非标准编号原样返回。无签订日则原样返回。, replace_contract_no_date(), _mock_last_contract() (+10 more)
|
||||
|
||||
### Community 30 - "Community 30"
|
||||
Cohesion: 0.16
|
||||
Nodes (26): clear_target_categories(), compute_level(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+18 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.10
|
||||
Nodes (43): apply_dibang_prefill_to_order(), apply_site_feedback(), build_io_order_site_url(), create_io_order_for_transport(), _dibang_qty_by_plan_product(), enrich_io_items_with_brand_feedback(), enrich_io_order_dict(), _format_io_product_summary_line() (+35 more)
|
||||
|
||||
### Community 32 - "Community 32"
|
||||
Cohesion: 0.10
|
||||
Nodes (32): 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password(), camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session (+24 more)
|
||||
|
||||
### Community 33 - "Community 33"
|
||||
Cohesion: 0.38
|
||||
Nodes (13): ensure_crm_customer_linked_row_in_scope(), 客户子表(开票信息等):先校验关联客户 owner scope,否则校验 create_by。, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer(), Any, Session (+5 more)
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.15
|
||||
Nodes (27): _apply_contract_entity_fields(), _build_contract_filters(), _calc_amount_with_tax(), contract_no_exists(), create_contract(), create_contract_template(), create_from_opportunity(), create_from_quote() (+19 more)
|
||||
|
||||
### Community 35 - "Community 35"
|
||||
Cohesion: 0.18
|
||||
Nodes (36): clear_portal_workflow(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_bx_user_mapping(), load_runtime_settings() (+28 more)
|
||||
|
||||
### Community 36 - "Community 36"
|
||||
Cohesion: 0.18
|
||||
Nodes (30): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), legacy_parent_id(), load_oss_id_to_url(), load_runtime_settings() (+22 more)
|
||||
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 0.08
|
||||
Nodes (34): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no(), get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单), menu_badge_stats() (+26 more)
|
||||
|
||||
### Community 38 - "Community 38"
|
||||
Cohesion: 0.11
|
||||
Nodes (18): parse_admin_request_json(), Any, Request, 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, Config, decrypt_login_payload(), ensure_initialized() (+10 more)
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
Cohesion: 0.14
|
||||
Nodes (42): assign_clues(), check_convert(), check_duplicate_clue(), convert_clue(), create_clue(), _enrich_user_names(), _ensure_clue_in_scope(), create_clue_follow() (+34 more)
|
||||
|
||||
### Community 40 - "Community 40"
|
||||
Cohesion: 0.16
|
||||
Nodes (32): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), _enrich_change_rows(), execute_change(), export_contract_changes(), export_contract_templates() (+24 more)
|
||||
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 0.22
|
||||
Nodes (27): export_inbound(), _export_orders(), export_outbound(), _get_by_plan(), get_inbound(), get_inbound_by_plan(), _get_order(), get_outbound() (+19 more)
|
||||
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 0.19
|
||||
Nodes (32): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+24 more)
|
||||
|
||||
### Community 43 - "Community 43"
|
||||
Cohesion: 0.09
|
||||
Nodes (36): BxExportBodyBase, create_invoice(), delete_invoice(), export_invoice_wallets(), get_mine_wallet_summary(), list_invoice_ledgers(), list_invoice_wallets(), list_invoices() (+28 more)
|
||||
|
||||
### Community 44 - "Community 44"
|
||||
Cohesion: 0.14
|
||||
Nodes (32): approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), export_completed_tasks(), export_my_instances() (+24 more)
|
||||
|
||||
### Community 45 - "Community 45"
|
||||
Cohesion: 0.24
|
||||
Nodes (54): AttachmentDownloadUrlBody, demo_xlsx_export(), DemoXlsxColumnSpec, DemoXlsxExportBody, DeptCreateBody, DeptExportBody, DeptUpdateBody, DictDataCreateBody (+46 more)
|
||||
|
||||
### Community 46 - "Community 46"
|
||||
Cohesion: 0.09
|
||||
Nodes (59): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), _build_contract_name_from_parties(), _build_customer_address(), _contract_period_key(), contract_row_to_dict(), download_contract_pdf() (+51 more)
|
||||
|
||||
### Community 47 - "Community 47"
|
||||
Cohesion: 0.12
|
||||
Nodes (29): pool_rule_add(), pool_rule_delete(), pool_rule_detail(), pool_rule_execute(), pool_rule_list(), pool_rule_update(), pool_rule_update_status(), create_pool_rule() (+21 more)
|
||||
|
||||
### Community 48 - "Community 48"
|
||||
Cohesion: 0.21
|
||||
Nodes (22): clear_target_products(), count_target_rows(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+14 more)
|
||||
|
||||
### Community 49 - "Community 49"
|
||||
Cohesion: 0.18
|
||||
Nodes (16): create_expense_item(), delete_expense_item(), ExpenseItemExportBody, export_expense_items(), _flatten_expense_tree(), get_expense_item(), get_expense_item_tree(), Session (+8 more)
|
||||
|
||||
### Community 50 - "Community 50"
|
||||
Cohesion: 0.18
|
||||
Nodes (27): _apply_inventory_product_update(), _apply_inventory_update(), _base_query(), create_inventory(), create_link_for_plan(), delete_inventory(), _generate_batch_no(), _get_inventory() (+19 more)
|
||||
|
||||
### Community 51 - "Community 51"
|
||||
Cohesion: 0.22
|
||||
Nodes (21): _address_to_read(), _build_address_query(), create_transport_address(), delete_transport_address(), export_transport_addresses(), _get_address(), get_transport_address(), list_all_transport_addresses() (+13 more)
|
||||
|
||||
### Community 52 - "Community 52"
|
||||
Cohesion: 0.04
|
||||
Nodes (99): _attach_history_products(), _build_history_page(), _build_page(), _get_by_token(), _history_status_label(), _models(), _parse_history_date(), date (+91 more)
|
||||
|
||||
### Community 53 - "Community 53"
|
||||
Cohesion: 0.17
|
||||
Nodes (30): apply_biz_backfill(), BackfillRule, BizRef, build_biz_index(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows() (+22 more)
|
||||
|
||||
### Community 54 - "Community 54"
|
||||
Cohesion: 0.13
|
||||
Nodes (27): PlCert, CertRead, 运输计划 - 安排运输时车辆/人员/证件资源快照 Schema, SnapshotCertRead, SnapshotPersonnelRow, TransportResourceSnapshot, certs_to_read(), list_owner_certs() (+19 more)
|
||||
|
||||
### Community 55 - "Community 55"
|
||||
Cohesion: 0.04
|
||||
Nodes (83): category_add(), category_update(), invoice_info_add(), invoice_info_by_customer(), _invoice_info_by_customer_impl(), invoice_info_delete(), invoice_info_list(), invoice_info_set_default() (+75 more)
|
||||
|
||||
### Community 56 - "Community 56"
|
||||
Cohesion: 0.09
|
||||
Nodes (46): ContractGapExportBody, PlanExportBody, BizAttachment, PlCarrier, PlDocumentReminder, PlDriver, PlInboundOrder, PlInboundOrderItem (+38 more)
|
||||
|
||||
### Community 57 - "Community 57"
|
||||
Cohesion: 0.16
|
||||
Nodes (21): create_leave(), delete_leave(), export_leaves(), get_leave(), _leave_local_callback(), leave_workflow_callback(), LeaveExportBody, list_leaves() (+13 more)
|
||||
|
||||
### Community 58 - "Community 58"
|
||||
Cohesion: 0.18
|
||||
Nodes (21): allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title(), is_auto_reimburse_title(), parse_optional_date(), parse_reimburse_date(), preview_reimburse_title_seq() (+13 more)
|
||||
|
||||
### Community 59 - "Community 59"
|
||||
Cohesion: 0.20
|
||||
Nodes (28): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+20 more)
|
||||
|
||||
### Community 60 - "Community 60"
|
||||
Cohesion: 0.21
|
||||
Nodes (17): apply_crm_create_by_scope(), _apply_list_filters(), create_supplier_info(), list_all_supplier_info(), list_supplier_info(), Any, Session, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java (+9 more)
|
||||
|
||||
### Community 61 - "Community 61"
|
||||
Cohesion: 0.10
|
||||
Nodes (47): cancel_plan(), _generate_notify_message(), 作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。, PlPlan, PlTransportDbLink, 运输-地磅出入库关联 pl_transport_db_link, _apply_plan_quantity_delta(), _create_db_inventory() (+39 more)
|
||||
|
||||
### Community 62 - "Community 62"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): category_delete(), category_tree(), _map_product_export_column_keys(), product_add(), product_delete(), product_detail(), product_export(), product_list() (+16 more)
|
||||
|
||||
### Community 63 - "Community 63"
|
||||
Cohesion: 0.24
|
||||
Nodes (16): _cargo_stats(), get_dashboard_stats(), get_inbound_by_cargo(), get_inbound_by_partner_cargo(), get_outbound_by_cargo(), get_outbound_by_partner_cargo(), _partner_cargo_stats(), Session (+8 more)
|
||||
|
||||
### Community 64 - "Community 64"
|
||||
Cohesion: 0.15
|
||||
Nodes (23): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), Session, save_workflow_nodes(), update_workflow() (+15 more)
|
||||
|
||||
### Community 65 - "Community 65"
|
||||
Cohesion: 0.09
|
||||
Nodes (63): cancel_apply(), create_apply(), create_process(), delete_applies(), delete_processes(), export_applies(), export_process_board(), get_apply() (+55 more)
|
||||
|
||||
### Community 66 - "Community 66"
|
||||
Cohesion: 0.16
|
||||
Nodes (18): ApiRequestLogMiddleware, _claims_from_auth(), _format_body_bytes(), _persist_log(), Any, Request, 统一记录 API 请求/响应出入参的中间件, _redact_obj() (+10 more)
|
||||
|
||||
### Community 67 - "Community 67"
|
||||
Cohesion: 0.12
|
||||
Nodes (36): get_password_hash(), Namespace, build_merged_users(), bx_role_labels(), check_minio(), check_mysql(), check_redis(), _clip() (+28 more)
|
||||
|
||||
### Community 68 - "Community 68"
|
||||
Cohesion: 0.18
|
||||
Nodes (24): delete_plan(), delete_carrier(), unbind_vehicle_driver(), delete_plan(), _actor_ids(), _actor_names(), assert_row_deletable_by_creator(), assert_rows_deletable_by_creator() (+16 more)
|
||||
|
||||
### Community 69 - "Community 69"
|
||||
Cohesion: 0.13
|
||||
Nodes (28): _append_user_scope_conditions(), apply_data_scope(), assert_row_in_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 合并多角色数据范围为 dept_ids / user_ids 并集。 (+20 more)
|
||||
|
||||
### Community 70 - "Community 70"
|
||||
Cohesion: 0.18
|
||||
Nodes (29): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+21 more)
|
||||
|
||||
### Community 71 - "Community 71"
|
||||
Cohesion: 0.14
|
||||
Nodes (23): CarrierAuditReject, CarrierBase, CarrierCreate, CarrierListResponse, CarrierQualificationBase, CarrierUpdate, DriverBase, DriverCreate (+15 more)
|
||||
|
||||
### Community 72 - "Community 72"
|
||||
Cohesion: 0.25
|
||||
Nodes (18): batch_generate_sample_codes(), batch_issue_sample_codes(), batch_revoke_sample_codes(), create_sample_code(), get_sample_code(), list_sample_codes(), _parse_issued_time(), Any (+10 more)
|
||||
|
||||
### Community 73 - "Community 73"
|
||||
Cohesion: 0.20
|
||||
Nodes (25): derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+17 more)
|
||||
|
||||
### Community 74 - "Community 74"
|
||||
Cohesion: 0.18
|
||||
Nodes (26): _apply_weighing_product_update(), _apply_weighing_update(), _base_query(), create_weighing(), delete_weighing(), _get_weighing(), get_weighing_related(), _kg_to_ton() (+18 more)
|
||||
|
||||
### Community 75 - "apply_crm_create_by_scope"
|
||||
Cohesion: 0.21
|
||||
Nodes (12): get_current_time(), parse_datetime(), datetime, create_oss(), get_oss_by_id(), get_oss_by_url(), Session, 按主键 id 查询附件(兼容旧 CRM 雪花 oss_id 迁入后的记录) (+4 more)
|
||||
|
||||
### Community 76 - "opportunity_follow.py"
|
||||
Cohesion: 0.21
|
||||
Nodes (26): _apply_plan_product_update(), _apply_plan_update(), AutoGenerateMonthlyResult, _base_query(), create_plan(), _generate_plan_no(), get_plan(), _get_plan_by_id_only() (+18 more)
|
||||
|
||||
### Community 77 - "Community 77"
|
||||
Cohesion: 0.11
|
||||
Nodes (12): get_wechat_pay_client(), get_wechat_pay_v2(), Any, 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.html, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total_amo, 申请退款 Args: out_trade_no: 商户订单号 total_amount: 订单, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 total_f (+4 more)
|
||||
|
||||
### Community 78 - "Community 78"
|
||||
Cohesion: 0.14
|
||||
Nodes (20): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+12 more)
|
||||
|
||||
### Community 79 - "PlCarrier"
|
||||
Cohesion: 0.29
|
||||
Nodes (12): build_name_pinyin_abbr(), normalize_name_pinyin_abbr(), 名称拼音首字母缩写:库内存小写,检索时大小写不敏感。, 保存时解析拼音字段。 - submitted_provided=True:用提交值(空则按 name 生成) - 否则:已有非空 existi, resolve_name_pinyin_abbr(), test_chinese_and_alnum(), test_empty_and_whitespace(), test_resolve_not_submitted_empty_existing_generates() (+4 more)
|
||||
|
||||
### Community 80 - "resolve_crm_product"
|
||||
Cohesion: 0.18
|
||||
Nodes (16): export_carriers(), list_carriers(), 导出承运商列表(当前筛选全量,或 ids 已选)。, carrier_to_read(), date, assert_carrier_eligible_for_transport(), carrier_agreement_expired(), carrier_audit_approved() (+8 more)
|
||||
|
||||
### Community 81 - "customer_follow.py"
|
||||
Cohesion: 0.20
|
||||
Nodes (21): cancel_apply(), create_apply(), create_disburse(), delete_applies(), delete_disburses(), export_urea_applies(), export_urea_disburse_board(), get_apply() (+13 more)
|
||||
|
||||
### Community 82 - "storage.py"
|
||||
Cohesion: 0.17
|
||||
Nodes (23): PlanContractGapRead, PlanProductRead, is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免), build_plan_contract_gap_read(), compute_contract_gap_sides(), _demander_gap_expr(), list_plan_contract_gaps() (+15 more)
|
||||
|
||||
### Community 83 - "Community 83"
|
||||
Cohesion: 0.15
|
||||
Nodes (30): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), create_approval_records() (+22 more)
|
||||
|
||||
### Community 84 - "Community 84"
|
||||
Cohesion: 0.23
|
||||
Nodes (23): build_id_maps(), clip_text(), count_rows(), export_mapping(), fetch_rows(), legacy_id_to_str(), main(), map_id() (+15 more)
|
||||
|
||||
### Community 85 - "allocate_next_biz_no"
|
||||
Cohesion: 0.18
|
||||
Nodes (17): get_oper_log_meta(), OperLogMeta, 请求级操作日志元数据(ContextVar), 供异步落库线程使用,避免 ContextVar 跨线程丢失。, set_oper_log_meta(), snapshot_oper_log_meta(), _format_summary(), oper_log() (+9 more)
|
||||
|
||||
### Community 86 - "Community 86"
|
||||
Cohesion: 0.12
|
||||
Nodes (15): _db_pool_keepalive_loop(), _error_json(), lifespan(), Exception, Request, 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, 定期 ping MySQL,避免远程库/NAT 回收空闲 TCP 后首请求长时间卡住。 (+7 more)
|
||||
|
||||
### Community 87 - "Community 87"
|
||||
Cohesion: 0.10
|
||||
Nodes (34): can_user_approve(), 顺序审批:当前步骤 pending 且 is_current=1。 同一审批人若同时存在历史已处理记录与当前轮 pending,优先取 pending, approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals() (+26 more)
|
||||
|
||||
### Community 88 - "CrmProduct"
|
||||
Cohesion: 0.40
|
||||
Nodes (12): _enrich_follow_dict(), get_follow(), list_follows(), list_follows_by_customer(), Any, Session, _row_to_dict(), soft_delete_follow() (+4 more)
|
||||
|
||||
### Community 89 - "pl_ocr_service.py"
|
||||
Cohesion: 0.19
|
||||
Nodes (22): PlOcrUsageMonth, 阿里云 OCR 月度调用计数 pl_ocr_usage_month(按自然月全局统计), assert_quota_available(), _build_ocr_client(), compress_image_bytes(), current_usage_month(), _first_attachment_url(), get_or_create_usage_row() (+14 more)
|
||||
|
||||
### Community 90 - "WechatMessageService"
|
||||
Cohesion: 0.15
|
||||
Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n, 发送催单通知给配送员 Args: deliver_openid: 配送员openid, 发送模板消息 Args: openid: 用户openid template_ (+1 more)
|
||||
|
||||
### Community 91 - "opportunity_product.py"
|
||||
Cohesion: 0.33
|
||||
Nodes (11): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+3 more)
|
||||
|
||||
### Community 92 - "Community 92"
|
||||
Cohesion: 0.20
|
||||
Nodes (21): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), _assert_users_exist(), get_setting() (+13 more)
|
||||
|
||||
### Community 93 - "api_request_log_middleware.py"
|
||||
Cohesion: 0.29
|
||||
Nodes (10): normalize_attachment_csv(), extract_minio_object_key(), join_relative_urls(), MinIO 附件 URL 规范化(数据迁移共用)。 背景 ---- CRM / 地磅 / 报销与 shanxia2.0 共用同一 MinIO(bucket 默, 业务表 OSS ID 串 → 相对 URL 串(用于客户证照、跟进附件等)。, 去掉预签名 query(``?X-Amz-...``)。, 将绝对/相对 URL 规范为 MinIO object key(不含 bucket)。, resolve_oss_id_csv() (+2 more)
|
||||
|
||||
### Community 94 - "assert_contract_editable_for_update"
|
||||
Cohesion: 0.60
|
||||
Nodes (3): assert_contract_editable_for_update(), test_assert_allows_editable(), test_assert_rejects_non_editable()
|
||||
|
||||
### Community 95 - "test_pl_public_link_archived.py"
|
||||
Cohesion: 0.13
|
||||
Nodes (18): pool_customer_assign(), pool_customer_claim(), pool_customer_list(), pool_record_detail(), pool_record_list(), get_pool_record(), list_pool_records(), Any (+10 more)
|
||||
|
||||
### Community 96 - "minio_url.py"
|
||||
Cohesion: 0.26
|
||||
Nodes (17): get_plan_related(), format_datetime(), _create_by_name(), datetime_end_of_day(), fmt_date(), fmt_datetime(), inventory_date_to_api(), inventory_to_read() (+9 more)
|
||||
|
||||
### Community 97 - "contact.py"
|
||||
Cohesion: 0.22
|
||||
Nodes (3): BaseStorage, 带下载文件名的访问 URL;默认实现为普通访问地址。, 浏览器内联预览 URL;默认实现为普通访问地址。
|
||||
|
||||
### Community 98 - "LocalStorage"
|
||||
Cohesion: 0.35
|
||||
Nodes (11): create_tenant(), get_tenant(), list_tenants(), Any, Session, _row_to_dict(), soft_delete_tenant(), tenant_no_exists() (+3 more)
|
||||
|
||||
### Community 99 - "redis_client.py"
|
||||
Cohesion: 0.10
|
||||
Nodes (30): bind_vehicle_driver(), calc_age_from_chinese_id_card(), date, 从 18 位身份证号计算周岁。号码不完整或出生日期无效时返回 None。, generate_uuid(), PlVehiclePersonnel, 车辆-人员关联表 pl_vehicle_personnel, VehiclePersonnelRow (+22 more)
|
||||
|
||||
### Community 100 - "price_letter_detail"
|
||||
Cohesion: 0.27
|
||||
Nodes (15): Settings, BaseSettings, apply_renumber(), build_mapping(), fetch_products(), format_new_product_no(), load_settings_env(), main() (+7 more)
|
||||
|
||||
### Community 101 - "tenant.py"
|
||||
Cohesion: 0.29
|
||||
Nodes (15): clue_statistics_level(), clue_statistics_overview(), clue_statistics_owner(), clue_statistics_source(), clue_statistics_trend(), _apply_create_range(), _base_query(), get_clue_level_statistics() (+7 more)
|
||||
|
||||
### Community 102 - "crm_supplier_hazard.py"
|
||||
Cohesion: 0.14
|
||||
Nodes (37): approve_carrier(), create_carrier(), create_driver(), create_personnel(), create_vehicle(), export_drivers(), export_personnel(), export_vehicles() (+29 more)
|
||||
|
||||
### Community 103 - "pl_internal_customer.py"
|
||||
Cohesion: 0.36
|
||||
Nodes (7): list_ethnics(), Any, Session, 民族码表 CRUD(全局 sys_ethnic), _row_to_dict(), 民族码表 sys_ethnic(国标 GB/T 3304,全局), SysEthnic
|
||||
|
||||
### Community 104 - "apply_crm_create_by_scope"
|
||||
Cohesion: 0.29
|
||||
Nodes (15): create_price_letter(), get_price_letter(), list_price_letters(), _parse_date(), Any, date, Session, _row_to_dict() (+7 more)
|
||||
|
||||
### Community 105 - "pool_customer_assign"
|
||||
Cohesion: 0.24
|
||||
Nodes (12): get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生, run_auto_generate_monthly_plans(), default_execution_status() (+4 more)
|
||||
|
||||
### Community 106 - "site.py"
|
||||
Cohesion: 0.19
|
||||
Nodes (27): CarrierExportBody, delete_driver(), delete_personnel(), delete_vehicle(), DriverExportBody, paste_recognize_commit(), PersonnelExportBody, VehicleExportBody (+19 more)
|
||||
|
||||
### Community 107 - "apply_pl_scope"
|
||||
Cohesion: 0.08
|
||||
Nodes (57): CompletedTaskExportBody, MyInstanceExportBody, PendingTaskExportBody, ProcessDefCreateBody, ProcessDefExportBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。 (+49 more)
|
||||
|
||||
### Community 108 - "statistics.py"
|
||||
Cohesion: 0.20
|
||||
Nodes (24): count_source_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+16 more)
|
||||
|
||||
### Community 109 - "monitor.py"
|
||||
Cohesion: 0.30
|
||||
Nodes (12): operlog_detail(), operlog_export(), operlog_list(), OperLogExportBody, Session, 导出操作日志(当前筛选全量,或 ids 已选)。, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info() (+4 more)
|
||||
|
||||
### Community 110 - "list_duty_staff_users"
|
||||
Cohesion: 0.33
|
||||
Nodes (13): _build_tree(), _cascade_soft_delete(), _collect_with_ancestors(), create_dept(), get_dept(), list_depts(), list_depts_tree(), Any (+5 more)
|
||||
|
||||
### Community 111 - "dict_data.py"
|
||||
Cohesion: 0.27
|
||||
Nodes (11): create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options(), Any, Session, 字典数据 CRUD(sys_dict_data), 字典下拉选项:租户主数据,忽略数据范围(user_info 保留兼容调用方,不参与过滤)。 (+3 more)
|
||||
|
||||
### Community 112 - ".to_tenant_user_dict"
|
||||
Cohesion: 0.19
|
||||
Nodes (20): statistics_follow(), statistics_industry(), statistics_level(), statistics_overview(), statistics_owner(), statistics_source(), statistics_trend(), _customer_base_query() (+12 more)
|
||||
|
||||
### Community 113 - "dict_type.py"
|
||||
Cohesion: 0.35
|
||||
Nodes (11): create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), Any, Session, 字典类型 CRUD(sys_dict_type), _row_to_dict() (+3 more)
|
||||
|
||||
### Community 115 - "site.py"
|
||||
Cohesion: 0.28
|
||||
Nodes (14): _assert_editable(), _build_public_page(), _format_file_size(), _get_inventory_by_token(), get_public_inventory(), _parse_feedback_images(), Session, UploadFile (+6 more)
|
||||
|
||||
### Community 116 - "Community 116"
|
||||
Cohesion: 0.17
|
||||
Nodes (28): batch_insert_quote_products(), calculate_subtotal(), _decimal_value(), delete_products_by_quote_id(), _ensure_quote_parent_scope(), _get_field(), get_quote_product(), insert_quote_product() (+20 more)
|
||||
|
||||
### Community 117 - "price_letter_detail"
|
||||
Cohesion: 0.17
|
||||
Nodes (11): price_letter_add(), price_letter_detail(), price_letter_list(), price_letter_update(), price_letter_void(), PriceLetterCreateBody, PriceLetterDetailBody, PriceLetterListBody (+3 more)
|
||||
|
||||
### Community 118 - "Community 118"
|
||||
Cohesion: 0.20
|
||||
Nodes (24): batch_insert_contract_products(), calculate_subtotal(), _decimal_value(), delete_price_tiers_by_contract_id(), delete_products_by_contract_id(), _get_field(), insert_contract_product(), _letter_oss_ids_to_json() (+16 more)
|
||||
|
||||
### Community 119 - "Community 119"
|
||||
Cohesion: 0.12
|
||||
Nodes (37): CertRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), is_huolala_trailer_no(), match_required_cert_name(), _missing_field_labels() (+29 more)
|
||||
|
||||
### Community 120 - "sqlalchemy_exception_handler"
|
||||
Cohesion: 0.35
|
||||
Nodes (9): business_type_from_path(), title_from_path(), get_oper_log(), _oper_log_row_in_scope(), _oper_status(), Any, Session, 操作日志:基于 sys_api_request_log 适配 RuoYi OperLog 视图 (+1 more)
|
||||
|
||||
### Community 121 - "post.py"
|
||||
Cohesion: 0.39
|
||||
Nodes (10): create_post(), get_post(), list_posts(), post_code_exists(), Any, Session, _row_to_dict(), soft_delete_post() (+2 more)
|
||||
|
||||
### Community 122 - "site.py"
|
||||
Cohesion: 0.39
|
||||
Nodes (10): create_site(), get_site(), list_sites(), Any, Session, _row_to_dict(), site_code_exists(), soft_delete_site() (+2 more)
|
||||
|
||||
### Community 123 - "customer_options"
|
||||
Cohesion: 0.15
|
||||
Nodes (18): export_plans(), list_plans(), _plan_plate_match(), _plan_product_name_exists(), 列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。, 导出计划列表(当前筛选全量,或 ids 已选)。, _resolve_list_product_name(), PlanListResponse (+10 more)
|
||||
|
||||
### Community 124 - "datetime_parse.py"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): parse_optional_plan_datetime(), datetime, 运输计划相关日期时间解析:前端 date-picker 仅传 YYYY-MM-DD。
|
||||
|
||||
### Community 125 - "resolve_crm_product"
|
||||
Cohesion: 0.27
|
||||
Nodes (10): apply_product_snapshot_to_inventory(), ProductSnapshot, Session, 地磅模块 — CRM 产品解析与快照写入。, 校验 CRM 产品并返回名称/规格快照。新建单据 product_id 必填。 require_on_shelf=False 用于运输计划联动地磅等历, resolve_crm_product(), _product(), resolve_crm_product:运输联动场景允许已下架产品。 (+2 more)
|
||||
|
||||
### Community 126 - "customer_pool.py"
|
||||
Cohesion: 0.36
|
||||
Nodes (13): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), menu_name_exists(), Any (+5 more)
|
||||
|
||||
### Community 127 - "allocate_next_biz_no"
|
||||
Cohesion: 0.33
|
||||
Nodes (8): allocate_next_biz_no(), _format_biz_no(), _prefix_for(), datetime, Session, 业务协议号自动生成:XBCC / JZCC + YYYYMMDD + 6 位序号, 原子分配下一个业务协议号。 须在 create 事务内调用;使用 MySQL LAST_INSERT_ID 保证并发安全。, BizNoKind
|
||||
|
||||
### Community 128 - "product_allowed"
|
||||
Cohesion: 0.28
|
||||
Nodes (11): assert_products_allowed_for_supplier(), enrich_products_with_hazard_flags(), get_supplier_hazard_flags(), product_allowed(), Any, Session, 批量回填明细行 isToxic/isExplosive(来自产品主数据,供前端切换主体剔除)。, test_dual_requires_both() (+3 more)
|
||||
|
||||
### Community 129 - "BaseStorage"
|
||||
Cohesion: 0.12
|
||||
Nodes (24): _auto_contract_name_body(), generate_contract_name(), 按面板单位全称精确匹配交易主体/客户主数据,取 shortName;对不上则用全称。, 前端预览误用单位全称时,名称片段会等于面板/客户/开票全称。, 按面板供方(partyA)-需方(partyB)生成:{供方简称}-{需方简称}({合同编号})。 - 名称为空:按主数据简称自动生成 - 名, resolve_party_short_name(), _strip_contract_name_no_suffix(), _user_contract_name_uses_party_full_name() (+16 more)
|
||||
|
||||
### Community 130 - "contact.py"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): contact_add(), contact_delete(), contact_update(), ContactCreateBody, ContactDeleteBody, ContactUpdateBody, CRM 联系人 Pydantic Schemas
|
||||
|
||||
### Community 131 - "customer_update"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): customer_create(), customer_update(), customer_name_exists(), CustomerCreateBody, CustomerUpdateBody
|
||||
|
||||
### Community 132 - "context.py"
|
||||
Cohesion: 0.23
|
||||
Nodes (19): create_contact(), get_contact(), list_contacts_by_customer(), _parse_optional_date(), Any, date, Session, _row_to_dict() (+11 more)
|
||||
|
||||
### Community 133 - "opportunity_export"
|
||||
Cohesion: 0.48
|
||||
Nodes (7): _opp_list_kwargs(), opportunity_export(), opportunity_kanban(), opportunity_list(), opportunity_mine_list(), OpportunityKanbanBody, OpportunityListBody
|
||||
|
||||
### Community 134 - "response.py"
|
||||
Cohesion: 0.29
|
||||
Nodes (6): Config, format_api_error_message(), PageResult, Exception, 将 HTTP/SQLAlchemy 等异常转为可展示的错误文案(避免 str([]) 空列表)。, ResponseModel
|
||||
|
||||
### Community 135 - "unsettled_plans_q_filter"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): 简易搜索:计划编号 / 客户(供应商) / 车牌 / 承运商名称。, unsettled_plans_q_filter(), 未结算计划简易搜索:q 应覆盖计划编号/客户/车牌/承运商名称。, test_unsettled_plans_q_filter_includes_carrier_and_plate()
|
||||
|
||||
### Community 136 - "Community 136"
|
||||
Cohesion: 0.19
|
||||
Nodes (18): create_role(), get_role(), get_role_data_scope(), get_role_menu_ids(), list_roles(), Any, Session, 角色 CRUD(sys_role / sys_role_menu / sys_role_data_scope_detail) (+10 more)
|
||||
|
||||
### Community 137 - "customer_options"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): customer_options(), 客户下拉选项(租户内只读,不做 owner 数据权限), CustomerOptionsBody, 客户下拉选项请求体(租户内只读搜索,不做 owner 数据权限)
|
||||
|
||||
### Community 138 - "Community 138"
|
||||
Cohesion: 0.33
|
||||
Nodes (19): check_python(), create_venv(), ensure_dirs(), ensure_valid_venv(), ensure_venv_and_runtime(), install_dependencies(), is_running(), log_error() (+11 more)
|
||||
|
||||
### Community 139 - "get_current_user_by_token"
|
||||
Cohesion: 0.22
|
||||
Nodes (15): get_storage(), download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url(), normalize_storage_path(), 报销附件存储适配 — 复用门户 app.core.storage,对外保持 bx 协议。 (+7 more)
|
||||
|
||||
### Community 140 - "UserRole"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Web 管理端约定角色(由 sys_role.role_name 映射而来,非数据库枚举), UserRole, str
|
||||
|
||||
### Community 145 - "resolve_crm_product"
|
||||
Cohesion: 0.09
|
||||
Nodes (38): PlTransportProductBrandQty, PlTransportProductFeedback, 运输单按产品回传 pl_transport_product_feedback, 运输单产品回传品牌数量 pl_transport_product_brand_qty, load_brand_qtys_by_plan_product_ids(), persist_plan_product_brand_qtys(), Any, Decimal (+30 more)
|
||||
|
||||
### Community 147 - "Community 147"
|
||||
Cohesion: 0.37
|
||||
Nodes (17): check_env(), check_python(), create_venv(), init_env(), install_dependencies(), log_error(), log_info(), log_success() (+9 more)
|
||||
|
||||
### Community 154 - "response.py"
|
||||
Cohesion: 0.19
|
||||
Nodes (7): _guess_preview_content_type(), MinIOStorage, Any, 从 MINIO_BASE_URL 解析公网 endpoint;未配置或与内网相同时复用 self.client。, 按对象键后缀推断内联预览 Content-Type(纠正上传时未写入 MIME 的情况)。, MinIO 预签名下载 URL,携带原始文件名。, MinIO 预签名内联预览 URL(图片新标签页 / PDF iframe 等)。 上传时 put_object 未写 content_typ
|
||||
|
||||
### Community 159 - "customer_update"
|
||||
Cohesion: 0.18
|
||||
Nodes (17): get_user_menu_codes(), Session, 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user(), iter_user_menu_perm_codes(), _map_role_name_to_web(), Session (+9 more)
|
||||
|
||||
### Community 162 - ".to_tenant_user_dict"
|
||||
Cohesion: 0.42
|
||||
Nodes (7): default_settlement_clause(), test_advance_payment_clause(), test_arrive_payment_clause(), test_empty_falls_back_to_arrive(), test_monthly_settlement_clause_uses_label(), test_unknown_falls_back_to_arrive(), test_volume_quarterly_other_labels()
|
||||
|
||||
### Community 164 - "get_client_ip"
|
||||
Cohesion: 0.09
|
||||
Nodes (48): _avatar_url_field(), _build_user_info_payload(), change_current_user_password(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), public_quote_share() (+40 more)
|
||||
|
||||
### Community 170 - "test_quote_approver_setting.py"
|
||||
Cohesion: 0.11
|
||||
Nodes (7): convert_heic_to_jpeg(), OSSStorage, process_image_content(), QiniuStorage, 文件存储工具模块 支持多种存储方式: 1. 本地存储 (local) - 默认 2. 七牛云存储 (qiniu) - 推荐生产环境使用 3. 阿里云OSS (, 将 HEIC/HEIF 格式转换为 JPEG 格式, 处理图片内容,如果是 HEIC 格式则转换为 JPEG
|
||||
|
||||
### Community 173 - "resolve_create_time_bounds"
|
||||
Cohesion: 0.07
|
||||
Nodes (70): _build_driver_url(), get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, _resolve_other_personnel(), _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible() (+62 more)
|
||||
|
||||
### Community 179 - "test_pl_vehicle_personnel_photo_schema.py"
|
||||
Cohesion: 0.27
|
||||
Nodes (16): add_favorite(), count_active(), find_active(), find_soft_deleted(), list_favorites(), _next_order_num(), normalize_menu_path(), Any (+8 more)
|
||||
|
||||
### Community 206 - "crm_quote_pdf.py"
|
||||
Cohesion: 0.36
|
||||
Nodes (10): build_quote_html(), _default_value(), _format_date(), _format_discount(), _format_money(), generate_quote_pdf(), _get_pdf_styles(), Any (+2 more)
|
||||
|
||||
### Community 207 - "shanxia2.0 后端骨架(FastAPI)"
|
||||
Cohesion: 0.18
|
||||
Nodes (10): 1. 创建虚拟环境, 2. 安装依赖, 3. 配置环境变量, 4. 启动服务, API 路由分组, shanxia2.0 后端骨架(FastAPI), 开发规范, 快速开始 (+2 more)
|
||||
|
||||
### Community 220 - "api_crypto_middleware.py"
|
||||
Cohesion: 0.14
|
||||
Nodes (23): ApiCryptoMiddleware, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key() (+15 more)
|
||||
|
||||
### Community 237 - "order_status_compat.py"
|
||||
Cohesion: 0.36
|
||||
Nodes (7): derive_legacy_status_from_three(), derive_three_status_from_legacy(), Decimal, 阶段A兼容:从旧 status 推导三字段。 约束:旧 status 本身混合了支付/配送/订单生命周期,因此只能尽力推断; 若业务侧已有更精确, 阶段A兼容:从三字段反推旧 status(用于旧前端/旧筛选参数兼容)。, ThreeStatus, _to_decimal()
|
||||
|
||||
### Community 239 - "shanxia2.0 Backend 生产部署说明"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): 1. 上传到服务器, 2. 服务器首次启动, 3. 日常运维, 4. 配置文件, 5. 与 Nginx 配合, 6. 常见问题, shanxia2.0 Backend 生产部署说明
|
||||
|
||||
### Community 246 - "db_collation.py"
|
||||
Cohesion: 0.38
|
||||
Nodes (6): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时统一排序规则,避免 Illegal mix of collations。, 跨表字符串等值比较(JOIN / WHERE)时统一为 utf8mb4_unicode_ci。, 将列显式设为 utf8mb4_unicode_ci。, unicode_ci()
|
||||
|
||||
## Knowledge Gaps
|
||||
- **30 isolated node(s):** `Config`, `Config`, `Config`, `Config`, `Config` (+25 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **15 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `generate_uuid()` connect `redis_client.py` to `context.py`, `Community 5`, `Community 6`, `Community 4`, `Community 8`, `Community 136`, `Community 11`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `resolve_crm_product`, `Community 21`, `Community 24`, `Community 25`, `Community 26`, `Community 28`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `get_client_ip`, `Community 39`, `Community 40`, `Community 43`, `resolve_create_time_bounds`, `Community 46`, `Community 47`, `Community 51`, `Community 54`, `Community 56`, `Community 60`, `Community 61`, `Community 64`, `Community 65`, `Community 67`, `Community 72`, `Community 74`, `apply_crm_create_by_scope`, `opportunity_follow.py`, `Community 83`, `Community 87`, `CrmProduct`, `pl_ocr_service.py`, `opportunity_product.py`, `Community 92`, `test_pl_public_link_archived.py`, `LocalStorage`, `crm_supplier_hazard.py`, `apply_crm_create_by_scope`, `pool_customer_assign`, `site.py`, `apply_pl_scope`, `list_duty_staff_users`, `dict_data.py`, `dict_type.py`, `Community 116`, `Community 118`, `post.py`, `site.py`, `customer_pool.py`, `allocate_next_biz_no`?**
|
||||
_High betweenness centrality (0.139) - this node is a cross-community bridge._
|
||||
- **Why does `BaseModel` connect `Community 12` to `Community 1`, `Community 2`, `contact.py`, `customer_update`, `opportunity_export`, `response.py`, `Community 7`, `Community 5`, `customer_options`, `Community 10`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 20`, `Community 26`, `Community 27`, `Community 37`, `Community 40`, `Community 41`, `Community 43`, `Community 45`, `resolve_create_time_bounds`, `Community 47`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 54`, `Community 55`, `Community 56`, `Community 57`, `Community 62`, `Community 63`, `Community 64`, `Community 65`, `Community 71`, `Community 74`, `opportunity_follow.py`, `Community 78`, `customer_follow.py`, `storage.py`, `test_pl_public_link_archived.py`, `redis_client.py`, `tenant.py`, `crm_supplier_hazard.py`, `site.py`, `apply_pl_scope`, `monitor.py`, `.to_tenant_user_dict`, `site.py`, `price_letter_detail`, `Community 119`, `customer_options`?**
|
||||
_High betweenness centrality (0.104) - this node is a cross-community bridge._
|
||||
- **Why does `Settings` connect `price_letter_detail` to `Community 35`, `Community 36`, `Community 67`, `Community 38`, `Community 70`, `Community 73`, `Community 42`, `statistics.py`, `Community 48`, `Community 53`, `Community 59`, `Community 30`?**
|
||||
_High betweenness centrality (0.094) - this node is a cross-community bridge._
|
||||
- **Are the 30 inferred relationships involving `DbUserContext` (e.g. with `InventoryExportBody` and `InventoryRelatedData`) actually correct?**
|
||||
_`DbUserContext` has 30 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **What connects `API 路由包 — 山峡化工生产一体化门户`, `返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。`, `返回用户下拉选项(label=昵称,value=用户ID,附带 nickName/userNo)。 供申请人/审批人等选择场景使用,返回本租户全部有效` to the rest of the system?**
|
||||
_610 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Community 1` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.06666666666666667 - nodes in this community are weakly interconnected._
|
||||
- **Should `Community 2` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.09292929292929293 - nodes in this community are weakly interconnected._
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -1,16 +1,16 @@
|
||||
# Graph Report - backend (2026-08-21)
|
||||
# Graph Report - backend (2026-08-22)
|
||||
|
||||
## Corpus Check
|
||||
- 340 files · ~233,591 words
|
||||
- 341 files · ~234,393 words
|
||||
- Verdict: corpus is large enough that graph structure adds value.
|
||||
|
||||
## Summary
|
||||
- 4793 nodes · 18045 edges · 180 communities (165 shown, 15 thin omitted)
|
||||
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 903 edges (avg confidence: 0.52)
|
||||
- 4800 nodes · 18086 edges · 185 communities (165 shown, 20 thin omitted)
|
||||
- Extraction: 95% EXTRACTED · 5% INFERRED · 0% AMBIGUOUS · INFERRED: 909 edges (avg confidence: 0.52)
|
||||
- Token cost: 0 input · 0 output
|
||||
|
||||
## Graph Freshness
|
||||
- Built from commit: `833544de`
|
||||
- Built from commit: `16be6fa2`
|
||||
- Run `git rev-parse HEAD` and compare to check if the graph is stale.
|
||||
- Run `graphify update .` after code changes (no API cost).
|
||||
|
||||
@@ -156,7 +156,12 @@
|
||||
- [[_COMMUNITY_Community 138|Community 138]]
|
||||
- [[_COMMUNITY_get_current_user_by_token|get_current_user_by_token]]
|
||||
- [[_COMMUNITY_UserRole|UserRole]]
|
||||
- [[_COMMUNITY_crm_export_columns.py|crm_export_columns.py]]
|
||||
- [[_COMMUNITY_parse_resource_snapshot|parse_resource_snapshot]]
|
||||
- [[_COMMUNITY_web_login_rsa_public_key|web_login_rsa_public_key]]
|
||||
- [[_COMMUNITY_get_client_ip|get_client_ip]]
|
||||
- [[_COMMUNITY_resolve_crm_product|resolve_crm_product]]
|
||||
- [[_COMMUNITY_context.py|context.py]]
|
||||
- [[_COMMUNITY_Community 147|Community 147]]
|
||||
- [[_COMMUNITY_Community 151|Community 151]]
|
||||
- [[_COMMUNITY_response.py|response.py]]
|
||||
@@ -188,13 +193,13 @@
|
||||
|
||||
## God Nodes (most connected - your core abstractions)
|
||||
1. `BaseModel` - 504 edges
|
||||
2. `get_tenant_no()` - 378 edges
|
||||
2. `get_tenant_no()` - 380 edges
|
||||
3. `DbUserContext` - 304 edges
|
||||
4. `success_response()` - 273 edges
|
||||
5. `error_response()` - 267 edges
|
||||
5. `error_response()` - 269 edges
|
||||
6. `BxUserContext` - 204 edges
|
||||
7. `generate_uuid()` - 198 edges
|
||||
8. `crm_user_info()` - 137 edges
|
||||
8. `crm_user_info()` - 138 edges
|
||||
9. `ExportValidationError` - 108 edges
|
||||
10. `ExportColumn` - 106 edges
|
||||
|
||||
@@ -213,103 +218,103 @@
|
||||
## Import Cycles
|
||||
- None detected.
|
||||
|
||||
## Communities (180 total, 15 thin omitted)
|
||||
## Communities (185 total, 20 thin omitted)
|
||||
|
||||
### Community 0 - "Community 0"
|
||||
Cohesion: 0.40
|
||||
Nodes (4): filter_current_cycle_approvals(), 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, 审批进度仅展示当前轮次;完整历史由 get_approval_history 返回。, T
|
||||
Cohesion: 0.08
|
||||
Nodes (25): clue_assign(), clue_convert(), clue_create(), clue_delete(), clue_follow_create(), clue_follow_delete(), clue_follow_list(), clue_follow_update() (+17 more)
|
||||
|
||||
### Community 1 - "Community 1"
|
||||
Cohesion: 0.07
|
||||
Nodes (39): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody (+31 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (38): CRM 合同 API 路由 — GET/PUT/DELETE/POST 对齐原 Java CRM, 接口菜单权限守卫。super_admin 直接放行。, require_menu_code(), ContractApproverSettingSaveBody, ContractApprovalActionBody, ContractApprovalPassBody, ContractApprovalRejectBody, ContractApprovalTransferBody (+30 more)
|
||||
|
||||
### Community 2 - "Community 2"
|
||||
Cohesion: 0.09
|
||||
Nodes (43): dump_export_row(), issue_status_label(), Any, Session, respond_xlsx(), status_label(), advance_issue_stats(), batch_offset() (+35 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (42): dump_export_row(), issue_status_label(), Any, Session, respond_xlsx(), status_label(), advance_issue_stats(), batch_offset() (+34 more)
|
||||
|
||||
### Community 3 - "Community 3"
|
||||
Cohesion: 0.06
|
||||
Nodes (89): attachment_download_url(), attachment_preview_url(), create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite(), create_post() (+81 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (102): attachment_download_url(), attachment_preview_url(), create_dept(), create_dict_data(), create_dict_type(), create_menu(), create_menu_favorite(), create_post() (+94 more)
|
||||
|
||||
### Community 4 - "Community 4"
|
||||
Cohesion: 0.09
|
||||
Nodes (75): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+67 more)
|
||||
Nodes (76): _apply_list_filters(), assign_opportunities(), batch_update_expect_date(), batch_update_stage(), change_stage(), create_opportunity(), _decimal_value(), _enrich_user_names() (+68 more)
|
||||
|
||||
### Community 5 - "Community 5"
|
||||
Cohesion: 0.05
|
||||
Nodes (128): archive_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan(), create_plan_full(), _determine_plan_type(), _ensure_subpack_slip_no() (+120 more)
|
||||
Cohesion: 0.07
|
||||
Nodes (75): archive_plan(), cancel_plan(), cancel_plan_wait_notice(), count_plans_by_contract(), create_from_contract(), create_plan(), _determine_plan_type(), _ensure_subpack_slip_no() (+67 more)
|
||||
|
||||
### Community 6 - "Community 6"
|
||||
Cohesion: 0.13
|
||||
Nodes (39): assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer(), create_customer(), deal_customer(), _enrich_user_names(), _ensure_customer_in_scope() (+31 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (37): assign_customer(), batch_claim_customers(), check_duplicate_customer(), claim_customer(), create_customer(), deal_customer(), _enrich_user_names(), _ensure_customer_in_scope() (+29 more)
|
||||
|
||||
### Community 7 - "Community 7"
|
||||
Cohesion: 0.06
|
||||
Nodes (94): clue_assign(), clue_convert(), clue_create(), clue_delete(), clue_detail(), clue_export(), clue_follow_create(), clue_follow_delete() (+86 more)
|
||||
Nodes (91): clue_check_convert(), clue_check_duplicate(), clue_detail(), clue_export(), clue_follow_statistics(), clue_import(), clue_list(), clue_mine() (+83 more)
|
||||
|
||||
### Community 8 - "Community 8"
|
||||
Cohesion: 0.10
|
||||
Nodes (68): register_quote_routes(), accept_quote(), assert_quote_editable_for_update(), _build_quote_filters(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value() (+60 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (45): register_quote_routes(), accept_quote(), approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals() (+37 more)
|
||||
|
||||
### Community 9 - "Community 9"
|
||||
Cohesion: 0.09
|
||||
Nodes (53): download_reimburse_import_template(), clue_import_template(), customer_import_template(), product_import_template(), build_annotated_result_bytes(), build_applicant_label(), build_expense_path_labels(), build_import_template_bytes() (+45 more)
|
||||
|
||||
### Community 10 - "Community 10"
|
||||
Cohesion: 0.07
|
||||
Nodes (41): export_depts(), export_menus(), export_posts(), export_role_management(), export_sites(), export_tenants(), export_users(), list_tenants() (+33 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (40): operlog_detail(), operlog_export(), operlog_list(), OperLogExportBody, Session, 导出操作日志(当前筛选全量,或 ids 已选)。, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info() (+32 more)
|
||||
|
||||
### Community 11 - "Community 11"
|
||||
Cohesion: 0.15
|
||||
Nodes (40): PlVehicleUreaApply, PlVehicleUreaDisburse, 车辆尿素申请 pl_vehicle_urea_apply, 车辆尿素发放登记 pl_vehicle_urea_disburse, Decimal, VehicleUreaApplyCreate, VehicleUreaApplyRead, VehicleUreaApplyUpdate (+32 more)
|
||||
|
||||
### Community 12 - "Community 12"
|
||||
Cohesion: 0.04
|
||||
Nodes (79): InventoryExportBody, InventoryRelatedData, PlanRelatedData, RechargeApplyExportBody, RechargeDisburseExportBody, UreaApplyExportBody, UreaDisburseExportBody, BaseModel (+71 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (40): AttachmentUploadResponse, ChangePasswordRequest, Config, LoginRequest, LoginResponse, Pydantic schemas - 用户认证, ResetPasswordRequest, UserCreate (+32 more)
|
||||
|
||||
### Community 13 - "Community 13"
|
||||
Cohesion: 0.18
|
||||
Nodes (33): approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse(), delete_reimburse(), export_approved_by_me_reimburses(), export_my_reimburses(), export_pending_approval_reimburses() (+25 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (38): bx_health(), 报销(bx)API 路由聚合 — REST 风格,协议对齐 bx 原系统。, P0 健康检查:验证 bx 路由已挂载且响应协议为 code=0。, approve_reimburse(), approved_by_me(), _build_details_data(), create_reimburse(), delete_reimburse() (+30 more)
|
||||
|
||||
### Community 14 - "Community 14"
|
||||
Cohesion: 0.10
|
||||
Nodes (29): 报销模块认证适配:门户 JWT 用户 → bx 业务上下文。, BxAttachment, BxReimburseInvoice, BxReimburseOffset, BxWorkflowNode, 报销(bx)模块数据模型 — 对齐 docs/sql/20260606_bx_tables.sql, ReimburseDetailOut, AttachmentService (+21 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (31): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+23 more)
|
||||
|
||||
### Community 15 - "Community 15"
|
||||
Cohesion: 0.12
|
||||
Nodes (14): BxReimburseApply, BxReimburseApproval, BxReimburseDetail, 报销单勾选的发票附件(同一发票可勾选多个附件,各占一条)。, ReimburseInvoiceBriefOut, ReimburseInvoiceLinkIn, Any, Session (+6 more)
|
||||
Nodes (15): BxReimburseApply, BxReimburseApproval, BxReimburseDetail, BxReimburseInvoice, BxReimburseOffset, 报销单勾选的发票附件(同一发票可勾选多个附件,各占一条)。, ReimburseInvoiceBriefOut, ReimburseInvoiceLinkIn (+7 more)
|
||||
|
||||
### Community 16 - "Community 16"
|
||||
Cohesion: 0.09
|
||||
Nodes (62): cancel_apply(), create_apply(), create_record(), delete_applies(), delete_records(), export_recharge_applies(), export_recharge_disburse_board(), get_apply() (+54 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (40): PlVehicleRechargeApply, PlVehicleRechargeRecord, 车辆ETC/加油充值申请 pl_vehicle_recharge_apply, 车辆ETC/加油充值发放登记 pl_vehicle_recharge_record, Decimal, 发放登记页:申请单 + 关联发放信息(左连接), VehicleRechargeApplyCreate, VehicleRechargeApplyRead (+32 more)
|
||||
|
||||
### Community 17 - "Community 17"
|
||||
Cohesion: 0.06
|
||||
Nodes (88): ApiCryptoError, _b64url_decode(), _b64url_encode(), decrypt_json(), encrypt_json(), Any, generate_id(), DutyAssignment (+80 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (99): day_detail(), delete_assignment(), duty_user_options(), _enrich_assign_names(), ensure_duty_dict(), month_summary(), Session, 指定用户时补全 personName(用 nick_name)。 (+91 more)
|
||||
|
||||
### Community 18 - "Community 18"
|
||||
Cohesion: 0.09
|
||||
Nodes (42): _advance_list_filters(), advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _export_advance_rows() (+34 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (45): _advance_list_filters(), advance_pending_approval_stats(), advance_status_counts(), approve_advance(), approved_by_me(), create_advance(), delete_advance(), _export_advance_rows() (+37 more)
|
||||
|
||||
### Community 19 - "Community 19"
|
||||
Cohesion: 0.28
|
||||
Nodes (11): DbSequence, _allocate_inbound_outbound_id(), _ensure_sequence_row(), max_numeric_inbound_outbound_id(), next_inbound_outbound_id(), Session, 出入库单 id 生成 — 租户内纯数字自增,并发安全。, 当前租户下纯数字 id 的最大值(不含 UUID 等非数字主键)。 (+3 more)
|
||||
|
||||
### Community 20 - "Community 20"
|
||||
Cohesion: 0.13
|
||||
Nodes (35): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), export_settlements(), export_unsettled_plans(), _generate_settlement_no() (+27 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (41): approve_settlement_legacy(), cancel_settlement(), create_settlement(), delete_settlement(), disburse_settlement(), export_settlements(), export_unsettled_plans(), _generate_settlement_no() (+33 more)
|
||||
|
||||
### Community 21 - "Community 21"
|
||||
Cohesion: 0.08
|
||||
Nodes (60): _alias_row_to_dict(), _assert_brand_deletable(), barcode_exists(), _brand_row_to_dict(), _build_category_tree(), category_code_exists(), _category_row_to_dict(), _collect_category_with_ancestors() (+52 more)
|
||||
Cohesion: 0.09
|
||||
Nodes (59): _alias_row_to_dict(), _assert_brand_deletable(), barcode_exists(), _brand_row_to_dict(), _build_category_tree(), category_code_exists(), _category_row_to_dict(), _collect_category_with_ancestors() (+51 more)
|
||||
|
||||
### Community 22 - "Community 22"
|
||||
Cohesion: 0.19
|
||||
Nodes (13): BusinessException, InvalidStatusTransitionException, log_delivery_operation(), log_operation(), log_order_operation(), log_settlement_operation(), log_user_operation(), OrderLockedException (+5 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (28): parse_admin_request_json(), Any, Request, 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, ApiCryptoError, _b64url_decode(), _b64url_encode() (+20 more)
|
||||
|
||||
### Community 23 - "Community 23"
|
||||
Cohesion: 0.38
|
||||
Nodes (6): 解析司机:显式选择优先,否则取车辆关联司机;均无则允许为空。, _resolve_driver(), 运输计划解析司机:车辆未关联司机时允许为空。, 未显式选司机、车辆也无关联司机时,应返回空三元组而非 400。, test_resolve_driver_with_explicit_id_returns_personnel(), test_resolve_driver_without_vehicle_link_returns_none()
|
||||
Cohesion: 0.10
|
||||
Nodes (61): create_plan_full(), 创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输), update_plan(), PlPlan, PlPlanProduct, 计划产品明细表 pl_plan_product, PlanArchiveFreightBlock, PlanArchiveProductItem (+53 more)
|
||||
|
||||
### Community 24 - "Community 24"
|
||||
Cohesion: 0.19
|
||||
@@ -320,8 +325,8 @@ Cohesion: 0.26
|
||||
Nodes (12): list_share_logs(), _parse_user_agent(), Any, Session, CRM 报价单分享访问日志 CRUD — 对照 CrmQuoteShareLogServiceImpl.java, Java: statisticsVisits, 简易 User-Agent 解析(替代 Hutool UserAgentUtil), Java: queryLogsByQuoteId (+4 more)
|
||||
|
||||
### Community 26 - "Community 26"
|
||||
Cohesion: 0.11
|
||||
Nodes (43): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+35 more)
|
||||
Cohesion: 0.16
|
||||
Nodes (31): check_document_expiry(), document_reminder_stats(), get_inventory_ledger(), get_summary(), list_document_reminders(), list_transactions(), list_warnings(), date (+23 more)
|
||||
|
||||
### Community 27 - "Community 27"
|
||||
Cohesion: 0.11
|
||||
@@ -329,7 +334,7 @@ Nodes (32): CRM 报价单 API 路由 — 挂接到 crm.router, QuoteApproverSett
|
||||
|
||||
### Community 28 - "Community 28"
|
||||
Cohesion: 0.11
|
||||
Nodes (56): PlFreightSettlement, PlFreightSettlementApproval, PlFreightSettlementTransport, PlRemittanceVoucher, 运费结算表 pl_freight_settlement, 运费结算审批 pl_freight_settlement_approval, 结算单-运输关联表 pl_freight_settlement_transport, 汇款凭证表 pl_remittance_voucher (+48 more)
|
||||
Nodes (54): PlFreightSettlement, PlFreightSettlementApproval, PlFreightSettlementTransport, 运费结算表 pl_freight_settlement, 运费结算审批 pl_freight_settlement_approval, 结算单-运输关联表 pl_freight_settlement_transport, _advance_after_approval(), _approval_to_dict() (+46 more)
|
||||
|
||||
### Community 29 - "Community 29"
|
||||
Cohesion: 0.18
|
||||
@@ -340,20 +345,20 @@ Cohesion: 0.16
|
||||
Nodes (26): clear_target_categories(), compute_level(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+18 more)
|
||||
|
||||
### Community 31 - "Community 31"
|
||||
Cohesion: 0.10
|
||||
Nodes (43): apply_dibang_prefill_to_order(), apply_site_feedback(), build_io_order_site_url(), create_io_order_for_transport(), _dibang_qty_by_plan_product(), enrich_io_items_with_brand_feedback(), enrich_io_order_dict(), _format_io_product_summary_line() (+35 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (48): PlInboundOrder, PlInboundOrderItem, PlInboundOrderItemBrandQty, PlOutboundOrder, PlOutboundOrderItem, PlOutboundOrderItemBrandQty, 运输计划-入库单 pl_inbound_order, 运输计划-入库单明细 pl_inbound_order_item (+40 more)
|
||||
|
||||
### Community 32 - "Community 32"
|
||||
Cohesion: 0.10
|
||||
Nodes (32): 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password(), camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session (+24 more)
|
||||
Cohesion: 0.19
|
||||
Nodes (23): 验证密码(哈希非 bcrypt 或损坏时返回 False,避免抛错), verify_password(), change_password(), create_user(), get_user(), get_user_with_relations(), _hash_password(), list_post_ids_for_user() (+15 more)
|
||||
|
||||
### Community 33 - "Community 33"
|
||||
Cohesion: 0.38
|
||||
Nodes (13): ensure_crm_customer_linked_row_in_scope(), 客户子表(开票信息等):先校验关联客户 owner scope,否则校验 create_by。, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer(), Any, Session (+5 more)
|
||||
Cohesion: 0.33
|
||||
Nodes (15): ensure_crm_customer_linked_row_in_scope(), ensure_crm_owner_row_in_scope(), Session, 客户子表(开票信息等):先校验关联客户 owner scope,否则校验 create_by。, _clear_default_for_customer(), create_invoice_info(), get_invoice_info(), list_invoice_info_by_customer() (+7 more)
|
||||
|
||||
### Community 34 - "Community 34"
|
||||
Cohesion: 0.15
|
||||
Nodes (27): _apply_contract_entity_fields(), _build_contract_filters(), _calc_amount_with_tax(), contract_no_exists(), create_contract(), create_contract_template(), create_from_opportunity(), create_from_quote() (+19 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (60): _apply_contract_entity_fields(), _build_contract_filters(), _build_contract_name_from_parties(), _build_customer_address(), _calc_amount_with_tax(), contract_no_exists(), _contract_period_key(), contract_row_to_dict() (+52 more)
|
||||
|
||||
### Community 35 - "Community 35"
|
||||
Cohesion: 0.18
|
||||
@@ -361,27 +366,27 @@ Nodes (36): clear_portal_workflow(), _dec(), derive_source_url(), fetch_portal_a
|
||||
|
||||
### Community 36 - "Community 36"
|
||||
Cohesion: 0.18
|
||||
Nodes (30): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), legacy_parent_id(), load_oss_id_to_url(), load_runtime_settings() (+22 more)
|
||||
Nodes (31): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), legacy_parent_id(), load_oss_id_to_url(), load_runtime_settings() (+23 more)
|
||||
|
||||
### Community 37 - "Community 37"
|
||||
Cohesion: 0.08
|
||||
Nodes (34): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no(), get_menu_list(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单), menu_badge_stats() (+26 more)
|
||||
Cohesion: 0.05
|
||||
Nodes (96): list_public_vehicle_plates(), Session, 地磅公共只读:免登车牌 options(现场填写页), 免登:按出入库/计划解析 tenant_no,返回 pl_vehicle 车牌(self + carrier)。, _resolve_tenant_no(), 运营端菜单接口(与 web-admin 前端静态路由 sqxp.ts 对齐,14 个一级菜单), export_inbound(), _export_orders() (+88 more)
|
||||
|
||||
### Community 38 - "Community 38"
|
||||
Cohesion: 0.11
|
||||
Nodes (18): parse_admin_request_json(), Any, Request, 运营 Web(/web/admin)JSON 请求体解析。 与 ApiCryptoMiddleware 配合:中间件未改写 body 时,在路由内解密 `{, 读取 JSON body;dict 时走 resolve_request_payload(明文 / 密文 / data 包装)。 Returns:, Config, decrypt_login_payload(), ensure_initialized() (+10 more)
|
||||
Cohesion: 0.22
|
||||
Nodes (10): Config, decrypt_login_payload(), ensure_initialized(), extract_login_credentials(), get_public_pem(), Any, 登录凭据 RSA 解密(与前端 JSEncrypt PKCS#1 v1.5 兼容)。, Base64 密文 -> JSON 对象(须含 username、password、ts 毫秒时间戳)。 (+2 more)
|
||||
|
||||
### Community 39 - "Community 39"
|
||||
Cohesion: 0.14
|
||||
Nodes (42): assign_clues(), check_convert(), check_duplicate_clue(), convert_clue(), create_clue(), _enrich_user_names(), _ensure_clue_in_scope(), create_clue_follow() (+34 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (42): clue_follow_detail(), assign_clues(), check_convert(), check_duplicate_clue(), convert_clue(), create_clue(), _enrich_user_names(), _ensure_clue_in_scope() (+34 more)
|
||||
|
||||
### Community 40 - "Community 40"
|
||||
Cohesion: 0.16
|
||||
Nodes (32): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), _enrich_change_rows(), execute_change(), export_contract_changes(), export_contract_templates() (+24 more)
|
||||
Nodes (27): CRM 合同子模块路由 — 变更/模板/审批独立页, register_contract_sub_routes(), _change_row_to_dict(), create_contract_change(), execute_change(), export_contract_changes(), export_contract_templates(), _get_change_row() (+19 more)
|
||||
|
||||
### Community 41 - "Community 41"
|
||||
Cohesion: 0.22
|
||||
Nodes (27): export_inbound(), _export_orders(), export_outbound(), _get_by_plan(), get_inbound(), get_inbound_by_plan(), _get_order(), get_outbound() (+19 more)
|
||||
Cohesion: 0.17
|
||||
Nodes (33): _get_by_plan(), get_inbound(), get_inbound_by_plan(), _get_order(), get_outbound(), get_outbound_by_plan(), inbound_site_url(), list_inbound() (+25 more)
|
||||
|
||||
### Community 42 - "Community 42"
|
||||
Cohesion: 0.19
|
||||
@@ -393,63 +398,63 @@ Nodes (36): BxExportBodyBase, create_invoice(), delete_invoice(), export_invoice
|
||||
|
||||
### Community 44 - "Community 44"
|
||||
Cohesion: 0.14
|
||||
Nodes (32): approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), create_process_def(), delete_process_def(), _enrich_task_list(), export_completed_tasks(), export_my_instances() (+24 more)
|
||||
Nodes (23): _attach_history_products(), _build_history_page(), _build_page(), _get_by_token(), _history_status_label(), _models(), _parse_history_date(), date (+15 more)
|
||||
|
||||
### Community 45 - "Community 45"
|
||||
Cohesion: 0.24
|
||||
Nodes (54): AttachmentDownloadUrlBody, demo_xlsx_export(), DemoXlsxColumnSpec, DemoXlsxExportBody, DeptCreateBody, DeptExportBody, DeptUpdateBody, DictDataCreateBody (+46 more)
|
||||
Cohesion: 0.20
|
||||
Nodes (61): AttachmentDownloadUrlBody, demo_xlsx_export(), DemoXlsxColumnSpec, DemoXlsxExportBody, DeptCreateBody, DeptExportBody, DeptUpdateBody, DictDataCreateBody (+53 more)
|
||||
|
||||
### Community 46 - "Community 46"
|
||||
Cohesion: 0.09
|
||||
Nodes (59): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), _build_contract_name_from_parties(), _build_customer_address(), _contract_period_key(), contract_row_to_dict(), download_contract_pdf() (+51 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (31): register_contract_routes(), batch_assign_owner(), batch_submit_contract_approval(), download_contract_pdf(), _ensure_contract_in_scope(), finish_contract(), get_contract_row(), _get_contract_row_in_scope() (+23 more)
|
||||
|
||||
### Community 47 - "Community 47"
|
||||
Cohesion: 0.12
|
||||
Nodes (29): pool_rule_add(), pool_rule_delete(), pool_rule_detail(), pool_rule_execute(), pool_rule_list(), pool_rule_update(), pool_rule_update_status(), create_pool_rule() (+21 more)
|
||||
Cohesion: 0.31
|
||||
Nodes (15): ensure_crm_create_by_row_in_scope(), create_pool_rule(), delete_pool_rules(), execute_pool_rules(), _execute_single_rule(), get_pool_rule(), list_pool_rules(), Any (+7 more)
|
||||
|
||||
### Community 48 - "Community 48"
|
||||
Cohesion: 0.21
|
||||
Nodes (22): clear_target_products(), count_target_rows(), _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings() (+14 more)
|
||||
|
||||
### Community 49 - "Community 49"
|
||||
Cohesion: 0.18
|
||||
Nodes (16): create_expense_item(), delete_expense_item(), ExpenseItemExportBody, export_expense_items(), _flatten_expense_tree(), get_expense_item(), get_expense_item_tree(), Session (+8 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (20): create_expense_item(), delete_expense_item(), ExpenseItemExportBody, export_expense_items(), _flatten_expense_tree(), get_expense_item(), get_expense_item_tree(), Session (+12 more)
|
||||
|
||||
### Community 50 - "Community 50"
|
||||
Cohesion: 0.18
|
||||
Nodes (27): _apply_inventory_product_update(), _apply_inventory_update(), _base_query(), create_inventory(), create_link_for_plan(), delete_inventory(), _generate_batch_no(), _get_inventory() (+19 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (21): _build_driver_url(), get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, PlTransportSiteLink, 运输计划现场链接 pl_transport_site_link(与地磅出入库单解耦), TransportSiteLinkRead, _plan_type_to_business_type(), 按运输计划单据类型解析地磅往来单位(不区分 CRM 合同类型)。 - 入库单 inbound:供方 → party_a,其次 supplier_nam (+13 more)
|
||||
|
||||
### Community 51 - "Community 51"
|
||||
Cohesion: 0.22
|
||||
Nodes (21): _address_to_read(), _build_address_query(), create_transport_address(), delete_transport_address(), export_transport_addresses(), _get_address(), get_transport_address(), list_all_transport_addresses() (+13 more)
|
||||
Cohesion: 0.23
|
||||
Nodes (20): _address_to_read(), _build_address_query(), create_transport_address(), export_transport_addresses(), _get_address(), get_transport_address(), list_all_transport_addresses(), list_transport_addresses() (+12 more)
|
||||
|
||||
### Community 52 - "Community 52"
|
||||
Cohesion: 0.04
|
||||
Nodes (99): _attach_history_products(), _build_history_page(), _build_page(), _get_by_token(), _history_status_label(), _models(), _parse_history_date(), date (+91 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (29): _as_date(), _build_driver_url(), _build_public_page(), _format_file_size(), _format_plan_date(), get_public_transport(), get_public_transport_history(), _get_transport_by_token() (+21 more)
|
||||
|
||||
### Community 53 - "Community 53"
|
||||
Cohesion: 0.17
|
||||
Nodes (30): apply_biz_backfill(), BackfillRule, BizRef, build_biz_index(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows() (+22 more)
|
||||
Cohesion: 0.19
|
||||
Nodes (28): apply_biz_backfill(), BackfillRule, BizRef, build_biz_index(), count_target_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows() (+20 more)
|
||||
|
||||
### Community 54 - "Community 54"
|
||||
Cohesion: 0.13
|
||||
Nodes (27): PlCert, CertRead, 运输计划 - 安排运输时车辆/人员/证件资源快照 Schema, SnapshotCertRead, SnapshotPersonnelRow, TransportResourceSnapshot, certs_to_read(), list_owner_certs() (+19 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (23): PlCert, 运输计划 - 安排运输时车辆/人员/证件资源快照 Schema, SnapshotCertRead, SnapshotPersonnelRow, TransportResourceSnapshot, list_owner_certs(), list_owner_certs_batch(), _normalize_cert_row() (+15 more)
|
||||
|
||||
### Community 55 - "Community 55"
|
||||
Cohesion: 0.04
|
||||
Nodes (83): category_add(), category_update(), invoice_info_add(), invoice_info_by_customer(), _invoice_info_by_customer_impl(), invoice_info_delete(), invoice_info_list(), invoice_info_set_default() (+75 more)
|
||||
Nodes (98): category_add(), category_delete(), category_tree(), category_update(), _map_product_export_column_keys(), opportunity_add(), opportunity_assign(), opportunity_batch_update_expect_date() (+90 more)
|
||||
|
||||
### Community 56 - "Community 56"
|
||||
Cohesion: 0.09
|
||||
Nodes (46): ContractGapExportBody, PlanExportBody, BizAttachment, PlCarrier, PlDocumentReminder, PlDriver, PlInboundOrder, PlInboundOrderItem (+38 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (27): PlPlanProductBrandQty, 计划产品归档品牌数量 pl_plan_product_brand_qty, load_brand_qtys_by_plan_product_ids(), persist_plan_product_brand_qtys(), Any, Decimal, Session, 按计划产品明细 ID 批量加载归档品牌数量(brandId/brandName/qty)。 (+19 more)
|
||||
|
||||
### Community 57 - "Community 57"
|
||||
Cohesion: 0.16
|
||||
Nodes (21): create_leave(), delete_leave(), export_leaves(), get_leave(), _leave_local_callback(), leave_workflow_callback(), LeaveExportBody, list_leaves() (+13 more)
|
||||
Cohesion: 0.12
|
||||
Nodes (23): 地磅 API 路由聚合 — REST 风格,协议对齐原 simple-dibang-xiaoshou。, API 路由包 — 山峡化工生产一体化门户, create_leave(), delete_leave(), export_leaves(), get_leave(), _leave_local_callback(), leave_workflow_callback() (+15 more)
|
||||
|
||||
### Community 58 - "Community 58"
|
||||
Cohesion: 0.18
|
||||
Nodes (21): allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title(), is_auto_reimburse_title(), parse_optional_date(), parse_reimburse_date(), preview_reimburse_title_seq() (+13 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (34): ReimburseDetailOut, filter_current_cycle_approvals(), 审批轮次过滤 — 驳回后重新提交时,进度接口仅展示当前轮次。, 审批进度仅展示当前轮次;完整历史由 get_approval_history 返回。, allocate_reimburse_title_seq(), format_reimburse_title(), generate_apply_code(), generate_title() (+26 more)
|
||||
|
||||
### Community 59 - "Community 59"
|
||||
Cohesion: 0.20
|
||||
@@ -457,51 +462,51 @@ Nodes (28): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_r
|
||||
|
||||
### Community 60 - "Community 60"
|
||||
Cohesion: 0.21
|
||||
Nodes (17): apply_crm_create_by_scope(), _apply_list_filters(), create_supplier_info(), list_all_supplier_info(), list_supplier_info(), Any, Session, CRM 供方信息 CRUD — 对照 CrmSupplierInfoServiceImpl.java (+9 more)
|
||||
Nodes (16): apply_crm_create_by_scope(), CRM 数据权限辅助(负责人 owner_user_id + 标准 create_by/create_dept_id)。, _apply_list_filters(), create_supplier_info(), list_all_supplier_info(), list_supplier_info(), Any, Session (+8 more)
|
||||
|
||||
### Community 61 - "Community 61"
|
||||
Cohesion: 0.10
|
||||
Nodes (47): cancel_plan(), _generate_notify_message(), 作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。, PlPlan, PlTransportDbLink, 运输-地磅出入库关联 pl_transport_db_link, _apply_plan_quantity_delta(), _create_db_inventory() (+39 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (42): PlTransportDbLink, 运输-地磅出入库关联 pl_transport_db_link, get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生 (+34 more)
|
||||
|
||||
### Community 62 - "Community 62"
|
||||
Cohesion: 0.08
|
||||
Nodes (24): category_delete(), category_tree(), _map_product_export_column_keys(), product_add(), product_delete(), product_detail(), product_export(), product_list() (+16 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (23): assert_quote_editable_for_update(), calculate_quote_amount(), create_new_version(), create_quote(), _decimal_value(), _enrich_contact_fields(), _enrich_supplier_name(), generate_quote_no() (+15 more)
|
||||
|
||||
### Community 63 - "Community 63"
|
||||
Cohesion: 0.24
|
||||
Nodes (16): _cargo_stats(), get_dashboard_stats(), get_inbound_by_cargo(), get_inbound_by_partner_cargo(), get_outbound_by_cargo(), get_outbound_by_partner_cargo(), _partner_cargo_stats(), Session (+8 more)
|
||||
Nodes (17): _cargo_stats(), get_dashboard_stats(), get_inbound_by_cargo(), get_inbound_by_partner_cargo(), get_outbound_by_cargo(), get_outbound_by_partner_cargo(), _partner_cargo_stats(), Session (+9 more)
|
||||
|
||||
### Community 64 - "Community 64"
|
||||
Cohesion: 0.15
|
||||
Nodes (23): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), Session, save_workflow_nodes(), update_workflow() (+15 more)
|
||||
Cohesion: 0.16
|
||||
Nodes (20): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), Session, save_workflow_nodes(), update_workflow() (+12 more)
|
||||
|
||||
### Community 65 - "Community 65"
|
||||
Cohesion: 0.09
|
||||
Nodes (63): cancel_apply(), create_apply(), create_process(), delete_applies(), delete_processes(), export_applies(), export_process_board(), get_apply() (+55 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (42): PlVehicleMaintenanceApply, PlVehicleMaintenanceProcess, 车辆维保申请 pl_vehicle_maintenance_apply, 车辆维保处理登记 pl_vehicle_maintenance_process, Decimal, VehicleMaintenanceApplyCreate, VehicleMaintenanceApplyRead, VehicleMaintenanceApplyReminder (+34 more)
|
||||
|
||||
### Community 66 - "Community 66"
|
||||
Cohesion: 0.16
|
||||
Nodes (18): ApiRequestLogMiddleware, _claims_from_auth(), _format_body_bytes(), _persist_log(), Any, Request, 统一记录 API 请求/响应出入参的中间件, _redact_obj() (+10 more)
|
||||
Cohesion: 0.20
|
||||
Nodes (16): ApiCryptoMiddleware, ApiRequestLogMiddleware, _claims_from_auth(), _format_body_bytes(), _persist_log(), Any, Request, 统一记录 API 请求/响应出入参的中间件 (+8 more)
|
||||
|
||||
### Community 67 - "Community 67"
|
||||
Cohesion: 0.12
|
||||
Nodes (36): get_password_hash(), Namespace, build_merged_users(), bx_role_labels(), check_minio(), check_mysql(), check_redis(), _clip() (+28 more)
|
||||
|
||||
### Community 68 - "Community 68"
|
||||
Cohesion: 0.18
|
||||
Nodes (24): delete_plan(), delete_carrier(), unbind_vehicle_driver(), delete_plan(), _actor_ids(), _actor_names(), assert_row_deletable_by_creator(), assert_rows_deletable_by_creator() (+16 more)
|
||||
Cohesion: 0.17
|
||||
Nodes (25): delete_carrier(), delete_vehicle(), unbind_vehicle_driver(), delete_plan(), delete_transport_address(), _actor_ids(), _actor_names(), assert_row_deletable_by_creator() (+17 more)
|
||||
|
||||
### Community 69 - "Community 69"
|
||||
Cohesion: 0.13
|
||||
Nodes (28): _append_user_scope_conditions(), apply_data_scope(), assert_row_in_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 合并多角色数据范围为 dept_ids / user_ids 并集。 (+20 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (23): _append_user_scope_conditions(), apply_data_scope(), _collect_scope_ids(), _get_child_dept_ids(), get_user_dept_id(), Session, 合并多角色数据范围为 dept_ids / user_ids 并集。, 根据用户角色的数据权限过滤查询。 适用于业务单据列表/详情(报销单、客户、运单等)。 以下场景 SHALL NOT 调用本函数(仅租户隔离即 (+15 more)
|
||||
|
||||
### Community 70 - "Community 70"
|
||||
Cohesion: 0.18
|
||||
Nodes (29): _dec(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env() (+21 more)
|
||||
|
||||
### Community 71 - "Community 71"
|
||||
Cohesion: 0.14
|
||||
Nodes (23): CarrierAuditReject, CarrierBase, CarrierCreate, CarrierListResponse, CarrierQualificationBase, CarrierUpdate, DriverBase, DriverCreate (+15 more)
|
||||
Cohesion: 0.08
|
||||
Nodes (33): approve_carrier(), create_carrier(), get_carrier(), update_carrier(), carrier_to_read(), CarrierBase, CarrierCreate, CarrierQualificationBase (+25 more)
|
||||
|
||||
### Community 72 - "Community 72"
|
||||
Cohesion: 0.25
|
||||
@@ -512,44 +517,44 @@ Cohesion: 0.20
|
||||
Nodes (25): derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_oss_id_to_url(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+17 more)
|
||||
|
||||
### Community 74 - "Community 74"
|
||||
Cohesion: 0.18
|
||||
Nodes (26): _apply_weighing_product_update(), _apply_weighing_update(), _base_query(), create_weighing(), delete_weighing(), _get_weighing(), get_weighing_related(), _kg_to_ton() (+18 more)
|
||||
Cohesion: 0.06
|
||||
Nodes (119): _apply_inventory_product_update(), _apply_inventory_update(), _base_query(), create_inventory(), create_link_for_plan(), delete_inventory(), export_inventory(), _generate_batch_no() (+111 more)
|
||||
|
||||
### Community 75 - "apply_crm_create_by_scope"
|
||||
Cohesion: 0.21
|
||||
Nodes (12): get_current_time(), parse_datetime(), datetime, create_oss(), get_oss_by_id(), get_oss_by_url(), Session, 按主键 id 查询附件(兼容旧 CRM 雪花 oss_id 迁入后的记录) (+4 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (21): generate_uuid(), get_current_time(), parse_datetime(), datetime, allocate_next_biz_no(), _format_biz_no(), _prefix_for(), datetime (+13 more)
|
||||
|
||||
### Community 76 - "opportunity_follow.py"
|
||||
Cohesion: 0.21
|
||||
Nodes (26): _apply_plan_product_update(), _apply_plan_update(), AutoGenerateMonthlyResult, _base_query(), create_plan(), _generate_plan_no(), get_plan(), _get_plan_by_id_only() (+18 more)
|
||||
Cohesion: 0.13
|
||||
Nodes (22): _build_quote_filters(), _fill_contract_linked_count(), list_quotes(), _parse_optional_date(), _parse_optional_datetime(), _period_key(), Any, date (+14 more)
|
||||
|
||||
### Community 77 - "Community 77"
|
||||
Cohesion: 0.11
|
||||
Nodes (12): get_wechat_pay_client(), get_wechat_pay_v2(), Any, 微信支付工具模块 支持微信支付 V3 API 文档参考: https://pay.weixin.qq.com/docs/v3/apis/index.html, 统一下单接口 (V3) Args: out_trade_no: 商户订单号 total_amo, 申请退款 Args: out_trade_no: 商户订单号 total_amount: 订单, 小程序调起支付的二次签名参数(与公众号 JSAPI 规则一致), 统一下单 (V2 API) Args: out_trade_no: 商户订单号 total_f (+4 more)
|
||||
|
||||
### Community 78 - "Community 78"
|
||||
Cohesion: 0.14
|
||||
Nodes (20): bind_biz(), delete_attachment(), download_file(), list_by_biz(), _parse_id_list(), preview_attachment(), Session, UploadFile (+12 more)
|
||||
Cohesion: 0.24
|
||||
Nodes (7): camel_to_snake(), CRUDBase, get_model_attr(), HistoryCRUD, Any, Session, ModelType
|
||||
|
||||
### Community 79 - "PlCarrier"
|
||||
Cohesion: 0.29
|
||||
Nodes (12): build_name_pinyin_abbr(), normalize_name_pinyin_abbr(), 名称拼音首字母缩写:库内存小写,检索时大小写不敏感。, 保存时解析拼音字段。 - submitted_provided=True:用提交值(空则按 name 生成) - 否则:已有非空 existi, resolve_name_pinyin_abbr(), test_chinese_and_alnum(), test_empty_and_whitespace(), test_resolve_not_submitted_empty_existing_generates() (+4 more)
|
||||
|
||||
### Community 80 - "resolve_crm_product"
|
||||
Cohesion: 0.18
|
||||
Nodes (16): export_carriers(), list_carriers(), 导出承运商列表(当前筛选全量,或 ids 已选)。, carrier_to_read(), date, assert_carrier_eligible_for_transport(), carrier_agreement_expired(), carrier_audit_approved() (+8 more)
|
||||
Cohesion: 0.11
|
||||
Nodes (18): 供方全量列表(下拉)— Java: CrmSupplierInfoController.listAll, 供方详情 — Java: CrmSupplierInfoController.getInfo, 新增供方 — Java: CrmSupplierInfoController.add, 修改供方 — Java: CrmSupplierInfoController.edit, 删除供方 — Java: CrmSupplierInfoController.remove, supplier_info_add(), supplier_info_delete(), supplier_info_detail() (+10 more)
|
||||
|
||||
### Community 81 - "customer_follow.py"
|
||||
Cohesion: 0.20
|
||||
Nodes (21): cancel_apply(), create_apply(), create_disburse(), delete_applies(), delete_disburses(), export_urea_applies(), export_urea_disburse_board(), get_apply() (+13 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (17): 返回 (作废, 归档)。现场链接实际走入库/出库单公共页。, _resolve_io_order_link_flags(), _resolve_site_link_flags(), _resolve_driver_link_flags(), PublicTransportPageRead, PublicTransportSitePageRead, 运输计划司机/现场公共链接:归档后应标记并拦截写操作。, test_driver_link_flags_archived_when_plan_archived() (+9 more)
|
||||
|
||||
### Community 82 - "storage.py"
|
||||
Cohesion: 0.17
|
||||
Nodes (23): PlanContractGapRead, PlanProductRead, is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免), build_plan_contract_gap_read(), compute_contract_gap_sides(), _demander_gap_expr(), list_plan_contract_gaps() (+15 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (31): PlanContractGapRead, PlanContractLink, PlanProductRead, is_internal_customer_name(), 运输计划:内置山峡/云栋客户判定(合同可免), build_plan_contract_gap_read(), compute_contract_gap_sides(), _demander_gap_expr() (+23 more)
|
||||
|
||||
### Community 83 - "Community 83"
|
||||
Cohesion: 0.15
|
||||
Nodes (30): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), create_approval_records() (+22 more)
|
||||
Cohesion: 0.10
|
||||
Nodes (42): _advance_contract_after_approval(), approve_contract(), approve_contract_by_contract_id(), approve_pass(), approve_reject(), approve_transfer(), _build_approval_list_filters(), can_user_approve() (+34 more)
|
||||
|
||||
### Community 84 - "Community 84"
|
||||
Cohesion: 0.23
|
||||
@@ -564,12 +569,12 @@ Cohesion: 0.12
|
||||
Nodes (15): _db_pool_keepalive_loop(), _error_json(), lifespan(), Exception, Request, 数据库异常:返回 JSON 并保留 CORS 头,避免浏览器只报跨域错误, 未捕获异常:统一 JSON 500,确保跨域场景下仍有 Access-Control-Allow-Origin, 定期 ping MySQL,避免远程库/NAT 回收空闲 TCP 后首请求长时间卡住。 (+7 more)
|
||||
|
||||
### Community 87 - "Community 87"
|
||||
Cohesion: 0.10
|
||||
Nodes (34): can_user_approve(), 顺序审批:当前步骤 pending 且 is_current=1。 同一审批人若同时存在历史已处理记录与当前轮 pending,优先取 pending, approve_quote(), can_user_approve(), create_approval_records(), delete_pending_approvals(), get_quote_approval(), invalidate_all_approvals() (+26 more)
|
||||
Cohesion: 0.26
|
||||
Nodes (16): _build_public_page(), _build_site_product_read(), _format_file_size(), get_public_site(), _get_site_link_by_token(), _parse_feedback_images(), Session, UploadFile (+8 more)
|
||||
|
||||
### Community 88 - "CrmProduct"
|
||||
Cohesion: 0.40
|
||||
Nodes (12): _enrich_follow_dict(), get_follow(), list_follows(), list_follows_by_customer(), Any, Session, _row_to_dict(), soft_delete_follow() (+4 more)
|
||||
Nodes (12): create_follow(), _enrich_follow_dict(), get_follow(), list_follows(), list_follows_by_customer(), Any, Session, _row_to_dict() (+4 more)
|
||||
|
||||
### Community 89 - "pl_ocr_service.py"
|
||||
Cohesion: 0.19
|
||||
@@ -580,28 +585,28 @@ Cohesion: 0.15
|
||||
Nodes (9): 微信消息通知服务 支持微信小程序模板消息推送 使用方式: from app.core.wechat_message import WechatMes, 发送订单状态通知 Args: openid: 用户openid order_n, 发送支付成功通知 Args: openid: 用户openid order_n, 发送配送通知 Args: openid: 配送员openid task_no:, 发送配送时效预警 Args: openid: 配送员openid task_n, 发送退款结果通知 Args: openid: 用户openid order_n, 发送催单通知给配送员 Args: deliver_openid: 配送员openid, 发送模板消息 Args: openid: 用户openid template_ (+1 more)
|
||||
|
||||
### Community 91 - "opportunity_product.py"
|
||||
Cohesion: 0.33
|
||||
Nodes (11): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+3 more)
|
||||
Cohesion: 0.40
|
||||
Nodes (9): create_leave(), get_leave(), list_leaves(), Any, Session, _row_to_dict(), soft_delete_leave(), update_leave() (+1 more)
|
||||
|
||||
### Community 92 - "Community 92"
|
||||
Cohesion: 0.20
|
||||
Nodes (21): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), _assert_users_exist(), get_setting() (+13 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (22): _assert_users_exist(), get_setting(), Any, Session, _row_to_dict(), save_setting(), _assert_users_exist(), get_setting() (+14 more)
|
||||
|
||||
### Community 93 - "api_request_log_middleware.py"
|
||||
Cohesion: 0.29
|
||||
Nodes (10): normalize_attachment_csv(), extract_minio_object_key(), join_relative_urls(), MinIO 附件 URL 规范化(数据迁移共用)。 背景 ---- CRM / 地磅 / 报销与 shanxia2.0 共用同一 MinIO(bucket 默, 业务表 OSS ID 串 → 相对 URL 串(用于客户证照、跟进附件等)。, 去掉预签名 query(``?X-Amz-...``)。, 将绝对/相对 URL 规范为 MinIO object key(不含 bucket)。, resolve_oss_id_csv() (+2 more)
|
||||
Cohesion: 0.24
|
||||
Nodes (11): extract_minio_object_key(), join_relative_urls(), normalize_oss_storage_url(), MinIO 附件 URL 规范化(数据迁移共用)。 背景 ---- CRM / 地磅 / 报销与 shanxia2.0 共用同一 MinIO(bucket 默, 业务表 OSS ID 串 → 相对 URL 串(用于客户证照、跟进附件等)。, 去掉预签名 query(``?X-Amz-...``)。, 将绝对/相对 URL 规范为 MinIO object key(不含 bucket)。, 迁移 CRM ``sys_oss`` 行:``url`` + ``file_name`` → 门户相对路径。 (+3 more)
|
||||
|
||||
### Community 94 - "assert_contract_editable_for_update"
|
||||
Cohesion: 0.60
|
||||
Nodes (3): assert_contract_editable_for_update(), test_assert_allows_editable(), test_assert_rejects_non_editable()
|
||||
|
||||
### Community 95 - "test_pl_public_link_archived.py"
|
||||
Cohesion: 0.13
|
||||
Nodes (18): pool_customer_assign(), pool_customer_claim(), pool_customer_list(), pool_record_detail(), pool_record_list(), get_pool_record(), list_pool_records(), Any (+10 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (17): get_pool_record(), list_pool_records(), Any, Session, _row_to_dict(), total_pages(), CrmCustomerPool, check_customer_protect_time() (+9 more)
|
||||
|
||||
### Community 96 - "minio_url.py"
|
||||
Cohesion: 0.26
|
||||
Nodes (17): get_plan_related(), format_datetime(), _create_by_name(), datetime_end_of_day(), fmt_date(), fmt_datetime(), inventory_date_to_api(), inventory_to_read() (+9 more)
|
||||
Cohesion: 0.15
|
||||
Nodes (14): invoice_info_add(), invoice_info_by_customer(), _invoice_info_by_customer_impl(), invoice_info_delete(), invoice_info_list(), invoice_info_set_default(), invoice_info_update(), 按客户ID查询开票信息(与 by-customer 等价) (+6 more)
|
||||
|
||||
### Community 97 - "contact.py"
|
||||
Cohesion: 0.22
|
||||
@@ -612,8 +617,8 @@ Cohesion: 0.35
|
||||
Nodes (11): create_tenant(), get_tenant(), list_tenants(), Any, Session, _row_to_dict(), soft_delete_tenant(), tenant_no_exists() (+3 more)
|
||||
|
||||
### Community 99 - "redis_client.py"
|
||||
Cohesion: 0.10
|
||||
Nodes (30): bind_vehicle_driver(), calc_age_from_chinese_id_card(), date, 从 18 位身份证号计算周岁。号码不完整或出生日期无效时返回 None。, generate_uuid(), PlVehiclePersonnel, 车辆-人员关联表 pl_vehicle_personnel, VehiclePersonnelRow (+22 more)
|
||||
Cohesion: 0.18
|
||||
Nodes (14): calc_age_from_chinese_id_card(), date, 从 18 位身份证号计算周岁。号码不完整或出生日期无效时返回 None。, Session, 运输计划 - 人员 upsert 与车辆-人员关联保存, 按 18 位身份证号重算 pl_personnel.age,仅更新算出值与库中不一致的记录。返回更新条数。, 按 personnelId → phone → name 弱匹配 upsert,返回 personnel_id。, refresh_personnel_ages_from_id_card() (+6 more)
|
||||
|
||||
### Community 100 - "price_letter_detail"
|
||||
Cohesion: 0.27
|
||||
@@ -624,8 +629,8 @@ Cohesion: 0.29
|
||||
Nodes (15): clue_statistics_level(), clue_statistics_overview(), clue_statistics_owner(), clue_statistics_source(), clue_statistics_trend(), _apply_create_range(), _base_query(), get_clue_level_statistics() (+7 more)
|
||||
|
||||
### Community 102 - "crm_supplier_hazard.py"
|
||||
Cohesion: 0.14
|
||||
Nodes (37): approve_carrier(), create_carrier(), create_driver(), create_personnel(), create_vehicle(), export_drivers(), export_personnel(), export_vehicles() (+29 more)
|
||||
Cohesion: 0.12
|
||||
Nodes (45): bind_vehicle_driver(), create_driver(), create_personnel(), create_vehicle(), delete_driver(), delete_personnel(), get_driver(), get_personnel() (+37 more)
|
||||
|
||||
### Community 103 - "pl_internal_customer.py"
|
||||
Cohesion: 0.36
|
||||
@@ -636,24 +641,24 @@ Cohesion: 0.29
|
||||
Nodes (15): create_price_letter(), get_price_letter(), list_price_letters(), _parse_date(), Any, date, Session, _row_to_dict() (+7 more)
|
||||
|
||||
### Community 105 - "pool_customer_assign"
|
||||
Cohesion: 0.24
|
||||
Nodes (12): get_last_month_range(), month_range(), date, Session, 地磅计划按月自动生成 — 迁移自 simple-dibang-xiaoshou/auto-create-plan/auto_create_monthly_pla, 按月自动生成采购计划。 - 默认仅在每月 1 日执行(force=True 时跳过该限制,供手动触发验收) - 遍历所有租户,按上月计划模板生, run_auto_generate_monthly_plans(), default_execution_status() (+4 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (13): pool_rule_add(), pool_rule_delete(), pool_rule_detail(), pool_rule_execute(), pool_rule_update(), pool_rule_update_status(), PoolRuleAddBody, PoolRuleDeleteBody (+5 more)
|
||||
|
||||
### Community 106 - "site.py"
|
||||
Cohesion: 0.19
|
||||
Nodes (27): CarrierExportBody, delete_driver(), delete_personnel(), delete_vehicle(), DriverExportBody, paste_recognize_commit(), PersonnelExportBody, VehicleExportBody (+19 more)
|
||||
Cohesion: 0.30
|
||||
Nodes (15): paste_recognize_commit(), ConflictAction, PasteCommitBody, PasteCommitResult, PastePersonnelIn, PasteVehicleIn, 运输计划 - 三方粘贴识别提交 Schema, commit_paste_recognize() (+7 more)
|
||||
|
||||
### Community 107 - "apply_pl_scope"
|
||||
Cohesion: 0.08
|
||||
Nodes (57): CompletedTaskExportBody, MyInstanceExportBody, PendingTaskExportBody, ProcessDefCreateBody, ProcessDefExportBody, ProcessDefUpdateBody, PublishVersionBody, 审批意见:前端传 commentText,兼容 comment。 (+49 more)
|
||||
Cohesion: 0.04
|
||||
Nodes (111): DocumentReminderExportBody, InventoryLedgerExportBody, approve_task(), _assert_wf_instance_in_scope(), _business_type_label(), CompletedTaskExportBody, _enrich_task_list(), export_completed_tasks() (+103 more)
|
||||
|
||||
### Community 108 - "statistics.py"
|
||||
Cohesion: 0.20
|
||||
Nodes (24): count_source_rows(), derive_source_url(), fetch_portal_admin_id(), fetch_source_rows(), legacy_id_to_str(), load_runtime_settings(), load_settings_env(), load_user_mapping() (+16 more)
|
||||
|
||||
### Community 109 - "monitor.py"
|
||||
Cohesion: 0.30
|
||||
Nodes (12): operlog_detail(), operlog_export(), operlog_list(), OperLogExportBody, Session, 导出操作日志(当前筛选全量,或 ids 已选)。, 操作日志分页列表(基于 API 请求日志适配 RuoYi OperLog 结构), _user_info() (+4 more)
|
||||
Cohesion: 0.22
|
||||
Nodes (10): apply_product_alias_display(), load_crm_product_alias_maps(), Session, 运输计划产品展示:标准名 / 别名拆分(与前端 applyAliasDisplayMeta 对齐), 就地写入 item 的 productName(标准名)与 aliasName。, 从已存 productName 反推别名;等于标准名或不在别名列表 → None。, 批量加载 CRM 标准名与别名选项。返回 (standard_name_by_id, alias_options_by_id)。, 返回 (展示用产品名称, 别名)。 产品名称优先 CRM 标准名;别名仅在已存名命中别名列表时返回。 (+2 more)
|
||||
|
||||
### Community 110 - "list_duty_staff_users"
|
||||
Cohesion: 0.33
|
||||
@@ -664,16 +669,16 @@ Cohesion: 0.27
|
||||
Nodes (11): create_dict_data(), get_dict_data(), list_dict_data(), list_dict_data_options(), Any, Session, 字典数据 CRUD(sys_dict_data), 字典下拉选项:租户主数据,忽略数据范围(user_info 保留兼容调用方,不参与过滤)。 (+3 more)
|
||||
|
||||
### Community 112 - ".to_tenant_user_dict"
|
||||
Cohesion: 0.19
|
||||
Nodes (20): statistics_follow(), statistics_industry(), statistics_level(), statistics_overview(), statistics_owner(), statistics_source(), statistics_trend(), _customer_base_query() (+12 more)
|
||||
Cohesion: 0.45
|
||||
Nodes (11): _customer_base_query(), get_follow_statistics(), get_industry_statistics(), get_level_statistics(), get_overview_statistics(), get_owner_statistics(), get_source_statistics(), get_trend_statistics() (+3 more)
|
||||
|
||||
### Community 113 - "dict_type.py"
|
||||
Cohesion: 0.35
|
||||
Nodes (11): create_dict_type(), dict_type_code_exists(), get_dict_type(), list_dict_types(), Any, Session, 字典类型 CRUD(sys_dict_type), _row_to_dict() (+3 more)
|
||||
|
||||
### Community 115 - "site.py"
|
||||
Cohesion: 0.28
|
||||
Nodes (14): _assert_editable(), _build_public_page(), _format_file_size(), _get_inventory_by_token(), get_public_inventory(), _parse_feedback_images(), Session, UploadFile (+6 more)
|
||||
Cohesion: 0.21
|
||||
Nodes (17): _assert_editable(), _build_public_page(), _format_file_size(), _get_inventory_by_token(), get_public_inventory(), _parse_feedback_images(), Session, UploadFile (+9 more)
|
||||
|
||||
### Community 116 - "Community 116"
|
||||
Cohesion: 0.17
|
||||
@@ -689,11 +694,11 @@ Nodes (24): batch_insert_contract_products(), calculate_subtotal(), _decimal_val
|
||||
|
||||
### Community 119 - "Community 119"
|
||||
Cohesion: 0.12
|
||||
Nodes (37): CertRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), is_huolala_trailer_no(), match_required_cert_name(), _missing_field_labels() (+29 more)
|
||||
Nodes (38): CertRow, VehiclePersonnelRow, _cert_row_complete(), collect_required_cert_errors(), _find_cert_for_required(), get_required_personnel_cert_names(), is_huolala_trailer_no(), match_required_cert_name() (+30 more)
|
||||
|
||||
### Community 120 - "sqlalchemy_exception_handler"
|
||||
Cohesion: 0.35
|
||||
Nodes (9): business_type_from_path(), title_from_path(), get_oper_log(), _oper_log_row_in_scope(), _oper_status(), Any, Session, 操作日志:基于 sys_api_request_log 适配 RuoYi OperLog 视图 (+1 more)
|
||||
Cohesion: 0.25
|
||||
Nodes (14): 获取用户所有角色的数据权限配置。 返回: [{"data_scope": str, "details": [SysRoleDataScopeDetai, _resolve_user_role_scopes(), business_type_from_path(), title_from_path(), _apply_oper_log_scope(), get_oper_log(), list_oper_logs(), _oper_log_row_in_scope() (+6 more)
|
||||
|
||||
### Community 121 - "post.py"
|
||||
Cohesion: 0.39
|
||||
@@ -704,24 +709,24 @@ Cohesion: 0.39
|
||||
Nodes (10): create_site(), get_site(), list_sites(), Any, Session, _row_to_dict(), site_code_exists(), soft_delete_site() (+2 more)
|
||||
|
||||
### Community 123 - "customer_options"
|
||||
Cohesion: 0.15
|
||||
Nodes (18): export_plans(), list_plans(), _plan_plate_match(), _plan_product_name_exists(), 列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。, 导出计划列表(当前筛选全量,或 ids 已选)。, _resolve_list_product_name(), PlanListResponse (+10 more)
|
||||
Cohesion: 0.12
|
||||
Nodes (30): export_plans(), list_plans(), _plan_plate_match(), _plan_product_name_exists(), 列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。, 导出计划列表(当前筛选全量,或 ids 已选)。, _resolve_list_product_name(), apply_pl_scope() (+22 more)
|
||||
|
||||
### Community 124 - "datetime_parse.py"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): parse_optional_plan_datetime(), datetime, 运输计划相关日期时间解析:前端 date-picker 仅传 YYYY-MM-DD。
|
||||
|
||||
### Community 125 - "resolve_crm_product"
|
||||
Cohesion: 0.27
|
||||
Nodes (10): apply_product_snapshot_to_inventory(), ProductSnapshot, Session, 地磅模块 — CRM 产品解析与快照写入。, 校验 CRM 产品并返回名称/规格快照。新建单据 product_id 必填。 require_on_shelf=False 用于运输计划联动地磅等历, resolve_crm_product(), _product(), resolve_crm_product:运输联动场景允许已下架产品。 (+2 more)
|
||||
Cohesion: 0.39
|
||||
Nodes (8): get_redis_client(), get_sync_redis_client(), Redis, 共享 Redis 客户端(同步:会话鉴权;异步:API 加密 nonce)。, 同步 Redis(auth 会话等,在线程池中调用)。, 异步 Redis(API 加密 nonce 等中间件)。, _redis_common_kwargs(), redis_enabled()
|
||||
|
||||
### Community 126 - "customer_pool.py"
|
||||
Cohesion: 0.36
|
||||
Nodes (13): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), menu_name_exists(), Any (+5 more)
|
||||
Nodes (12): _build_tree(), _cascade_soft_delete(), create_menu(), get_menu(), list_menus(), list_menus_tree(), menu_name_exists(), Any (+4 more)
|
||||
|
||||
### Community 127 - "allocate_next_biz_no"
|
||||
Cohesion: 0.33
|
||||
Nodes (8): allocate_next_biz_no(), _format_biz_no(), _prefix_for(), datetime, Session, 业务协议号自动生成:XBCC / JZCC + YYYYMMDD + 6 位序号, 原子分配下一个业务协议号。 须在 create 事务内调用;使用 MySQL LAST_INSERT_ID 保证并发安全。, BizNoKind
|
||||
Cohesion: 0.50
|
||||
Nodes (4): ApiRequestLogCRUD, Session, SysApiRequestLog, SysApiRequestLogHis
|
||||
|
||||
### Community 128 - "product_allowed"
|
||||
Cohesion: 0.28
|
||||
@@ -732,20 +737,20 @@ Cohesion: 0.12
|
||||
Nodes (24): _auto_contract_name_body(), generate_contract_name(), 按面板单位全称精确匹配交易主体/客户主数据,取 shortName;对不上则用全称。, 前端预览误用单位全称时,名称片段会等于面板/客户/开票全称。, 按面板供方(partyA)-需方(partyB)生成:{供方简称}-{需方简称}({合同编号})。 - 名称为空:按主数据简称自动生成 - 名, resolve_party_short_name(), _strip_contract_name_no_suffix(), _user_contract_name_uses_party_full_name() (+16 more)
|
||||
|
||||
### Community 130 - "contact.py"
|
||||
Cohesion: 0.25
|
||||
Nodes (7): contact_add(), contact_delete(), contact_update(), ContactCreateBody, ContactDeleteBody, ContactUpdateBody, CRM 联系人 Pydantic Schemas
|
||||
Cohesion: 0.18
|
||||
Nodes (10): contact_add(), contact_delete(), contact_update(), ContactByCustomerBody, ContactCreateBody, ContactDeleteBody, ContactDetailBody, ContactSetPrimaryBody (+2 more)
|
||||
|
||||
### Community 131 - "customer_update"
|
||||
Cohesion: 0.29
|
||||
Nodes (5): customer_create(), customer_update(), customer_name_exists(), CustomerCreateBody, CustomerUpdateBody
|
||||
Cohesion: 0.10
|
||||
Nodes (19): customer_create(), customer_delete(), customer_options(), customer_update(), 客户下拉选项(租户内只读,不做 owner 数据权限), customer_name_exists(), CustomerAssignPoolBody, CustomerCheckDuplicateBody (+11 more)
|
||||
|
||||
### Community 132 - "context.py"
|
||||
Cohesion: 0.23
|
||||
Nodes (19): create_contact(), get_contact(), list_contacts_by_customer(), _parse_optional_date(), Any, date, Session, _row_to_dict() (+11 more)
|
||||
Cohesion: 0.28
|
||||
Nodes (17): create_contact(), get_contact(), list_contacts(), list_contacts_by_customer(), _parse_optional_date(), Any, date, Session (+9 more)
|
||||
|
||||
### Community 133 - "opportunity_export"
|
||||
Cohesion: 0.48
|
||||
Nodes (7): _opp_list_kwargs(), opportunity_export(), opportunity_kanban(), opportunity_list(), opportunity_mine_list(), OpportunityKanbanBody, OpportunityListBody
|
||||
Cohesion: 0.40
|
||||
Nodes (5): _avatar_url_field(), _build_user_info_payload(), 与 web-admin 静态路由 meta.roles(admin/super_admin)对齐的单元素数组。, 与 web-admin `userInfo` 字段约定一致。, _web_role_list()
|
||||
|
||||
### Community 134 - "response.py"
|
||||
Cohesion: 0.29
|
||||
@@ -756,12 +761,12 @@ Cohesion: 0.50
|
||||
Nodes (4): 简易搜索:计划编号 / 客户(供应商) / 车牌 / 承运商名称。, unsettled_plans_q_filter(), 未结算计划简易搜索:q 应覆盖计划编号/客户/车牌/承运商名称。, test_unsettled_plans_q_filter_includes_carrier_and_plate()
|
||||
|
||||
### Community 136 - "Community 136"
|
||||
Cohesion: 0.19
|
||||
Nodes (18): create_role(), get_role(), get_role_data_scope(), get_role_menu_ids(), list_roles(), Any, Session, 角色 CRUD(sys_role / sys_role_menu / sys_role_data_scope_detail) (+10 more)
|
||||
Cohesion: 0.26
|
||||
Nodes (14): create_role(), get_role(), get_role_data_scope(), get_role_menu_ids(), list_roles(), Any, Session, 角色 CRUD(sys_role / sys_role_menu / sys_role_data_scope_detail) (+6 more)
|
||||
|
||||
### Community 137 - "customer_options"
|
||||
Cohesion: 0.50
|
||||
Nodes (4): customer_options(), 客户下拉选项(租户内只读,不做 owner 数据权限), CustomerOptionsBody, 客户下拉选项请求体(租户内只读搜索,不做 owner 数据权限)
|
||||
Cohesion: 0.40
|
||||
Nodes (3): Any, 供 get_tenant_no 等门户工具使用。, 与门户 JWT / apply_data_scope 所需的 user_info 字段对齐。
|
||||
|
||||
### Community 138 - "Community 138"
|
||||
Cohesion: 0.33
|
||||
@@ -771,13 +776,13 @@ Nodes (19): check_python(), create_venv(), ensure_dirs(), ensure_valid_venv(), e
|
||||
Cohesion: 0.22
|
||||
Nodes (15): get_storage(), download_file_bytes(), file_stream(), get_access_url(), get_download_url(), get_preview_url(), normalize_storage_path(), 报销附件存储适配 — 复用门户 app.core.storage,对外保持 bx 协议。 (+7 more)
|
||||
|
||||
### Community 140 - "UserRole"
|
||||
### Community 142 - "parse_resource_snapshot"
|
||||
Cohesion: 0.67
|
||||
Nodes (3): Web 管理端约定角色(由 sys_role.role_name 映射而来,非数据库枚举), UserRole, str
|
||||
Nodes (3): parse_resource_snapshot(), Any, 从 ORM 文本列或 dict 解析快照。
|
||||
|
||||
### Community 145 - "resolve_crm_product"
|
||||
Cohesion: 0.09
|
||||
Nodes (38): PlTransportProductBrandQty, PlTransportProductFeedback, 运输单按产品回传 pl_transport_product_feedback, 运输单产品回传品牌数量 pl_transport_product_brand_qty, load_brand_qtys_by_plan_product_ids(), persist_plan_product_brand_qtys(), Any, Decimal (+30 more)
|
||||
Cohesion: 0.14
|
||||
Nodes (24): PlTransportProductBrandQty, PlTransportProductFeedback, 运输单按产品回传 pl_transport_product_feedback, 运输单产品回传品牌数量 pl_transport_product_brand_qty, _dict_field(), format_brand_qty_summary(), load_transport_driver_product_feedbacks(), persist_io_item_brand_qtys() (+16 more)
|
||||
|
||||
### Community 147 - "Community 147"
|
||||
Cohesion: 0.37
|
||||
@@ -788,16 +793,16 @@ Cohesion: 0.19
|
||||
Nodes (7): _guess_preview_content_type(), MinIOStorage, Any, 从 MINIO_BASE_URL 解析公网 endpoint;未配置或与内网相同时复用 self.client。, 按对象键后缀推断内联预览 Content-Type(纠正上传时未写入 MIME 的情况)。, MinIO 预签名下载 URL,携带原始文件名。, MinIO 预签名内联预览 URL(图片新标签页 / PDF iframe 等)。 上传时 put_object 未写 content_typ
|
||||
|
||||
### Community 159 - "customer_update"
|
||||
Cohesion: 0.18
|
||||
Nodes (17): get_user_menu_codes(), Session, 读取用户授权的菜单权限标识集合(与前端 meta.menuCode / perms 对齐)。, _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user(), iter_user_menu_perm_codes(), _map_role_name_to_web(), Session (+9 more)
|
||||
Cohesion: 0.33
|
||||
Nodes (9): _expand_with_ancestor_menu_ids(), _granted_menu_ids_for_user(), iter_user_menu_perm_codes(), Session, 角色仅勾选按钮(F)时,补齐祖先 C/M 菜单 id,便于前端匹配 :list 路由。, 用户通过角色关联得到的菜单权限标识(sys_menu.perms,与前端 meta.menuCode 对齐)。, 用户是否在 sys_user_role 中绑定了至少一个有效角色。, _role_rows_for_user() (+1 more)
|
||||
|
||||
### Community 162 - ".to_tenant_user_dict"
|
||||
Cohesion: 0.42
|
||||
Nodes (7): default_settlement_clause(), test_advance_payment_clause(), test_arrive_payment_clause(), test_empty_falls_back_to_arrive(), test_monthly_settlement_clause_uses_label(), test_unknown_falls_back_to_arrive(), test_volume_quarterly_other_labels()
|
||||
|
||||
### Community 164 - "get_client_ip"
|
||||
Cohesion: 0.09
|
||||
Nodes (48): _avatar_url_field(), _build_user_info_payload(), change_current_user_password(), get_current_user_profile(), get_web_auth_menu_codes(), _jwt_user_payload(), logout(), public_quote_share() (+40 more)
|
||||
Cohesion: 0.16
|
||||
Nodes (31): _jwt_user_payload(), logout(), 公共接口(Web 登录、刷新 Token、登出;用户模型对齐 docs/sql/shanxia2.0.sql 基线), 登出:吊销 Redis 会话(若已配置 REDIS_HOST)。无 Token 或已失效时仍返回成功(幂等)。, Web 端登录:账号为 sys_user.user_no,密码为 sys_user.password(bcrypt)。, refresh_token(), web_login(), create_access_token() (+23 more)
|
||||
|
||||
### Community 170 - "test_quote_approver_setting.py"
|
||||
Cohesion: 0.11
|
||||
@@ -805,7 +810,7 @@ Nodes (7): convert_heic_to_jpeg(), OSSStorage, process_image_content(), QiniuSto
|
||||
|
||||
### Community 173 - "resolve_create_time_bounds"
|
||||
Cohesion: 0.07
|
||||
Nodes (70): _build_driver_url(), get_plan_arrange_info(), 获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。, _resolve_other_personnel(), _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible() (+62 more)
|
||||
Nodes (69): ContractGapExportBody, PlanExportBody, _apply_plan_logistics_from_payload(), _apply_transport_arrange_fields(), arrange_transport(), _assert_vehicle_carrier_eligible(), _build_arrange_result(), _build_driver_url() (+61 more)
|
||||
|
||||
### Community 179 - "test_pl_vehicle_personnel_photo_schema.py"
|
||||
Cohesion: 0.27
|
||||
@@ -820,8 +825,8 @@ Cohesion: 0.18
|
||||
Nodes (10): 1. 创建虚拟环境, 2. 安装依赖, 3. 配置环境变量, 4. 启动服务, API 路由分组, shanxia2.0 后端骨架(FastAPI), 开发规范, 快速开始 (+2 more)
|
||||
|
||||
### Community 220 - "api_crypto_middleware.py"
|
||||
Cohesion: 0.14
|
||||
Nodes (23): ApiCryptoMiddleware, _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key() (+15 more)
|
||||
Cohesion: 0.24
|
||||
Nodes (13): _claims_from_auth(), _coerce_post_method_override_to_get(), _get_redis_client(), _is_crypto_api(), _json_error_response(), _mark_nonce_once(), _nonce_key(), Redis (+5 more)
|
||||
|
||||
### Community 237 - "order_status_compat.py"
|
||||
Cohesion: 0.36
|
||||
@@ -838,22 +843,22 @@ Nodes (6): eq_unicode(), like_unicode(), MySQL 字符串比较/模糊匹配时
|
||||
## Knowledge Gaps
|
||||
- **30 isolated node(s):** `Config`, `Config`, `Config`, `Config`, `Config` (+25 more)
|
||||
These have ≤1 connection - possible missing edges or undocumented components.
|
||||
- **15 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
- **20 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.
|
||||
|
||||
## Suggested Questions
|
||||
_Questions this graph is uniquely positioned to answer:_
|
||||
|
||||
- **Why does `generate_uuid()` connect `redis_client.py` to `context.py`, `Community 5`, `Community 6`, `Community 4`, `Community 8`, `Community 136`, `Community 11`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `resolve_crm_product`, `Community 21`, `Community 24`, `Community 25`, `Community 26`, `Community 28`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `get_client_ip`, `Community 39`, `Community 40`, `Community 43`, `resolve_create_time_bounds`, `Community 46`, `Community 47`, `Community 51`, `Community 54`, `Community 56`, `Community 60`, `Community 61`, `Community 64`, `Community 65`, `Community 67`, `Community 72`, `Community 74`, `apply_crm_create_by_scope`, `opportunity_follow.py`, `Community 83`, `Community 87`, `CrmProduct`, `pl_ocr_service.py`, `opportunity_product.py`, `Community 92`, `test_pl_public_link_archived.py`, `LocalStorage`, `crm_supplier_hazard.py`, `apply_crm_create_by_scope`, `pool_customer_assign`, `site.py`, `apply_pl_scope`, `list_duty_staff_users`, `dict_data.py`, `dict_type.py`, `Community 116`, `Community 118`, `post.py`, `site.py`, `customer_pool.py`, `allocate_next_biz_no`?**
|
||||
_High betweenness centrality (0.139) - this node is a cross-community bridge._
|
||||
- **Why does `BaseModel` connect `Community 12` to `Community 1`, `Community 2`, `contact.py`, `customer_update`, `opportunity_export`, `response.py`, `Community 7`, `Community 5`, `customer_options`, `Community 10`, `Community 11`, `Community 13`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 20`, `Community 26`, `Community 27`, `Community 37`, `Community 40`, `Community 41`, `Community 43`, `Community 45`, `resolve_create_time_bounds`, `Community 47`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 54`, `Community 55`, `Community 56`, `Community 57`, `Community 62`, `Community 63`, `Community 64`, `Community 65`, `Community 71`, `Community 74`, `opportunity_follow.py`, `Community 78`, `customer_follow.py`, `storage.py`, `test_pl_public_link_archived.py`, `redis_client.py`, `tenant.py`, `crm_supplier_hazard.py`, `site.py`, `apply_pl_scope`, `monitor.py`, `.to_tenant_user_dict`, `site.py`, `price_letter_detail`, `Community 119`, `customer_options`?**
|
||||
_High betweenness centrality (0.104) - this node is a cross-community bridge._
|
||||
- **Why does `generate_uuid()` connect `apply_crm_create_by_scope` to `context.py`, `Community 5`, `Community 6`, `Community 4`, `Community 8`, `Community 136`, `Community 11`, `Community 14`, `Community 15`, `Community 16`, `Community 17`, `Community 18`, `Community 19`, `resolve_crm_product`, `Community 21`, `Community 23`, `Community 24`, `Community 25`, `Community 26`, `Community 28`, `Community 31`, `Community 32`, `Community 33`, `Community 34`, `get_client_ip`, `Community 39`, `Community 40`, `Community 43`, `resolve_create_time_bounds`, `Community 47`, `Community 49`, `Community 50`, `Community 51`, `Community 54`, `Community 56`, `Community 58`, `Community 60`, `Community 61`, `Community 62`, `Community 64`, `Community 65`, `Community 67`, `Community 71`, `Community 72`, `Community 74`, `storage.py`, `Community 83`, `CrmProduct`, `pl_ocr_service.py`, `opportunity_product.py`, `Community 92`, `test_pl_public_link_archived.py`, `LocalStorage`, `redis_client.py`, `crm_supplier_hazard.py`, `apply_crm_create_by_scope`, `site.py`, `apply_pl_scope`, `list_duty_staff_users`, `dict_data.py`, `dict_type.py`, `Community 116`, `Community 118`, `post.py`, `site.py`, `customer_pool.py`?**
|
||||
_High betweenness centrality (0.150) - this node is a cross-community bridge._
|
||||
- **Why does `Settings` connect `price_letter_detail` to `Community 35`, `Community 36`, `Community 67`, `Community 38`, `Community 70`, `Community 73`, `Community 42`, `statistics.py`, `Community 48`, `Community 53`, `Community 59`, `Community 30`?**
|
||||
_High betweenness centrality (0.094) - this node is a cross-community bridge._
|
||||
_High betweenness centrality (0.095) - this node is a cross-community bridge._
|
||||
- **Why does `BaseModel` connect `Community 45` to `Community 0`, `Community 1`, `Community 2`, `contact.py`, `customer_update`, `Community 5`, `response.py`, `Community 7`, `Community 10`, `Community 11`, `UserRole`, `Community 12`, `Community 14`, `Community 13`, `Community 15`, `Community 17`, `Community 18`, `Community 16`, `Community 20`, `Community 23`, `Community 26`, `Community 27`, `Community 37`, `Community 40`, `Community 41`, `Community 43`, `Community 44`, `resolve_create_time_bounds`, `Community 49`, `Community 50`, `Community 51`, `Community 52`, `Community 54`, `Community 55`, `Community 57`, `Community 58`, `Community 63`, `Community 64`, `Community 65`, `Community 71`, `Community 74`, `resolve_crm_product`, `customer_follow.py`, `storage.py`, `Community 87`, `minio_url.py`, `tenant.py`, `crm_supplier_hazard.py`, `pool_customer_assign`, `site.py`, `apply_pl_scope`, `site.py`, `price_letter_detail`, `Community 119`?**
|
||||
_High betweenness centrality (0.095) - this node is a cross-community bridge._
|
||||
- **Are the 30 inferred relationships involving `DbUserContext` (e.g. with `InventoryExportBody` and `InventoryRelatedData`) actually correct?**
|
||||
_`DbUserContext` has 30 INFERRED edges - model-reasoned connections that need verification._
|
||||
- **What connects `API 路由包 — 山峡化工生产一体化门户`, `返回运营端角色下拉选项(label=库中角色名,value=Web 角色码)。`, `返回用户下拉选项(label=昵称,value=用户ID,附带 nickName/userNo)。 供申请人/审批人等选择场景使用,返回本租户全部有效` to the rest of the system?**
|
||||
_610 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
_611 weakly-connected nodes found - possible documentation gaps or missing edges._
|
||||
- **Should `Community 0` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.08 - nodes in this community are weakly interconnected._
|
||||
- **Should `Community 1` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.06666666666666667 - nodes in this community are weakly interconnected._
|
||||
- **Should `Community 2` be split into smaller, more focused modules?**
|
||||
_Cohesion score 0.09292929292929293 - nodes in this community are weakly interconnected._
|
||||
_Cohesion score 0.07804878048780488 - nodes in this community are weakly interconnected._
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_py", "label": "crm.py", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_filter_export_rows_by_ids", "label": "_filter_export_rows_by_ids()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L337"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_tree", "label": "category_tree()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L354"}, {"id": "productcategorytreebody", "label": "ProductCategoryTreeBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_list", "label": "customer_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L382"}, {"id": "customerlistbody", "label": "CustomerListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_detail", "label": "customer_detail()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L416"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_options", "label": "customer_options()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L442"}, {"id": "customeroptionsbody", "label": "CustomerOptionsBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_create", "label": "customer_create()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L466"}, {"id": "customercreatebody", "label": "CustomerCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_update", "label": "customer_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L496"}, {"id": "customerupdatebody", "label": "CustomerUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_delete", "label": "customer_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L523"}, {"id": "customerdeletebody", "label": "CustomerDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_customer_generate_no", "label": "customer_generate_no()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L551"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_add", "label": "category_add()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L567"}, {"id": "productcategorycreatebody", "label": "ProductCategoryCreateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_update", "label": "category_update()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L586"}, {"id": "productcategoryupdatebody", "label": "ProductCategoryUpdateBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_category_delete", "label": "category_delete()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L606"}, {"id": "categorydeletebody", "label": "CategoryDeleteBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_crm_product_list", "label": "product_list()", "file_type": "code", "source_file": "app/api/crm.py", "source_location": "L626"}, {"id": "productlistbody", "label": "ProductListBody", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/crm.py"}, {"id"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_py", "label": "public_io_order.py", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_resolve_unit_label", "label": "_resolve_unit_label()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_models", "label": "_models()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L58"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_get_by_token", "label": "_get_by_token()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L64"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_resolve_io_order_link_flags", "label": "_resolve_io_order_link_flags()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L82"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_parse_history_date", "label": "_parse_history_date()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L89"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_history_status_label", "label": "_history_status_label()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L99"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_query_kind_history", "label": "_query_kind_history()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L109"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_build_history_page", "label": "_build_history_page()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L186"}, {"id": "publicioorderhistorypageread", "label": "PublicIoOrderHistoryPageRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_attach_history_products", "label": "_attach_history_products()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L224"}, {"id": "publicioorderhistoryrecordread", "label": "PublicIoOrderHistoryRecordRead", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/public_io_order.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_build_page", "label": "_build_page()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L314"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_format_file_size", "label": "_format_file_size()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L326"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_make_handlers", "label": "_make_handlers()", "file_type": "code", "source_file": "app/api/pl/public_io_order.py", "source_location": "L334"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212 \u00b7 \u5165\u5e93/\u51fa\u5e93\u5355\u73b0\u573a\u514d\u767b\u5f55\u516c\u5171 API", "file_type": "rationale", "source_file": "app/api/pl/public_io_order.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_rationale_83", "label": "\u8fd4\u56de (\u4f5c\u5e9f, \u5f52\u6863)\u3002\u73b0\u573a\u94fe\u63a5\u5b9e\u9645\u8d70\u5165\u5e93/\u51fa\u5e93\u5355\u516c\u5171\u9875\u3002", "file_type": "rationale", "source_file": "app/api/pl/public_io_order.py", "source_location": "L83"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_public_io_order_rationale_117", "label": "\u8fd4\u56de [(create_time, PublicIoOrderHistoryRecordRead), ...]\u3002", "file_type": "rationale", "source_file": "app/api/pl/public_io_order.py", "source_location": "L117"}], Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "label": "pl_plan_arrange_copy_flags.py", "file_type": "code", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_planarrangecopyflags", "label": "PlanArrangeCopyFlags", "file_type": "code", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L26"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_load_plan_arrange_copy_flags", "label": "load_plan_arrange_copy_flags()", "file_type": "code", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L32"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_arrange_copy_flags.py"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/services/pl_plan_arrange_copy_flags.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_rationale_1", "label": "\u8fd0\u8f93\u8ba1\u5212\u5217\u8868\uff1a\u6279\u91cf\u8ba1\u7b97\u300c\u590d\u5236\u7ed9\u53f8\u673a / \u73b0\u573a / \u78c5\u5355\u4e8c\u7ef4\u7801\u300d\u6309\u94ae\u663e\u793a\u6807\u5fd7\u3002 \u8bed\u4e49\u4e0e\u67e5\u770b\u5f39\u7a97 / usePlPlanArrangeActions \u5bf9\u9f50\uff1a -", "file_type": "rationale", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "target": "dataclasses", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L11", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L13", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "target": "app_models_pl_models", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_planarrangecopyflags", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L26", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_load_plan_arrange_copy_flags", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_load_plan_arrange_copy_flags", "target": "session", "relation": "references", "context": "parameter_type", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_load_plan_arrange_copy_flags", "target": "plplan", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_load_plan_arrange_copy_flags", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_planarrangecopyflags", "relation": "references", "context": "generic_arg", "confidence": "EXTRACTED", "source_file": "app/services/pl_plan_arrange_copy_flags.py", "source_location": "L32", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_services_pl_plan_arrange_copy_flags_load_plan_arrange_copy_flags", "target": "users_wuzilong_woLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "label": "pool_rule.py", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L25"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L31"}, {"id": "crmcustomerpoolrule", "label": "CrmCustomerPoolRule", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_list_pool_rules", "label": "list_pool_rules()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L48"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/pool_rule.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_get_pool_rule", "label": "get_pool_rule()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L85"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_create_pool_rule", "label": "create_pool_rule()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L97"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_update_pool_rule", "label": "update_pool_rule()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L129"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_delete_pool_rules", "label": "delete_pool_rules()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L169"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_update_pool_rule_status", "label": "update_pool_rule_status()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L188"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_execute_pool_rules", "label": "execute_pool_rules()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L208"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_execute_single_rule", "label": "_execute_single_rule()", "file_type": "code", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L235"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_rationale_1", "label": "CRM \u516c\u6d77\u6c60\u89c4\u5219 CRUD + \u89c4\u5219\u6267\u884c\u903b\u8f91", "file_type": "rationale", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "logging", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "math", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L5", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "datetime", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "sqlalchemy", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L9", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "sqlalchemy_orm", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/crud/crm/pool_rule.py", "source_location": "L10", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_pool_rule_py", "target": "app_coreLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductbase", "label": "PlanProductBase", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L16"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcreate", "label": "PlanProductCreate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L55"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductupdate", "label": "PlanProductUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L59"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planarchivebrandqtyitem", "label": "PlanArchiveBrandQtyItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L81"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductread", "label": "PlanProductRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planbase", "label": "PlanBase", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L105"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancontractlink", "label": "PlanContractLink", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L155"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreate", "label": "PlanCreate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L161"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plantransportcreateblock", "label": "PlanTransportCreateBlock", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L176"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planupdate", "label": "PlanUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L190"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_hazardcertreadybody", "label": "HazardCertReadyBody", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L239"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planread", "label": "PlanRead", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L244"}, {"id": "planresourcesnapshotmixin", "label": "PlanResourceSnapshotMixin", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planwithproducts", "label": "PlanWithProducts", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L278"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planinboundsliptemplatesave", "label": "PlanInboundSlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L297"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plandeliverysliptemplatesave", "label": "PlanDeliverySlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L302"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plansubpacksliptemplatesave", "label": "PlanSubpackSlipTemplateSave", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L309"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_createfromcontractrequest", "label": "CreateFromContractRequest", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L321"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_plancreatefull", "label": "PlanCreateFull", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L332"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planlistquery", "label": "PlanListQuery", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L343"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertitem", "label": "PlanProductCertItem", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L368"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_pl_plan_planproductcertsupdate", "label": "PlanProductCertsUpdate", "file_type": "code", "source_file": "app/schemas/pl/plan.py", "source_location": "L376"}, {"id": "users_wuzilong_work_00code_sLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "label": "pool_rule.py", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolrulelistbody", "label": "PoolRuleListBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruledetailbody", "label": "PoolRuleDetailBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L19"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleaddbody", "label": "PoolRuleAddBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L25"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleupdatebody", "label": "PoolRuleUpdateBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L37"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruledeletebody", "label": "PoolRuleDeleteBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L50"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleupdatestatusbody", "label": "PoolRuleUpdateStatusBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L56"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleexecutebody", "label": "PoolRuleExecuteBody", "file_type": "code", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L63"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_rationale_1", "label": "CRM \u5ba2\u6237\u516c\u6d77\u6c60\u89c4\u5219 Pydantic Schemas", "file_type": "rationale", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolrulelistbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolrulelistbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruledetailbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruledetailbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L19", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleaddbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleaddbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L25", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleupdatebody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/pool_rule.py", "source_location": "L37", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_pool_rule_poolruleupdatebody", "target": "basemodel", "relatLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_py", "label": "customer.py", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_ensure_customer_in_scope", "label": "_ensure_customer_in_scope()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L23"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py"}, {"id": "crmcustomer", "label": "CrmCustomer", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_total_pages", "label": "total_pages()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L27"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_parse_optional_date", "label": "_parse_optional_date()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L37"}, {"id": "any", "label": "Any", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_parse_optional_datetime", "label": "_parse_optional_datetime()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L55"}, {"id": "datetime", "label": "datetime", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/crud/crm/customer.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_resolve_user_display_name", "label": "_resolve_user_display_name()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L71"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_enrich_user_names", "label": "_enrich_user_names()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L81"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_row_to_dict", "label": "_row_to_dict()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L108"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_list_customer_options", "label": "list_customer_options()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L163"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_list_customers", "label": "list_customers()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L214"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_list_pool_customers", "label": "list_pool_customers()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L343"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_get_customer", "label": "get_customer()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L372"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_get_customer_by_no", "label": "get_customer_by_no()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L383"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_generate_customer_no", "label": "generate_customer_no()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L395"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_customer_name_exists", "label": "customer_name_exists()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L421"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_check_duplicate_customer", "label": "check_duplicate_customer()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L434"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_create_customer", "label": "create_customer()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L455"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_crud_crm_customer_update_customer", "label": "update_customer()", "file_type": "code", "source_file": "app/crud/crm/customer.py", "source_location": "L529"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_cLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_py", "label": "crm_export_columns.py", "file_type": "code", "source_file": "app/utils/crm_export_columns.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_yes_no", "label": "_yes_no()", "file_type": "code", "source_file": "app/utils/crm_export_columns.py", "source_location": "L7"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_brand_names", "label": "_join_brand_names()", "file_type": "code", "source_file": "app/utils/crm_export_columns.py", "source_location": "L15"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_alias_names", "label": "_join_alias_names()", "file_type": "code", "source_file": "app/utils/crm_export_columns.py", "source_location": "L24"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_rationale_1", "label": "CRM \u6a21\u5757 Excel \u5bfc\u51fa\u5217\u5b9a\u4e49\uff08\u5b57\u6bb5\u4e0e\u5b57\u5178\u7c7b\u578b\u5bf9\u9f50 Java *Vo @ExcelDictFormat\uff09\u3002", "file_type": "rationale", "source_file": "app/utils/crm_export_columns.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_py", "target": "app_utils_excel_export", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/utils/crm_export_columns.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_yes_no", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/utils/crm_export_columns.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_brand_names", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/utils/crm_export_columns.py", "source_location": "L15", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_alias_names", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/utils/crm_export_columns.py", "source_location": "L24", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_rationale_1", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_py", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "app/utils/crm_export_columns.py", "source_location": "L1", "weight": 1.0}], "raw_calls": [{"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_brand_names", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py", "source_location": "L18"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_brand_names", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py", "source_location": "L19", "receiver": "x"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_brand_names", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py", "source_location": "L19"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_brand_names", "callee": "join", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py", "source_location": "L20", "receiver": null}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_alias_names", "callee": "list", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py", "source_location": "L27"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_alias_names", "callee": "get", "is_member_call": true, "source_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/utils/crm_export_columns.py", "source_location": "L28", "receiver": "x"}, {"caller_nid": "users_wuzilong_work_00code_shanxia2_0_backend_app_utils_crm_export_columns_join_alias_names", "callee": "dict", "is_member_call": false, "indirect": true, "context": "argument", "source_file": "/Users/wuzilong/workLine truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_py", "label": "plan.py", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_list_product_name", "label": "_resolve_list_product_name()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L117"}, {"id": "plplanproduct", "label": "PlPlanProduct", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_resolve_create_date", "label": "_resolve_create_date()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L133"}, {"id": "date", "label": "date", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_plan_no", "label": "_generate_plan_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L137"}, {"id": "session", "label": "Session", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_format_subpack_slip_no", "label": "_format_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L169"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_normalize_subpack_slip_no", "label": "_normalize_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L173"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_subpack_slip_no_seq", "label": "_subpack_slip_no_seq()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L198"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_ensure_subpack_slip_no", "label": "_ensure_subpack_slip_no()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L206"}, {"id": "plplan", "label": "PlPlan", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_determine_plan_type", "label": "_determine_plan_type()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L238"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_get_plan_type_label", "label": "_get_plan_type_label()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L243"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_generate_notify_message", "label": "_generate_notify_message()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L252"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_product_name_exists", "label": "_plan_product_name_exists()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L272"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_plan_plate_match", "label": "_plan_plate_match()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L286"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_plans", "label": "list_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L296"}, {"id": "dbusercontext", "label": "DbUserContext", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "planlistresponse", "label": "PlanListResponse", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/backend/app/api/pl/plan.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_planexportbody", "label": "PlanExportBody", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L499"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_export_plans", "label": "export_plans()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L520"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_count_plans_by_contract", "label": "count_plans_by_contract()", "file_type": "code", "source_file": "app/api/pl/plan.py", "source_location": "L600"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_api_pl_plan_list_contract_gaps", "label": "list_contract_gaps()", "file_type": "code"Line truncated
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "label": "customer_pool.py", "file_type": "code", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolcustomerlistbody", "label": "PoolCustomerListBody", "file_type": "code", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L7"}, {"id": "basemodel", "label": "BaseModel", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolassignbody", "label": "PoolAssignBody", "file_type": "code", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L20"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolclaimbody", "label": "PoolClaimBody", "file_type": "code", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L28"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolrecordlistbody", "label": "PoolRecordListBody", "file_type": "code", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L34"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolrecorddetailbody", "label": "PoolRecordDetailBody", "file_type": "code", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L44"}, {"id": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_rationale_1", "label": "CRM \u5ba2\u6237\u516c\u6d77\u6c60\u8bb0\u5f55 Pydantic Schemas", "file_type": "rationale", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L1"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "typing", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L2", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "pydantic", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L4", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolcustomerlistbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolcustomerlistbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolassignbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolassignbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L20", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolclaimbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolclaimbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L28", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolrecordlistbody", "relation": "contains", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poolrecordlistbody", "target": "basemodel", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "app/schemas/crm/customer_pool.py", "source_location": "L34", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_py", "target": "users_wuzilong_work_00code_shanxia2_0_backend_app_schemas_crm_customer_pool_poLine truncated
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"/Users/zlwu/work/00code/shanxia2.0/backend/start-prod.sh":{"size":7357,"mtime_ns":1782639355476060453,"hash":"ca89869446be74a2bf2367b3b28f448580220859a39a84ad9613ac5fe35a8433"},"/Users/zlwu/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661446983244,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982281973984,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py":{"size":6280,"mtime_ns":1782790852770448643,"hash":"8f9da799977bee7134d87a26ff8434ac5ef8eabb0b7368dd537eee49ad7fd00b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":2207,"mtime_ns":1783208067881286091,"hash":"313e6da0e91d743ce891dd283458c79b50b24c4d909dc96ca7b3fd9d2bfa5013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":7457,"mtime_ns":1782790841500516545,"hash":"34bac56e1c2cb6215f4b5fa2dc32d77d4b4abca51428819eebf4afd269cc51cf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930724444498,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930725155710,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py":{"size":6958,"mtime_ns":1784032424448146538,"hash":"c2fb44aedb880733de28afa7f92d2c1c681eb600f821bbeba2bcda3933e5bc37"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":11971,"mtime_ns":1782701669198208175,"hash":"0b84c32828939e6102bb3647691fa8f04b1f68e0e0e9f28127374cc44e19a11c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1510,"mtime_ns":1782790847265601586,"hash":"8bc9c8ae62e2be2c6920036582ba448dfcd1711c41cebb62274ff6bc6ee14b0b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":14141,"mtime_ns":1782855136810943216,"hash":"3ae2c413c10898a8adb3d6773870bafbfbc18c739c10e0e8b4f765b4b5ca6c08"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":8043,"mtime_ns":1782648925694296304,"hash":"626dff86937e5cacec634ecbc61cd53d3763d760223a1d4ec7cd11f64e59a220"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":10876,"mtime_ns":1782790001926627098,"hash":"b39f128b6612589ea6ac5babd30752e9585b3af07b82bb1ad53c9e3c0d90816f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4Line truncated
|
||||
{"/Users/zlwu/work/00code/shanxia2.0/backend/start-prod.sh":{"size":7357,"mtime_ns":1782639355476060453,"hash":"ca89869446be74a2bf2367b3b28f448580220859a39a84ad9613ac5fe35a8433"},"/Users/zlwu/work/00code/shanxia2.0/backend/start.sh":{"size":9548,"mtime_ns":1780114661446983244,"hash":"4d632863e8a0cd81194b491d83a0218a4157435ae812dec76a6f6197b4d48e57"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/__init__.py":{"size":21,"mtime_ns":1780113982281973984,"hash":"60a04ff08fd97084e83ea809fd13feda6d2848be20ebf309e31fc1dad7523230"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/main.py":{"size":6280,"mtime_ns":1782790852770448643,"hash":"8f9da799977bee7134d87a26ff8434ac5ef8eabb0b7368dd537eee49ad7fd00b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/tasks/__init__.py":{"size":2207,"mtime_ns":1783208067881286091,"hash":"313e6da0e91d743ce891dd283458c79b50b24c4d909dc96ca7b3fd9d2bfa5013"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/auth.py":{"size":7457,"mtime_ns":1782790841500516545,"hash":"34bac56e1c2cb6215f4b5fa2dc32d77d4b4abca51428819eebf4afd269cc51cf"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto.py":{"size":1870,"mtime_ns":1780108930724444498,"hash":"c04b748aea86890a5971f749523c7b17dbad1ddd6f9f7f07a5679d159c984e33"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/login_crypto.py":{"size":3858,"mtime_ns":1780108930725155710,"hash":"b82d51afabf2293a9cb1fb2e5f994c383948e7f47ea95fe674686b4f3f3342b1"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/config.py":{"size":6958,"mtime_ns":1784032424448146538,"hash":"c2fb44aedb880733de28afa7f92d2c1c681eb600f821bbeba2bcda3933e5bc37"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_pay.py":{"size":23585,"mtime_ns":1780108930725768130,"hash":"3d52265ce65d21e7103f94afa1e8547aee0823b5ea6d65c50317436ac81fb4fc"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_request_log_middleware.py":{"size":11971,"mtime_ns":1782701669198208175,"hash":"0b84c32828939e6102bb3647691fa8f04b1f68e0e0e9f28127374cc44e19a11c"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/database.py":{"size":1510,"mtime_ns":1782790847265601586,"hash":"8bc9c8ae62e2be2c6920036582ba448dfcd1711c41cebb62274ff6bc6ee14b0b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/security.py":{"size":728,"mtime_ns":1780108930725470004,"hash":"df0f01115064f7b8de1c81dbe9a6db39360c236610b68c33b3234a51d7f0025b"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/request_payload.py":{"size":2842,"mtime_ns":1780108930725350836,"hash":"e9937151530ab1417ef297aef59111977725cf90be2a8fa76c00a0618789aba0"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/__init__.py":{"size":61,"mtime_ns":1780108930724312414,"hash":"3dd1842ee59b0c804176b03b4b8a323bd4a252b7feb1bbc32db64f3a8928570e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/response.py":{"size":1824,"mtime_ns":1780108930725412462,"hash":"f1739352d65ea8287d76e282a59553aa8d63c97e35764c64ac378aa5bd9c347e"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/menu_guard.py":{"size":1611,"mtime_ns":1780108930725223002,"hash":"3e26077288c3620a4780038b891a326206b45bffe00aca545bdae30172487235"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/db_collation.py":{"size":548,"mtime_ns":1780108930725025043,"hash":"0c680e25a18244ca839a7de6ed1f4313b33bc8da118d89c463aee1b6af00c6f9"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/context.py":{"size":421,"mtime_ns":1780108930724824458,"hash":"83a10aee67162374993c10a30bf8bb8bd9c4b35cf48f42c832415ccebd91660f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/utils.py":{"size":1498,"mtime_ns":1780108930725607296,"hash":"09323693661c1d4560458b86a954128ccff82bbaf6522da0b44f24da99ddf9ea"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/storage.py":{"size":14141,"mtime_ns":1782855136810943216,"hash":"3ae2c413c10898a8adb3d6773870bafbfbc18c739c10e0e8b4f765b4b5ca6c08"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/order_status_compat.py":{"size":2828,"mtime_ns":1780108930725284669,"hash":"5349e5a0745ee6734c4a995337779307adefc46f453906171988a77de2081540"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/exceptions.py":{"size":4946,"mtime_ns":1780108930725084335,"hash":"79c997d964bca1a4f12f2b92fb1f181fdb9e2b3cf72eae39f4cc164d23794fd7"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/data_scope.py":{"size":8043,"mtime_ns":1782648925694296304,"hash":"626dff86937e5cacec634ecbc61cd53d3763d760223a1d4ec7cd11f64e59a220"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/admin_request_json.py":{"size":2669,"mtime_ns":1780108930724378914,"hash":"4f68b3cf84291e7bddad6ecf4bb4d29ca5e1ec246a9f7f9c4cf5909d0ec1174a"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/api_crypto_middleware.py":{"size":10876,"mtime_ns":1782790001926627098,"hash":"b39f128b6612589ea6ac5babd30752e9585b3af07b82bb1ad53c9e3c0d90816f"},"/Users/zlwu/work/00code/shanxia2.0/backend/app/core/wechat_message.py":{"size":11194,"mtime_ns":1780108930725684255,"hash":"5086070deb14d99d1a69e419b2299ec4Line truncated
|
||||
@@ -63,12 +63,12 @@
|
||||
</div>
|
||||
<div id="legend"></div>
|
||||
</div>
|
||||
<div id="stats">4793 nodes · 18045 edges · 180 communities</div>
|
||||
<div id="stats">4800 nodes · 18086 edges · 185 communities</div>
|
||||
</div>
|
||||
<script>
|
||||
const RAW_NODES = [{"id": "app_init", "label": "__init__.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 304, "community_name": "__init__.py", "source_file": "app/__init__.py", "file_type": "code", "degree": 0}, {"id": "app_api_init", "label": "__init__.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 63, "community_name": "Community 63", "source_file": "app/api/__init__.py", "file_type": "code", "degree": 10}, {"id": "app_api_init_rationale_1", "label": "API \u8def\u7531\u5305 \u2014 \u5c71\u5ce1\u5316\u5de5\u751f\u4ea7\u4e00\u4f53\u5316\u95e8\u6237", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "API \u8def\u7531\u5305 \u2014 \u5c71\u5ce1\u5316\u5de5\u751f\u4ea7\u4e00\u4f53\u5316\u95e8\u6237", "community": 63, "community_name": "Community 63", "source_file": "app/api/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "app_api_admin", "label": "admin.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 18.9, "font": {"size": 12, "color": "#ffffff"}, "title": "admin.py", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 149}, {"id": "app_api_admin_list_roles_for_select", "label": "list_roles_for_select()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "list_roles_for_select()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 5}, {"id": "app_api_admin_py_session", "label": "Session", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Session", "community": 3, "community_name": "Community 3", "source_file": "", "file_type": "code", "degree": 69}, {"id": "app_api_admin_list_users_for_select", "label": "list_users_for_select()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "list_users_for_select()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 5}, {"id": "app_api_admin_list_roles_for_designer", "label": "list_roles_for_designer()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "list_roles_for_designer()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 5}, {"id": "app_api_admin_tenantcreatebody", "label": "TenantCreateBody", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "TenantCreateBody", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 13}, {"id": "app_api_admin_tenantupdatebody", "label": "TenantUpdateBody", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "TenantUpdateBody", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 13}, {"id": "app_api_admin_list_tenants", "label": "list_tenants()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "list_tenants()", "community": 10, "community_name": "Community 10", "source_file": "app/api/admin.py", "file_type": "code", "degree": 4}, {"id": "app_api_admin_tenantexportbody", "label": "TenantExportBody", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "TenantExportBody", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 13}, {"id": "app_api_admin_export_tenants", "label": "export_tenants()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E7Line truncated
|
||||
const RAW_EDGES = [{"from": "app_api_init", "to": "app_api_admin", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_bx_init", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_crm", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_db_init", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_leave", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_menu", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_monitor", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_public", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_workflow", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init_rationale_1", "to": "app_api_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_attachment_download_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_attachment_preview_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_attachmentdownloadurlbody", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_dept", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_dict_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_dict_type", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_menu", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_menu_favorite", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_post", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_role_management", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_site", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_tenant", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_user", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_delete_dept", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_delete_dict_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"Line truncated
|
||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 5}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 46}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 55}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 89}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 78}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 133}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 41}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 96}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 69}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 56}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 45}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 45}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 94}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 36}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 53}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 53}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 68}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 97}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 70}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 13}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 38}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 62}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 22}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 7}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 19}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 13}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 47}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 35}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 57}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 19}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 27}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 46}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 47}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 14}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 27}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 38}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 32}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 47}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 23}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 44}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 33}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 28}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 34}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 64}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 33}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 59}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 60}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 31}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 23}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 27}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 30}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 24}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 110}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 31}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 31}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 87}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 49}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 23}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 23}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 30}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 18}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 50}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 25}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "count": 21}, {"cid": 64, "color": "#59A14F", "label": "Community 64", "count": 37}, {"cid": 65, "color": "#EDC948", "label": "Community 65", "count": 67}, {"cid": 66, "color": "#B07AA1", "label": "Community 66", "count": 24}, {"cid": 67, "color": "#FF9DA7", "label": "Community 67", "count": 38}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 26}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 29}, {"cid": 70, "color": "#4E79A7", "Line truncated
|
||||
const RAW_NODES = [{"id": "app_init", "label": "__init__.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 10.0, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 304, "community_name": "__init__.py", "source_file": "app/__init__.py", "file_type": "code", "degree": 0}, {"id": "app_api_init", "label": "__init__.py", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.6, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 57, "community_name": "Community 57", "source_file": "app/api/__init__.py", "file_type": "code", "degree": 10}, {"id": "app_api_init_rationale_1", "label": "API \u8def\u7531\u5305 \u2014 \u5c71\u5ce1\u5316\u5de5\u751f\u4ea7\u4e00\u4f53\u5316\u95e8\u6237", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 10.1, "font": {"size": 0, "color": "#ffffff"}, "title": "API \u8def\u7531\u5305 \u2014 \u5c71\u5ce1\u5316\u5de5\u751f\u4ea7\u4e00\u4f53\u5316\u95e8\u6237", "community": 57, "community_name": "Community 57", "source_file": "app/api/__init__.py", "file_type": "rationale", "degree": 1}, {"id": "app_api_admin", "label": "admin.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 18.9, "font": {"size": 12, "color": "#ffffff"}, "title": "admin.py", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 149}, {"id": "app_api_admin_list_roles_for_select", "label": "list_roles_for_select()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "list_roles_for_select()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 5}, {"id": "app_api_admin_py_session", "label": "Session", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Session", "community": 3, "community_name": "Community 3", "source_file": "", "file_type": "code", "degree": 69}, {"id": "app_api_admin_list_users_for_select", "label": "list_users_for_select()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "list_users_for_select()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 5}, {"id": "app_api_admin_list_roles_for_designer", "label": "list_roles_for_designer()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.3, "font": {"size": 0, "color": "#ffffff"}, "title": "list_roles_for_designer()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 5}, {"id": "app_api_admin_tenantcreatebody", "label": "TenantCreateBody", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "TenantCreateBody", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 13}, {"id": "app_api_admin_tenantupdatebody", "label": "TenantUpdateBody", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "TenantUpdateBody", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 13}, {"id": "app_api_admin_list_tenants", "label": "list_tenants()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 10.2, "font": {"size": 0, "color": "#ffffff"}, "title": "list_tenants()", "community": 3, "community_name": "Community 3", "source_file": "app/api/admin.py", "file_type": "code", "degree": 4}, {"id": "app_api_admin_tenantexportbody", "label": "TenantExportBody", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 10.8, "font": {"size": 0, "color": "#ffffff"}, "title": "TenantExportBody", "community": 45, "community_name": "Community 45", "source_file": "app/api/admin.py", "file_type": "code", "degree": 13}, {"id": "app_api_admin_export_tenants", "label": "export_tenants()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"Line truncated
|
||||
const RAW_EDGES = [{"from": "app_api_init", "to": "app_api_admin", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_bx_init", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_crm", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_db_init", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_leave", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_menu", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_monitor", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_public", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init", "to": "app_api_workflow", "label": "re_exports", "title": "re_exports [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_init_rationale_1", "to": "app_api_init", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_attachment_download_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_attachment_preview_url", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_attachmentdownloadurlbody", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_dept", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_dict_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_dict_type", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_menu", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_menu_favorite", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_post", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_role_management", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_site", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_tenant", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_create_user", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_delete_dept", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_api_admin", "to": "app_api_admin_delete_dict_data", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"Line truncated
|
||||
const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 26}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 41}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 53}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 103}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 79}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 79}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 39}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 93}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 47}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 56}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 47}, {"cid": 11, "color": "#F28E2B", "label": "Community 11", "count": 45}, {"cid": 12, "color": "#E15759", "label": "Community 12", "count": 47}, {"cid": 13, "color": "#76B7B2", "label": "Community 13", "count": 44}, {"cid": 14, "color": "#59A14F", "label": "Community 14", "count": 46}, {"cid": 15, "color": "#EDC948", "label": "Community 15", "count": 53}, {"cid": 16, "color": "#B07AA1", "label": "Community 16", "count": 45}, {"cid": 17, "color": "#FF9DA7", "label": "Community 17", "count": 107}, {"cid": 18, "color": "#9C755F", "label": "Community 18", "count": 73}, {"cid": 19, "color": "#BAB0AC", "label": "Community 19", "count": 13}, {"cid": 20, "color": "#4E79A7", "label": "Community 20", "count": 44}, {"cid": 21, "color": "#F28E2B", "label": "Community 21", "count": 61}, {"cid": 22, "color": "#E15759", "label": "Community 22", "count": 43}, {"cid": 23, "color": "#76B7B2", "label": "Community 23", "count": 63}, {"cid": 24, "color": "#59A14F", "label": "Community 24", "count": 19}, {"cid": 25, "color": "#EDC948", "label": "Community 25", "count": 13}, {"cid": 26, "color": "#B07AA1", "label": "Community 26", "count": 34}, {"cid": 27, "color": "#FF9DA7", "label": "Community 27", "count": 35}, {"cid": 28, "color": "#9C755F", "label": "Community 28", "count": 55}, {"cid": 29, "color": "#BAB0AC", "label": "Community 29", "count": 19}, {"cid": 30, "color": "#4E79A7", "label": "Community 30", "count": 27}, {"cid": 31, "color": "#F28E2B", "label": "Community 31", "count": 51}, {"cid": 32, "color": "#E15759", "label": "Community 32", "count": 25}, {"cid": 33, "color": "#76B7B2", "label": "Community 33", "count": 16}, {"cid": 34, "color": "#59A14F", "label": "Community 34", "count": 61}, {"cid": 35, "color": "#EDC948", "label": "Community 35", "count": 38}, {"cid": 36, "color": "#B07AA1", "label": "Community 36", "count": 33}, {"cid": 37, "color": "#FF9DA7", "label": "Community 37", "count": 110}, {"cid": 38, "color": "#9C755F", "label": "Community 38", "count": 13}, {"cid": 39, "color": "#BAB0AC", "label": "Community 39", "count": 44}, {"cid": 40, "color": "#4E79A7", "label": "Community 40", "count": 28}, {"cid": 41, "color": "#F28E2B", "label": "Community 41", "count": 35}, {"cid": 42, "color": "#E15759", "label": "Community 42", "count": 34}, {"cid": 43, "color": "#76B7B2", "label": "Community 43", "count": 65}, {"cid": 44, "color": "#59A14F", "label": "Community 44", "count": 26}, {"cid": 45, "color": "#EDC948", "label": "Community 45", "count": 66}, {"cid": 46, "color": "#B07AA1", "label": "Community 46", "count": 31}, {"cid": 47, "color": "#FF9DA7", "label": "Community 47", "count": 16}, {"cid": 48, "color": "#9C755F", "label": "Community 48", "count": 23}, {"cid": 49, "color": "#BAB0AC", "label": "Community 49", "count": 37}, {"cid": 50, "color": "#4E79A7", "label": "Community 50", "count": 23}, {"cid": 51, "color": "#F28E2B", "label": "Community 51", "count": 23}, {"cid": 52, "color": "#E15759", "label": "Community 52", "count": 31}, {"cid": 53, "color": "#76B7B2", "label": "Community 53", "count": 29}, {"cid": 54, "color": "#59A14F", "label": "Community 54", "count": 27}, {"cid": 55, "color": "#EDC948", "label": "Community 55", "count": 103}, {"cid": 56, "color": "#B07AA1", "label": "Community 56", "count": 30}, {"cid": 57, "color": "#FF9DA7", "label": "Community 57", "count": 28}, {"cid": 58, "color": "#9C755F", "label": "Community 58", "count": 40}, {"cid": 59, "color": "#BAB0AC", "label": "Community 59", "count": 30}, {"cid": 60, "color": "#4E79A7", "label": "Community 60", "count": 18}, {"cid": 61, "color": "#F28E2B", "label": "Community 61", "count": 46}, {"cid": 62, "color": "#E15759", "label": "Community 62", "count": 23}, {"cid": 63, "color": "#76B7B2", "label": "Community 63", "count": 21}, {"cid": 64, "color": "#59A14F", "label": "Community 64", "count": 34}, {"cid": 65, "color": "#EDC948", "label": "Community 65", "count": 45}, {"cid": 66, "color": "#B07AA1", "label": "Community 66", "count": 18}, {"cid": 67, "color": "#FF9DA7", "label": "Community 67", "count": 38}, {"cid": 68, "color": "#9C755F", "label": "Community 68", "count": 27}, {"cid": 69, "color": "#BAB0AC", "label": "Community 69", "count": 24}, {"cid": 70, "color": "#4E79A7Line truncated
|
||||
|
||||
// HTML-escape helper — prevents XSS when injecting graph data into innerHTML
|
||||
function esc(s) {
|
||||
|
||||
+5087
-4577
File diff suppressed because it is too large.
Load diff
+169
-154
@@ -10,8 +10,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/admin.py": {
|
||||
"mtime": 1787220370.8659623,
|
||||
"ast_hash": "6d88a608b9edf8f2a6e21453fd2a3030",
|
||||
"mtime": 1787309685.8748493,
|
||||
"ast_hash": "a56979ee1310725ee0fdc0e8db1748f0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/__init__.py": {
|
||||
@@ -20,8 +20,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/advance.py": {
|
||||
"mtime": 1784992736.0,
|
||||
"ast_hash": "dedd63064c7dae763c863013fbac070b",
|
||||
"mtime": 1787307802.337954,
|
||||
"ast_hash": "ec8c34dd7efe57845141605e4f72ed48",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/attachment.py": {
|
||||
@@ -30,48 +30,48 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/expense_item.py": {
|
||||
"mtime": 1782650913.0,
|
||||
"ast_hash": "b97d30fe8ed82498c99f7f94b967e386",
|
||||
"mtime": 1787308158.8073084,
|
||||
"ast_hash": "837acb3b4c7a92c718672535fbda8658",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/invoice.py": {
|
||||
"mtime": 1784991682.0,
|
||||
"ast_hash": "ab0b069c74f069ce496fb3e800335950",
|
||||
"mtime": 1787308428.9492342,
|
||||
"ast_hash": "ae605b1b1bfba40547ed554618d04462",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/payment.py": {
|
||||
"mtime": 1783745581.0,
|
||||
"ast_hash": "5df979d32e271bac714c5a5dcfefbc10",
|
||||
"mtime": 1787308158.80692,
|
||||
"ast_hash": "0387adbe93d283644d11e4bf0755ffe3",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/reimburse.py": {
|
||||
"mtime": 1787292827.7676315,
|
||||
"ast_hash": "c23dec0233165fd1af5f0baae7145391",
|
||||
"mtime": 1787308158.8062232,
|
||||
"ast_hash": "eb281c1a700358b4df7443c1fa4944c1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/workflow.py": {
|
||||
"mtime": 1782650913.0,
|
||||
"ast_hash": "ad8b4d36db67896e575fb123717156ee",
|
||||
"mtime": 1787300323.2746665,
|
||||
"ast_hash": "be51edc9ec53137a6c095416cfc6b01b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/crm.py": {
|
||||
"mtime": 1787293703.6985583,
|
||||
"ast_hash": "b525fc2d5ef8de84f27f477ddcd87aad",
|
||||
"mtime": 1787358365.6260595,
|
||||
"ast_hash": "f316653bd46eb7c0bb591b51d337b01a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/crm_contract_routes.py": {
|
||||
"mtime": 1786239377.894416,
|
||||
"ast_hash": "af1828c032f67e912276c1c100ddd217",
|
||||
"mtime": 1787308867.569796,
|
||||
"ast_hash": "3646132226819925764fdf97712e007f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/crm_contract_sub_routes.py": {
|
||||
"mtime": 1782650354.0,
|
||||
"ast_hash": "664b26a0ae650e96ecc819b5f54e7c23",
|
||||
"mtime": 1787308867.5705187,
|
||||
"ast_hash": "b07435f68883e6f2f7b18df44e4c6600",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/crm_quote_routes.py": {
|
||||
"mtime": 1786150042.6554856,
|
||||
"ast_hash": "e720f1d50318fd62d32555a157c064d0",
|
||||
"mtime": 1787308867.5690818,
|
||||
"ast_hash": "db0e02feba5fe3c8f14ded368325f45a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/db/__init__.py": {
|
||||
@@ -85,13 +85,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/db/inventory.py": {
|
||||
"mtime": 1785807172.2850294,
|
||||
"ast_hash": "b322c6be64eb4d3d32b8773eacf65d50",
|
||||
"mtime": 1787309502.6216898,
|
||||
"ast_hash": "5e61ebd32c8e680ee646815b32c7adc5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/db/plans.py": {
|
||||
"mtime": 1786955259.1402967,
|
||||
"ast_hash": "2241aa6f91554243ab39afe7c8e93f41",
|
||||
"mtime": 1787309502.6148982,
|
||||
"ast_hash": "affccd59211b7659f15ca89301b03d9a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/db/public_inventory.py": {
|
||||
@@ -100,13 +100,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/db/weighing.py": {
|
||||
"mtime": 1785807184.5077088,
|
||||
"ast_hash": "369a1a3c28144491ae776a3f4e4b9db0",
|
||||
"mtime": 1787309502.6148784,
|
||||
"ast_hash": "c35c0189157da3c827d10a10a4f16842",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/leave.py": {
|
||||
"mtime": 1782790854.0,
|
||||
"ast_hash": "252575238a2f77642b30672d759d24fc",
|
||||
"mtime": 1787304166.5756607,
|
||||
"ast_hash": "ffc1363c492329bd9698275b98f1d872",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/menu.py": {
|
||||
@@ -115,8 +115,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/monitor.py": {
|
||||
"mtime": 1782790854.0,
|
||||
"ast_hash": "33430460ce256f208bdbf0812bf58fd6",
|
||||
"mtime": 1787304454.6752431,
|
||||
"ast_hash": "918b909116d8c3aa782643424ea7ba69",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/__init__.py": {
|
||||
@@ -125,23 +125,23 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/base_data.py": {
|
||||
"mtime": 1786887371.4499524,
|
||||
"ast_hash": "e1c6a866a651145cefe411c2949963ff",
|
||||
"mtime": 1787306016.6038413,
|
||||
"ast_hash": "0f51deaca56fe6eba29d08d494fda250",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/freight.py": {
|
||||
"mtime": 1783760751.0,
|
||||
"ast_hash": "bd1b6e7ce95b9c79a5bb9028ab705c23",
|
||||
"mtime": 1787307396.459028,
|
||||
"ast_hash": "339cc643de1d550577c21cd1b775865c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/inventory.py": {
|
||||
"mtime": 1785202430.7567701,
|
||||
"ast_hash": "954a740fd610a7e17760d158929ab9f0",
|
||||
"mtime": 1787307522.445396,
|
||||
"ast_hash": "101891c31ba8df1006a8bff60880fd5a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/io_order.py": {
|
||||
"mtime": 1785484571.840901,
|
||||
"ast_hash": "7aa85e0ad97dcca64b1e063f37f6895e",
|
||||
"mtime": 1787306999.3756137,
|
||||
"ast_hash": "0254d87028bd2851b1c4ab4027002ccf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/menu_badges.py": {
|
||||
@@ -155,13 +155,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/plan.py": {
|
||||
"mtime": 1787278873.7961476,
|
||||
"ast_hash": "ca11b671db9f5d4fd7138a3aed88be11",
|
||||
"mtime": 1787365062.5784438,
|
||||
"ast_hash": "b4c9b7d3213d20fd68f343cb4c9bbe97",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/public_io_order.py": {
|
||||
"mtime": 1787286154.3652413,
|
||||
"ast_hash": "424a29d161e9d7a006c38d05aa608b6d",
|
||||
"mtime": 1787359932.995508,
|
||||
"ast_hash": "ac34c803b13a7adcc1dfa445a3da8228",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/public_site.py": {
|
||||
@@ -170,33 +170,33 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/public_transport.py": {
|
||||
"mtime": 1787282688.1905942,
|
||||
"ast_hash": "f4803f3cc1038dd97ade634a90945aa9",
|
||||
"mtime": 1787306412.0240903,
|
||||
"ast_hash": "b316a69c0f6de5301a37043d87027ecd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/transport.py": {
|
||||
"mtime": 1785967888.4569383,
|
||||
"ast_hash": "fcbf812d3fb5bfd992eae0b2225229d8",
|
||||
"mtime": 1787306262.4916227,
|
||||
"ast_hash": "74fc7aad5b443a1ededb9f558f7a03e4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/transport_address.py": {
|
||||
"mtime": 1787277380.1085398,
|
||||
"ast_hash": "b79eab98f7537a1767138402b9f22c0d",
|
||||
"mtime": 1787306128.400548,
|
||||
"ast_hash": "046fc18bf3b5f10838df4a112498c1ae",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/vehicle_maintenance.py": {
|
||||
"mtime": 1782695447.0,
|
||||
"ast_hash": "fb21f46ecad19792647f666f862f429f",
|
||||
"mtime": 1787306822.0985594,
|
||||
"ast_hash": "59d39ebcdcc4229c440889531b21514a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/vehicle_recharge.py": {
|
||||
"mtime": 1782693867.0,
|
||||
"ast_hash": "36d623105e1ad12a3061ebcde64ed464",
|
||||
"mtime": 1787306755.0950146,
|
||||
"ast_hash": "b6b5e63f975ff703e64c4266f6f4e6fc",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/pl/vehicle_urea.py": {
|
||||
"mtime": 1782696220.0,
|
||||
"ast_hash": "d4a1325c73e3ed12e4c35dc0a8d56659",
|
||||
"mtime": 1787306822.0980499,
|
||||
"ast_hash": "d79a2e390914b12a7255ff58eb6718f9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/public.py": {
|
||||
@@ -205,8 +205,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/workflow.py": {
|
||||
"mtime": 1782790854.0,
|
||||
"ast_hash": "51dc8f633991ff0b4cf5d196e4b8bb12",
|
||||
"mtime": 1787305070.2120233,
|
||||
"ast_hash": "041bd69a84feee3d6d5adb1642a2f987",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/core/__init__.py": {
|
||||
@@ -390,8 +390,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/clue.py": {
|
||||
"mtime": 1783155705.0,
|
||||
"ast_hash": "f82d06dc1c0088b91fc6c9b8f4981d2e",
|
||||
"mtime": 1787300292.8244607,
|
||||
"ast_hash": "e202a09de8554091ef17268b8d47b1cb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/clue_follow.py": {
|
||||
@@ -405,18 +405,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/contact.py": {
|
||||
"mtime": 1782687664.0,
|
||||
"ast_hash": "52c342deeca0c685380751da57e80d0c",
|
||||
"mtime": 1787300292.8277714,
|
||||
"ast_hash": "100f0565e15168ad5cb04fd25cf061ec",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/contract.py": {
|
||||
"mtime": 1787132857.3574011,
|
||||
"ast_hash": "bc090013cb5b1fd718f23d07b126b733",
|
||||
"mtime": 1787300292.8273652,
|
||||
"ast_hash": "7b1920cfd352d2d74b738fa14273eea7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/contract_approval.py": {
|
||||
"mtime": 1786365604.7703958,
|
||||
"ast_hash": "0b9d54a2b442bb72e31f8c9e39786022",
|
||||
"mtime": 1787300292.8199518,
|
||||
"ast_hash": "e21f6cb33d2b32c352cc4885d3643a86",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/contract_approver_setting.py": {
|
||||
@@ -430,13 +430,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/customer.py": {
|
||||
"mtime": 1786094657.3762026,
|
||||
"ast_hash": "1a8cf9a21791bf3cc8d0acf94505381e",
|
||||
"mtime": 1787358354.8854809,
|
||||
"ast_hash": "6c84676f319e3759f9914881b6feebee",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/customer_follow.py": {
|
||||
"mtime": 1782687665.0,
|
||||
"ast_hash": "eb2c00f7bdcc8183a1607dc06d7fa975",
|
||||
"mtime": 1787300292.8217475,
|
||||
"ast_hash": "a14dfa94e9a4ff1676c1753a85c1d998",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/customer_pool.py": {
|
||||
@@ -455,38 +455,38 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/opportunity.py": {
|
||||
"mtime": 1782687666.0,
|
||||
"ast_hash": "17f8b76860630382d0174dc3f24d9906",
|
||||
"mtime": 1787300292.8241265,
|
||||
"ast_hash": "3d3cbeb0999e0b99c2609eceaec8122c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/opportunity_follow.py": {
|
||||
"mtime": 1783821986.0,
|
||||
"ast_hash": "1a340f1428e7208373ca4ae545e97c56",
|
||||
"mtime": 1787300292.8202283,
|
||||
"ast_hash": "4d8029bbd8b95070a0409e5e772997fe",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/opportunity_product.py": {
|
||||
"mtime": 1782687669.0,
|
||||
"ast_hash": "9bef0ef46e23ad30cdafcfc7d23b64a6",
|
||||
"mtime": 1787300292.8234618,
|
||||
"ast_hash": "88b8688235156c3c550434d6d6a57fb5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/pool_rule.py": {
|
||||
"mtime": 1782687680.0,
|
||||
"ast_hash": "38d3835ad7dd6a8870b7987ce3d2c5ed",
|
||||
"mtime": 1787358355.5112648,
|
||||
"ast_hash": "9b6cdbd702a1d1c2b5388ec93130e0ed",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/price_letter.py": {
|
||||
"mtime": 1784122560.0,
|
||||
"ast_hash": "a2c5faa8f77e54b8249fa142fe51b19f",
|
||||
"mtime": 1787300292.8190188,
|
||||
"ast_hash": "fb7a22c1513b69b4814b2ed15979cb51",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/product.py": {
|
||||
"mtime": 1787293668.683282,
|
||||
"ast_hash": "da4c7d8530f8cb77739fc96940450df1",
|
||||
"mtime": 1787303142.1615398,
|
||||
"ast_hash": "5fb7379bd0ffae9c18b1abc4b0029352",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/quote.py": {
|
||||
"mtime": 1786365631.647346,
|
||||
"ast_hash": "79ad7553ba657a2ea0ccd8ae735e6803",
|
||||
"mtime": 1787300292.8211439,
|
||||
"ast_hash": "230daf2643c65d93e07c825e361fe3ba",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/crm/quote_approval.py": {
|
||||
@@ -525,13 +525,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/dict_data.py": {
|
||||
"mtime": 1784993069.0,
|
||||
"ast_hash": "99e6e3c564567303109415accb7b6e62",
|
||||
"mtime": 1787300292.816221,
|
||||
"ast_hash": "9d475aeb90a3b1d324d1092373babaf1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/dict_type.py": {
|
||||
"mtime": 1784993071.0,
|
||||
"ast_hash": "1c8ab41e8dd301904f20b477c43d5712",
|
||||
"mtime": 1787304482.6667292,
|
||||
"ast_hash": "6a6b88b809dfc6abdea7bf0453b4f866",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/ethnic.py": {
|
||||
@@ -540,8 +540,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/leave.py": {
|
||||
"mtime": 1782687678.0,
|
||||
"ast_hash": "838f3965165a936863ff186d3b347d10",
|
||||
"mtime": 1787304166.5753791,
|
||||
"ast_hash": "3bdb61c7fad2b46cf27d340b21e9d3f1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/menu.py": {
|
||||
@@ -555,8 +555,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/monitor/oper_log.py": {
|
||||
"mtime": 1782699352.0,
|
||||
"ast_hash": "c37b552628dea95fcc2539547f6c2c5d",
|
||||
"mtime": 1787304454.6748252,
|
||||
"ast_hash": "67c3c65261bbd208e657729f1fc67780",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/oss.py": {
|
||||
@@ -565,38 +565,38 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/post.py": {
|
||||
"mtime": 1784993075.0,
|
||||
"ast_hash": "b9121746e0499d5306ad830603079de0",
|
||||
"mtime": 1787303707.8507724,
|
||||
"ast_hash": "3dd819614c6924ae07f0ee73bcb7cc93",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/role.py": {
|
||||
"mtime": 1782688282.0,
|
||||
"ast_hash": "bec6d716404363d2b49e9a25a6599431",
|
||||
"mtime": 1787303718.9677126,
|
||||
"ast_hash": "5b247986fac8a3201d65ff39a2294f53",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/sample_code.py": {
|
||||
"mtime": 1780114002.0,
|
||||
"ast_hash": "b7daeb88aeae6bb90b6db066c5a9dc32",
|
||||
"mtime": 1787300292.811525,
|
||||
"ast_hash": "51ac0a75c21ff5a1c2dd1c8a70bcdb2b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/site.py": {
|
||||
"mtime": 1784993075.0,
|
||||
"ast_hash": "2c3bbe035a996ee4338c04b9128520a0",
|
||||
"mtime": 1787303716.2536354,
|
||||
"ast_hash": "d981dda2a39cbff0c4cbce3570155533",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/tenant.py": {
|
||||
"mtime": 1782688281.0,
|
||||
"ast_hash": "519521e14feea103f5bb960d5efb0324",
|
||||
"mtime": 1787303701.2128198,
|
||||
"ast_hash": "b21d7afaee186b735be040df0156d48f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/user.py": {
|
||||
"mtime": 1783851628.0,
|
||||
"ast_hash": "d0e9af7d690a2db85dd5cacfd838e38a",
|
||||
"mtime": 1787300292.8124697,
|
||||
"ast_hash": "b8ccefacd85d12ff4bbdfe071a9f8049",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/crud/workflow.py": {
|
||||
"mtime": 1782688290.0,
|
||||
"ast_hash": "e94a24aa555bffecf04e6a4660076bec",
|
||||
"mtime": 1787300292.817021,
|
||||
"ast_hash": "23ba6feffbdf4cbbf22a3251df1c8d0d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/main.py": {
|
||||
@@ -705,18 +705,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/clue.py": {
|
||||
"mtime": 1780215022.0,
|
||||
"ast_hash": "fce08aacb7699a63010fcd3f29f8a965",
|
||||
"mtime": 1787308789.4264889,
|
||||
"ast_hash": "915954ec1aab8b549b6827651d57a0cc",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/contact.py": {
|
||||
"mtime": 1780742840.0,
|
||||
"ast_hash": "b8b1b11592045acba091761fe3a193aa",
|
||||
"mtime": 1787308894.156082,
|
||||
"ast_hash": "9c4bb0cdf3f0da989136230a62b5a035",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/contract.py": {
|
||||
"mtime": 1787130826.2278907,
|
||||
"ast_hash": "c99bcc40110fac739e82797714a69844",
|
||||
"mtime": 1787308894.155663,
|
||||
"ast_hash": "30a9442f9898480507c99ba41edb792f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/contract_approver_setting.py": {
|
||||
@@ -725,18 +725,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/customer.py": {
|
||||
"mtime": 1786094611.0741088,
|
||||
"ast_hash": "ecfa1fe563799f179c30367aca322376",
|
||||
"mtime": 1787308789.4259326,
|
||||
"ast_hash": "69ded68a955e333f91383a7eb7d2efde",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/customer_follow.py": {
|
||||
"mtime": 1780201410.0,
|
||||
"ast_hash": "d59a60bd1ff1fdd175d98bd39aa0b248",
|
||||
"mtime": 1787308894.156649,
|
||||
"ast_hash": "c6b3b858af8cf629da0658e4300e3151",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/customer_pool.py": {
|
||||
"mtime": 1780202198.0,
|
||||
"ast_hash": "a741112d51c7b9429d0b34845674253c",
|
||||
"mtime": 1787358314.9284952,
|
||||
"ast_hash": "5f1422325aca3534b817cff222ecc059",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/invoice_info.py": {
|
||||
@@ -745,28 +745,28 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/opportunity.py": {
|
||||
"mtime": 1780242127.0,
|
||||
"ast_hash": "6af8aec9a012bb026f75feebab2f41f3",
|
||||
"mtime": 1787308789.4268541,
|
||||
"ast_hash": "f7e80b8b85b3f69166d38514c2fcfd4c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/pool_rule.py": {
|
||||
"mtime": 1780202212.0,
|
||||
"ast_hash": "75feeee85a38a29ff9d54872ced67b52",
|
||||
"mtime": 1787358314.9286509,
|
||||
"ast_hash": "5a8575de818e84429746d4c0e7501b37",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/price_letter.py": {
|
||||
"mtime": 1784122554.0,
|
||||
"ast_hash": "ab729c58a8b183715a7f736413fae3dd",
|
||||
"mtime": 1787300292.800458,
|
||||
"ast_hash": "f06141b0d5c5d5aea839ea95eafec77c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/product.py": {
|
||||
"mtime": 1787293668.6831603,
|
||||
"ast_hash": "9766adb75810663ecac94a2933e5fff0",
|
||||
"mtime": 1787303141.2638302,
|
||||
"ast_hash": "f9ff0aa42f3a491369b81a83930a0f40",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/quote.py": {
|
||||
"mtime": 1786171088.0675073,
|
||||
"ast_hash": "502fd8639a90ae7a52e6d1f38f4b1f61",
|
||||
"mtime": 1787308789.42729,
|
||||
"ast_hash": "6df6188c967b0e653f3281e628d650c5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/quote_approver_setting.py": {
|
||||
@@ -780,8 +780,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/crm/supplier_info.py": {
|
||||
"mtime": 1784996454.0,
|
||||
"ast_hash": "6f9f74cdfd81501e087d072e248db27d",
|
||||
"mtime": 1787308789.4281182,
|
||||
"ast_hash": "b38590826ad8faecba625772e00aaabb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/db/__init__.py": {
|
||||
@@ -850,18 +850,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/freight.py": {
|
||||
"mtime": 1785439224.2711833,
|
||||
"ast_hash": "1fa847594598dfb74337780a390d79a9",
|
||||
"mtime": 1787300292.7964964,
|
||||
"ast_hash": "e9c07ca4e485415cafb1eb04f91213df",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/inventory.py": {
|
||||
"mtime": 1785202429.9738195,
|
||||
"ast_hash": "96dd94a34de58fcdf81bb2b1b276c305",
|
||||
"mtime": 1787300292.7980561,
|
||||
"ast_hash": "5ae38e12de5b7de9ea4852899f61cea7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/io_order.py": {
|
||||
"mtime": 1787286144.0774581,
|
||||
"ast_hash": "6e528992d8c401f8e9539ce48e656268",
|
||||
"mtime": 1787307312.2637672,
|
||||
"ast_hash": "cfbfa30353ae2889fc169fb16cf4c5f0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/menu_badge.py": {
|
||||
@@ -875,8 +875,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/plan.py": {
|
||||
"mtime": 1787278860.7404675,
|
||||
"ast_hash": "e2330f1ccaa052f56ef203ea3bc73de3",
|
||||
"mtime": 1787365054.3388777,
|
||||
"ast_hash": "5d2f5a63ce88db608658947cab5d698a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/resource_snapshot.py": {
|
||||
@@ -885,8 +885,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/transport.py": {
|
||||
"mtime": 1787282296.7963567,
|
||||
"ast_hash": "937f86f8be800138db7cb8092d5ef5c0",
|
||||
"mtime": 1787306410.756548,
|
||||
"ast_hash": "1679a11ccaac5c6efcdb203c7d5ebd50",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/schemas/pl/transport_address.py": {
|
||||
@@ -1065,8 +1065,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_freight_settlement_service.py": {
|
||||
"mtime": 1785967238.1022503,
|
||||
"ast_hash": "ff2ee48d50b83616505432076b707dc1",
|
||||
"mtime": 1787307356.514379,
|
||||
"ast_hash": "1610c20185911bc8ddaf0ab4d5a56ec7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_inventory_link_read.py": {
|
||||
@@ -1130,18 +1130,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_vehicle_maintenance_service.py": {
|
||||
"mtime": 1783761151.0,
|
||||
"ast_hash": "ee1c11ad2ae21eddc4cbc2015b16a261",
|
||||
"mtime": 1787306679.4630435,
|
||||
"ast_hash": "17e6f914d4aaf3fd9e498ad1e3b77748",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_vehicle_recharge_service.py": {
|
||||
"mtime": 1783760938.0,
|
||||
"ast_hash": "fb8eb1f17753b7e3beb90ed2b14d021e",
|
||||
"mtime": 1787306679.4620597,
|
||||
"ast_hash": "a6774aab3d3d0b288092ead01674a87b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_vehicle_urea_service.py": {
|
||||
"mtime": 1782696213.0,
|
||||
"ast_hash": "bc2d490f09fc8fe8a59b2685c02f68d0",
|
||||
"mtime": 1787306679.4624813,
|
||||
"ast_hash": "6a0ae9fbc0655682b5519fed8c0bfd48",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/web_auth_roles.py": {
|
||||
@@ -1195,13 +1195,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/utils/crm_export_columns.py": {
|
||||
"mtime": 1780743830.0,
|
||||
"ast_hash": "b24d3dcc0dadcfcc7b6db5171873a852",
|
||||
"mtime": 1787358314.9280481,
|
||||
"ast_hash": "f462870bb7a4ddf7ec160b6d24f24100",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/utils/excel_export.py": {
|
||||
"mtime": 1780242127.0,
|
||||
"ast_hash": "3a3590bf5730f7eb196963e76d5baa21",
|
||||
"mtime": 1787302363.5140796,
|
||||
"ast_hash": "3f7826a7e06e189f3d66b86b9fb727d9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/ws/__init__.py": {
|
||||
@@ -1625,8 +1625,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_plan_contract_gap.py": {
|
||||
"mtime": 1787202689.374864,
|
||||
"ast_hash": "8cf065f81ee8b548875211cd6ed18b2b",
|
||||
"mtime": 1787307489.20169,
|
||||
"ast_hash": "d302a04697a33d19b1edc7b0c7669478",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/tasks/pl_personnel_age.py": {
|
||||
@@ -1693,5 +1693,20 @@
|
||||
"mtime": 1787200408.1128635,
|
||||
"ast_hash": "1cea826045c760885d98f5412bafea49",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/api/bx/export_common.py": {
|
||||
"mtime": 1787307772.6119313,
|
||||
"ast_hash": "bf4a7c304e103a22128fa7aa974380e5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"app/services/pl_plan_arrange_copy_flags.py": {
|
||||
"mtime": 1787365116.4940052,
|
||||
"ast_hash": "080f65622a36679d37f6678504926d50",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tests/test_excel_export_helpers.py": {
|
||||
"mtime": 1787302353.0787885,
|
||||
"ast_hash": "53d3cdff0d42d217befb9787e51febaa",
|
||||
"semantic_hash": ""
|
||||
}
|
||||
}
|
||||
+226
-226
@@ -855,8 +855,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"scripts/add-list-index-columns.py": {
|
||||
"mtime": 1782865925.0,
|
||||
"ast_hash": "7343162797ced5e069ba23c077eabc85",
|
||||
"mtime": 1787365388.6714687,
|
||||
"ast_hash": "b8f8e7396a1d73d75fa87d60f39c07c7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"scripts/apply-list-toolbar-refresh.py": {
|
||||
@@ -1080,8 +1080,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/api/pl/index.ts": {
|
||||
"mtime": 1787307522.446101,
|
||||
"ast_hash": "62ca56cf37c1814c7170b184e37f88d6",
|
||||
"mtime": 1787365072.529509,
|
||||
"ast_hash": "a07b6fcc0f96c9eb15439c16a18f21cc",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/api/pl/public-io-order.ts": {
|
||||
@@ -1130,13 +1130,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/ContactSelector.vue": {
|
||||
"mtime": 1784512525.0,
|
||||
"ast_hash": "2f85beab370462e20bd23ded85e9e657",
|
||||
"mtime": 1787365367.3067412,
|
||||
"ast_hash": "11e0000db73db9d1600c53649b4290e7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/CustomerSelector.vue": {
|
||||
"mtime": 1786192311.1144469,
|
||||
"ast_hash": "88947df770892c4719d6f9a286015960",
|
||||
"mtime": 1787365367.3055649,
|
||||
"ast_hash": "3fc5ea445764b9bcec14f6a311f8c05b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/DictSelect/index.vue": {
|
||||
@@ -1165,13 +1165,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/OpportunitySelector.vue": {
|
||||
"mtime": 1782858534.0,
|
||||
"ast_hash": "7dc156d9edcbc901e144710115fc28c3",
|
||||
"mtime": 1787365367.30611,
|
||||
"ast_hash": "f77b485194326861dbfb6124dcb0368e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/QuoteSelector.vue": {
|
||||
"mtime": 1786201922.9244518,
|
||||
"ast_hash": "2fe381187e74d218116f2955a81e199a",
|
||||
"mtime": 1787365367.3065276,
|
||||
"ast_hash": "02e40225ae7283fbc760fd0e9e0ef9ec",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/TinyMceEditor/index.vue": {
|
||||
@@ -1210,8 +1210,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/contract-selector/index.vue": {
|
||||
"mtime": 1786864543.5032554,
|
||||
"ast_hash": "e3bb618296de22aa1b4b8081bf2d7a44",
|
||||
"mtime": 1787365367.323246,
|
||||
"ast_hash": "f8139cb7929ea556c29db5a55f74fa71",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/db/DbCrmCustomerSelect.vue": {
|
||||
@@ -1280,8 +1280,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/list-table/index.vue": {
|
||||
"mtime": 1786864542.9017272,
|
||||
"ast_hash": "8ee952596e25f19d9681f3f8a1913644",
|
||||
"mtime": 1787365419.766366,
|
||||
"ast_hash": "47f53a387dba003a9ab273eeb0a6be80",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/list-toolbar-end-actions/index.vue": {
|
||||
@@ -1300,8 +1300,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-carrier-library-select-dialog/index.vue": {
|
||||
"mtime": 1785974019.7895732,
|
||||
"ast_hash": "11ac4aff3b926cae53089a18058e1e58",
|
||||
"mtime": 1787365367.322513,
|
||||
"ast_hash": "c42753b1e144c352e5a35f50be6f76aa",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-carrier-list-attachment-cell/index.vue": {
|
||||
@@ -1315,8 +1315,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-cert-form-list/index.vue": {
|
||||
"mtime": 1787200499.0801086,
|
||||
"ast_hash": "765bcb3446fc048ee4991b0e2f39af57",
|
||||
"mtime": 1787365367.3186133,
|
||||
"ast_hash": "f251515ba0cde8c1b7f4f6aaa03c0f50",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-cert-list-attachment-cell/index.vue": {
|
||||
@@ -1325,8 +1325,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-cert-view-list/index.vue": {
|
||||
"mtime": 1785689659.134108,
|
||||
"ast_hash": "b4b0ff74472a9770ed56416277208065",
|
||||
"mtime": 1787365367.3245804,
|
||||
"ast_hash": "682db930bbd4dddbb76ea88f56fdeca9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-delivery-slip-print-dialog/index.vue": {
|
||||
@@ -1340,18 +1340,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-freight-disburse-dialog/index.vue": {
|
||||
"mtime": 1785689659.134722,
|
||||
"ast_hash": "eec758632564ed99eb96b7eaa66bad66",
|
||||
"mtime": 1787365367.3158588,
|
||||
"ast_hash": "b12af8e04594c7fb0d0c14daf9f55b23",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-freight-settlement-form-dialog/index.vue": {
|
||||
"mtime": 1787300252.478534,
|
||||
"ast_hash": "8d11acb72d741b9aab6546954b2020fe",
|
||||
"mtime": 1787365367.3152747,
|
||||
"ast_hash": "b8b37ee7c12e00ad98811ff527db6e46",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-freight-settlement-view-dialog/index.vue": {
|
||||
"mtime": 1785689659.1353545,
|
||||
"ast_hash": "eb9ae78655ce69de36566d0e4998e6c9",
|
||||
"mtime": 1787365367.3236,
|
||||
"ast_hash": "adc81f47ba57eb4a75c28bf6ff8ced0c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-inbound-slip-print-dialog/index.vue": {
|
||||
@@ -1375,8 +1375,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-personnel-library-select-panel/index.vue": {
|
||||
"mtime": 1787148253.0268295,
|
||||
"ast_hash": "cef22d15c60eb8be9874fdec2c803699",
|
||||
"mtime": 1787365367.3203726,
|
||||
"ast_hash": "76f4fb2621940ca219a53eb156bf7476",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-plan-archive-dialog/index.vue": {
|
||||
@@ -1405,8 +1405,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-plan-form-dialog/PlPlanFormProductTable.vue": {
|
||||
"mtime": 1787296754.6438615,
|
||||
"ast_hash": "8e1487433f56eef81ce368a9010c276a",
|
||||
"mtime": 1787365367.3216565,
|
||||
"ast_hash": "907448765ec2b08c2f79010661ddbbc7",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-plan-form-dialog/index.vue": {
|
||||
@@ -1465,8 +1465,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-transport-address-select-dialog/index.vue": {
|
||||
"mtime": 1785970563.4827487,
|
||||
"ast_hash": "862154db74439c32842ec1051effb75d",
|
||||
"mtime": 1787365367.3147173,
|
||||
"ast_hash": "b2f11d185294e1304f8eab5ad36c8db6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-vehicle-cert-badges/index.vue": {
|
||||
@@ -1490,13 +1490,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-vehicle-form-dialog/index.vue": {
|
||||
"mtime": 1787201032.7385561,
|
||||
"ast_hash": "831293e13201b4e080c30c212e302898",
|
||||
"mtime": 1787365367.3165736,
|
||||
"ast_hash": "3491508b98e0528ab489379a0a0090a6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-vehicle-library-select-dialog/index.vue": {
|
||||
"mtime": 1787151766.1490717,
|
||||
"ast_hash": "97f8916517dfc57a2763b841b0a00609",
|
||||
"mtime": 1787365367.3191223,
|
||||
"ast_hash": "027e7503e02a49c6d73c119d3d04689c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/pl-vehicle-personnel-select-cell/index.vue": {
|
||||
@@ -1550,8 +1550,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/product-category-maintain-panel/index.vue": {
|
||||
"mtime": 1786149390.3132274,
|
||||
"ast_hash": "86726c536e242834b85b6c393d7a13b3",
|
||||
"mtime": 1787365367.317526,
|
||||
"ast_hash": "394ce4787e739ef24b9f39f5330633e4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/product-form-dialog/index.vue": {
|
||||
@@ -1560,8 +1560,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/product-selector/index.vue": {
|
||||
"mtime": 1787293684.7255564,
|
||||
"ast_hash": "1e9ca86c477ee860a05c4592e0062774",
|
||||
"mtime": 1787365367.3180416,
|
||||
"ast_hash": "136c373714a02d89e4546ecf149ad33b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/business/product-view-dialog/index.vue": {
|
||||
@@ -1750,8 +1750,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/core/base/list-index-column/index.vue": {
|
||||
"mtime": 1782865843.0,
|
||||
"ast_hash": "f33b59225e189655c09853759400b048",
|
||||
"mtime": 1787365367.312815,
|
||||
"ast_hash": "6b156728683932bd3ceda447c2a12286",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/components/core/cards/art-bar-chart-card/index.vue": {
|
||||
@@ -2195,8 +2195,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/composables/usePersistedListColumnWidths.ts": {
|
||||
"mtime": 1785689422.1929326,
|
||||
"ast_hash": "b439b83fc7080dfce90b7352a88badbd",
|
||||
"mtime": 1787365418.5307777,
|
||||
"ast_hash": "fe7a326bb0259f504ab4f0d4061d8d5f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/composables/usePersistedListColumns.ts": {
|
||||
@@ -3215,73 +3215,73 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/advance/apply/index.vue": {
|
||||
"mtime": 1787308216.620744,
|
||||
"ast_hash": "59a38c14dda2eb0020c7e0ef6e84370b",
|
||||
"mtime": 1787365367.3437476,
|
||||
"ast_hash": "b6de57bb54504f17bf6bc05e72cbfa26",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/advance/approve/index.vue": {
|
||||
"mtime": 1787308303.2527864,
|
||||
"ast_hash": "e3e3bf128ef833fcaab6abeacb570c89",
|
||||
"mtime": 1787365367.3442945,
|
||||
"ast_hash": "fa30218cafa5c6921870061498e38fa3",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/advance/issue/index.vue": {
|
||||
"mtime": 1787308367.9486477,
|
||||
"ast_hash": "08ba1fe1020184a37c7217c1d3b99d64",
|
||||
"mtime": 1787365367.3447459,
|
||||
"ast_hash": "260e92c13444a2e31af0e63c1dad417a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/expense-item/index.vue": {
|
||||
"mtime": 1787308216.6214004,
|
||||
"ast_hash": "a4aec25a3bac5dee2572e666c1a79546",
|
||||
"mtime": 1787365367.3488414,
|
||||
"ast_hash": "97b6ec603c35e681ad77fa8f426609a6",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/invoice-wallet/admin/index.vue": {
|
||||
"mtime": 1787308460.6475697,
|
||||
"ast_hash": "e43ed0edc71afaf99d2a431e5ef933ee",
|
||||
"mtime": 1787365367.3428288,
|
||||
"ast_hash": "04ff187cceb98bcd48c0a5f2cf33ab52",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/invoice-wallet/mine/index.vue": {
|
||||
"mtime": 1786869361.0395384,
|
||||
"ast_hash": "2118384448c4ce2cfa7c6700ec4deaf9",
|
||||
"mtime": 1787365367.3433208,
|
||||
"ast_hash": "0f574595b8a3ce966b81e2a55596ade1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/payment/index.vue": {
|
||||
"mtime": 1787308367.9113164,
|
||||
"ast_hash": "e257a0813532b06f362ca91d183d5f5f",
|
||||
"mtime": 1787365367.340908,
|
||||
"ast_hash": "d6ee73d13c6962815a338d5edbd12a6a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/reimburse/apply/index.vue": {
|
||||
"mtime": 1787308216.62235,
|
||||
"ast_hash": "916fe6d6b59b95dad8b7440ac05e877c",
|
||||
"mtime": 1787365367.3454697,
|
||||
"ast_hash": "b78b415ebfa36133618c8090c5b90dc3",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/reimburse/approve/index.vue": {
|
||||
"mtime": 1787308303.2555976,
|
||||
"ast_hash": "869e4df53872163f9ef6e61c8d63a42d",
|
||||
"mtime": 1787365367.3458188,
|
||||
"ast_hash": "56a741bc8a927058d07d80ab43b89c88",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/view/all/index.vue": {
|
||||
"mtime": 1787308400.9500096,
|
||||
"ast_hash": "f7cab33a33739fbb245b65fcd390fb66",
|
||||
"mtime": 1787365367.3481562,
|
||||
"ast_hash": "329ab5cf9ae877ab57c2ed2080809c3b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/view/mine/index.vue": {
|
||||
"mtime": 1787308400.9503834,
|
||||
"ast_hash": "85d915f21e025d1952211b1ced5b674a",
|
||||
"mtime": 1787365367.3486176,
|
||||
"ast_hash": "5e44386961afa12c6c5aa32c20d9ce41",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/view/todo/index.vue": {
|
||||
"mtime": 1787308400.9507341,
|
||||
"ast_hash": "f2b883f0cd6482ede3b922e2b94f35c0",
|
||||
"mtime": 1787365367.3483875,
|
||||
"ast_hash": "436d4973cf63b071a426d0d1ff1bcb31",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/workflow/advance/index.vue": {
|
||||
"mtime": 1786180978.7393909,
|
||||
"ast_hash": "21412f80dbf9c2395ce365f0c07daef6",
|
||||
"mtime": 1787365367.3473396,
|
||||
"ast_hash": "375c14ae01582c8088d08598d80de86c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/bx/workflow/reimburse/index.vue": {
|
||||
"mtime": 1786180978.7401252,
|
||||
"ast_hash": "bb10a654d5e4766d84abc34be6d5c5c3",
|
||||
"mtime": 1787365367.3477428,
|
||||
"ast_hash": "9537c9451a4686cf472f4f9f7096fdc9",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/clue/assignForm.vue": {
|
||||
@@ -3315,18 +3315,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/clue/index.vue": {
|
||||
"mtime": 1787308974.7761765,
|
||||
"ast_hash": "47f3b96bb084ed786c6787c7209a167b",
|
||||
"mtime": 1787365367.349227,
|
||||
"ast_hash": "d0dd70800d2ecfae7685770662699460",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/clue/invalidForm.vue": {
|
||||
"mtime": 1785689659.0431318,
|
||||
"ast_hash": "fce48aefbea4969cf4236ecb1214c6f4",
|
||||
"mtime": 1787365367.3493547,
|
||||
"ast_hash": "e553bee5458c7f6ea8753cf67a86597a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/clue/statistics/index.vue": {
|
||||
"mtime": 1786180978.7470624,
|
||||
"ast_hash": "10d49e718fd6adec422e7cddb50be33e",
|
||||
"mtime": 1787365367.3499734,
|
||||
"ast_hash": "5a8934f38e1abe5cf514ab75a0eaa5f2",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/ContractListPage.vue": {
|
||||
@@ -3335,8 +3335,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/approval-record/index.vue": {
|
||||
"mtime": 1787309750.5862012,
|
||||
"ast_hash": "5f2e22d4c7837b6e7482adfacfc4888e",
|
||||
"mtime": 1787365367.3542929,
|
||||
"ast_hash": "96dde80c41a311751d6e4b30b8dad873",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/approval/index.vue": {
|
||||
@@ -3350,8 +3350,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/change/index.vue": {
|
||||
"mtime": 1787309750.5850153,
|
||||
"ast_hash": "0dafcee18120931db05069883a302f02",
|
||||
"mtime": 1787365367.353819,
|
||||
"ast_hash": "66bdc33ec2fdbee574d1cda917c83416",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/components/ApprovalDialog.vue": {
|
||||
@@ -3365,13 +3365,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/components/ContractDetailDialog.vue": {
|
||||
"mtime": 1787131068.8514423,
|
||||
"ast_hash": "83377594a48e22cc797a78a415f381fe",
|
||||
"mtime": 1787365367.3556366,
|
||||
"ast_hash": "41a6f70fd2117d929a32b42dbe97982b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/components/ContractFormDialog.vue": {
|
||||
"mtime": 1787298400.776633,
|
||||
"ast_hash": "47581bad42b413ac13eb536e1b257a19",
|
||||
"mtime": 1787365367.3563535,
|
||||
"ast_hash": "716916921fbfcbbc168215511dba94a1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/components/ExecuteDialog.vue": {
|
||||
@@ -3400,8 +3400,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/detail.vue": {
|
||||
"mtime": 1787131054.2373319,
|
||||
"ast_hash": "104a4fe7480f29023dea73a6fa975a41",
|
||||
"mtime": 1787365367.3530853,
|
||||
"ast_hash": "89be951ca765489b2f19bcff0946f32f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/form.vue": {
|
||||
@@ -3430,13 +3430,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/contract/template/index.vue": {
|
||||
"mtime": 1787309750.585643,
|
||||
"ast_hash": "dcb101d1ac1c1c4ac46243b54e60778f",
|
||||
"mtime": 1787365367.3546348,
|
||||
"ast_hash": "8690af6669fde049586c40d46159db41",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/CustomerDetailDialog.vue": {
|
||||
"mtime": 1787300252.3340435,
|
||||
"ast_hash": "3afd21934b34d8f2734d671f2bac61c7",
|
||||
"mtime": 1787365367.3613567,
|
||||
"ast_hash": "0eb4fd215c078d8c891a8045d011260f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/CustomerFormDialog.vue": {
|
||||
@@ -3470,23 +3470,23 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/components/ContactList.vue": {
|
||||
"mtime": 1785689659.0610752,
|
||||
"ast_hash": "b26f6da46439bb5a30aceb6eeebffc67",
|
||||
"mtime": 1787365367.3617315,
|
||||
"ast_hash": "1fd2a26451a68baacdd59b8977b9eb7e",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/components/InvoiceInfo.vue": {
|
||||
"mtime": 1787207257.0870967,
|
||||
"ast_hash": "9e76ec3e09c503d06f5b3bc29df87c99",
|
||||
"mtime": 1787365367.3620698,
|
||||
"ast_hash": "268ed8c55a77d244e0f5e3667be89efa",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/index.vue": {
|
||||
"mtime": 1787308974.7770517,
|
||||
"ast_hash": "5329b6d70b97d725b35c8e6f2de846e3",
|
||||
"mtime": 1787365367.360854,
|
||||
"ast_hash": "28b1d0ca93b239c890ee330ecf081660",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/pool/RuleIndex.vue": {
|
||||
"mtime": 1787358332.0645356,
|
||||
"ast_hash": "2f9b0311352022c6042618246d407d3e",
|
||||
"mtime": 1787365367.3629239,
|
||||
"ast_hash": "5df3146d3e4e816d7ffd5fa2e2cd08b1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/pool/components/AssignDialog.vue": {
|
||||
@@ -3505,8 +3505,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/customer/pool/index.vue": {
|
||||
"mtime": 1787358332.063912,
|
||||
"ast_hash": "9425a9c5e84e9e7b13ef88fb30bf49d9",
|
||||
"mtime": 1787365367.3625152,
|
||||
"ast_hash": "737179cf7efe5c1f79da89c4cd8d413c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/opportunity/components/BatchUpdateDateDialog.vue": {
|
||||
@@ -3555,13 +3555,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/opportunity/funnel.vue": {
|
||||
"mtime": 1786180978.7490695,
|
||||
"ast_hash": "4a97d3363dc10c793cfeecf5629c2e90",
|
||||
"mtime": 1787365367.3513744,
|
||||
"ast_hash": "0857c74d62b6daa9bb7c6dc21787b6ed",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/opportunity/index.vue": {
|
||||
"mtime": 1787309039.922559,
|
||||
"ast_hash": "236a706aa8b710b4dabbfaa71eb3b488",
|
||||
"mtime": 1787365367.3503015,
|
||||
"ast_hash": "306553739c212ffa4cf52f4c89cd9471",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/opportunity/kanban.vue": {
|
||||
@@ -3570,8 +3570,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/opportunity/statistics.vue": {
|
||||
"mtime": 1786280235.0759757,
|
||||
"ast_hash": "34cacd49ab1634eede32d5f559717325",
|
||||
"mtime": 1787365367.3518243,
|
||||
"ast_hash": "c20ff591f9e8e30a65e1749b9beaa46a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/price-letter/components/VoidDialog.vue": {
|
||||
@@ -3580,8 +3580,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/price-letter/index.vue": {
|
||||
"mtime": 1787300252.3168125,
|
||||
"ast_hash": "6ecd697f8c2655f12ea1e9e54dfe5d13",
|
||||
"mtime": 1787365367.3633907,
|
||||
"ast_hash": "f00b21960cf29bf7ff029db1d27c5d9d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/product-category/index.vue": {
|
||||
@@ -3590,8 +3590,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/product/index.vue": {
|
||||
"mtime": 1787303146.0736954,
|
||||
"ast_hash": "69ff4bec83c3bbcea6645b78d3238e83",
|
||||
"mtime": 1787365367.3603685,
|
||||
"ast_hash": "19c606b36dee52d80cc638d487776300",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/QuoteListPage.vue": {
|
||||
@@ -3620,8 +3620,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/components/QuoteDetailDialog.vue": {
|
||||
"mtime": 1786184158.768501,
|
||||
"ast_hash": "f3a0396239543bae39092ad017335a23",
|
||||
"mtime": 1787365367.3589664,
|
||||
"ast_hash": "326928d08256196f204c8f70c3beff16",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/components/QuoteFormDialog.vue": {
|
||||
@@ -3630,8 +3630,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/components/QuoteFormPanel.vue": {
|
||||
"mtime": 1787296651.1661232,
|
||||
"ast_hash": "d22b656dcc80949dd142f56ec1cfa641",
|
||||
"mtime": 1787365367.3593798,
|
||||
"ast_hash": "a5b57d8eedd3d9d40000ea69ca8cdf7d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/components/ShareDialog.vue": {
|
||||
@@ -3640,8 +3640,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/components/ShareStatsTab.vue": {
|
||||
"mtime": 1782865905.0,
|
||||
"ast_hash": "28ab7f3e91ee1a2baa8ab3799feed75a",
|
||||
"mtime": 1787365367.359684,
|
||||
"ast_hash": "272aa35a0e9c68e88bc0f9553a6a7446",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/components/ToContractDialog.vue": {
|
||||
@@ -3685,8 +3685,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/quote/statistics.vue": {
|
||||
"mtime": 1786181040.178695,
|
||||
"ast_hash": "54897b23ac4fe83f65465310bd1f121f",
|
||||
"mtime": 1787365367.3582804,
|
||||
"ast_hash": "ad5c3db175837b46e4b1af1ee0712427",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/crm/supplier-hazard/index.vue": {
|
||||
@@ -3705,38 +3705,38 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/db/inventory/index.vue": {
|
||||
"mtime": 1787309658.4166605,
|
||||
"ast_hash": "75b2968a4c958df684bb1f8f488bc9dd",
|
||||
"mtime": 1787365367.371145,
|
||||
"ast_hash": "401dfcbf481ba1d40ff377022bbf3088",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/db/plans/index.vue": {
|
||||
"mtime": 1787309658.416299,
|
||||
"ast_hash": "5eb3b97eafc2477f0b2d5ea23093650e",
|
||||
"mtime": 1787365367.3705466,
|
||||
"ast_hash": "c495e6d846844f428aef78f4c0bc87c1",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/db/weighing/index.vue": {
|
||||
"mtime": 1787309658.4175203,
|
||||
"ast_hash": "5fefe9cd86251c92665b7599216f943f",
|
||||
"mtime": 1787365367.3719163,
|
||||
"ast_hash": "b274113bf844b0dc8bb1ccb37b8da68f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/demo/category/index.vue": {
|
||||
"mtime": 1787309769.5037541,
|
||||
"ast_hash": "4ab7682cc77e5caa6ec21b4b4afa42e8",
|
||||
"mtime": 1787365367.3275948,
|
||||
"ast_hash": "3ee50870a4cbc44f2ca1cd2941e0d28d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/demo/order/index.vue": {
|
||||
"mtime": 1787300252.3047872,
|
||||
"ast_hash": "5b93a6f19644ce7014426cc2f49e2166",
|
||||
"mtime": 1787365367.3267865,
|
||||
"ast_hash": "bc8f6d00cea78435aab72bf3ff79b29c",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/demo/product/index.vue": {
|
||||
"mtime": 1787309769.2953303,
|
||||
"ast_hash": "393174be1c4b492a310c4af0f198b3ba",
|
||||
"mtime": 1787365367.3286734,
|
||||
"ast_hash": "2d230983900b0837e9dad48e823bf6cd",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/demo/unit/index.vue": {
|
||||
"mtime": 1787300252.2914944,
|
||||
"ast_hash": "27027a72858582bc3f5052a095caad35",
|
||||
"mtime": 1787365367.3270957,
|
||||
"ast_hash": "89e98662beab574a3c2c424a3c6cc821",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/duty/schedule/index.vue": {
|
||||
@@ -3775,18 +3775,18 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/_shared/IoOrderListPage.vue": {
|
||||
"mtime": 1787307068.219929,
|
||||
"ast_hash": "63f5374b626423c06d8a552e36fb170e",
|
||||
"mtime": 1787365367.3383193,
|
||||
"ast_hash": "de758a9c4edb8aaeb250aabe39ac5fdf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/carrier/index.vue": {
|
||||
"mtime": 1787305645.5693307,
|
||||
"ast_hash": "517d3b4c82ab4ade260acfaaa0a4020f",
|
||||
"mtime": 1787365367.3389173,
|
||||
"ast_hash": "ee72684204c2f7427fba00b9f47ed934",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/driver/index.vue": {
|
||||
"mtime": 1787306072.4408052,
|
||||
"ast_hash": "6f99f54aac6711110e3a64ffc8ce022c",
|
||||
"mtime": 1787365367.3304417,
|
||||
"ast_hash": "d934055315b9072f0f4e6ac69fd36702",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight-approval/index.vue": {
|
||||
@@ -3800,33 +3800,33 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/components/ApprovalDonePanel.vue": {
|
||||
"mtime": 1787307396.4621825,
|
||||
"ast_hash": "596def05037a1d8eefb6d6c3d0436c73",
|
||||
"mtime": 1787365367.3351405,
|
||||
"ast_hash": "274857516e5c1809cc539c9fa36eac20",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/components/ApprovalPendingPanel.vue": {
|
||||
"mtime": 1787307415.105814,
|
||||
"ast_hash": "ededfbed85167790c7c41ba6b07d2e03",
|
||||
"mtime": 1787365367.333796,
|
||||
"ast_hash": "09d2f78864b8db950568d7612d35c813",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/components/DisbursePanel.vue": {
|
||||
"mtime": 1787307415.1060565,
|
||||
"ast_hash": "cb227ebdad9d2b5c7f6317a99f3227ac",
|
||||
"mtime": 1787365367.3341858,
|
||||
"ast_hash": "32ede43f05f00d4bfa97217fa85d2449",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/components/SettledPanel.vue": {
|
||||
"mtime": 1787307415.1063619,
|
||||
"ast_hash": "b4e77114a36f672ce4cca0ef52452e17",
|
||||
"mtime": 1787365367.3344934,
|
||||
"ast_hash": "291c29f72923e35fddaf11c6baee0f10",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/components/SettlementBillPanel.vue": {
|
||||
"mtime": 1787307396.4612615,
|
||||
"ast_hash": "6bd8b45c7136d21aa9b7b5ac4dbf14c6",
|
||||
"mtime": 1787365367.3348513,
|
||||
"ast_hash": "0e2be4a724ffed2e0dcfa37ee312c816",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/components/UnsettledPlanPanel.vue": {
|
||||
"mtime": 1787307396.460538,
|
||||
"ast_hash": "73367ae0e3e3a123c06380354c52be1c",
|
||||
"mtime": 1787365367.3334916,
|
||||
"ast_hash": "b907a33ae30eaceb3575f448c2c8a898",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/freight/freight-status.ts": {
|
||||
@@ -3845,13 +3845,13 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/inventory/document-reminder.vue": {
|
||||
"mtime": 1787307536.7743504,
|
||||
"ast_hash": "b5d72eaad5fa2938769a6f88f1911612",
|
||||
"mtime": 1787365367.3372443,
|
||||
"ast_hash": "34a3d362efa94446be5f35b464d03922",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/inventory/ledger.vue": {
|
||||
"mtime": 1787307027.16925,
|
||||
"ast_hash": "2731b79b120047d4c6e853bec636f495",
|
||||
"mtime": 1787365367.3369303,
|
||||
"ast_hash": "0b55205c825e240832e8198344f5c15a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/outbound/index.vue": {
|
||||
@@ -3860,23 +3860,23 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/personnel/index.vue": {
|
||||
"mtime": 1787306093.7451673,
|
||||
"ast_hash": "83b5104282d260de59c2ec70670495cc",
|
||||
"mtime": 1787365367.339165,
|
||||
"ast_hash": "3a23e71007b20398f7acaf8946e54f73",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan-archive/index.vue": {
|
||||
"mtime": 1787306340.3871834,
|
||||
"ast_hash": "f14767e52842099a2d2c5ba98f3f524a",
|
||||
"mtime": 1787365367.337572,
|
||||
"ast_hash": "51db35c9cc392b5e02ec9cb9cb3d94fb",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan-cert/index.vue": {
|
||||
"mtime": 1787306340.38841,
|
||||
"ast_hash": "7b10bbe67775dd7d3de69acab1dc34b2",
|
||||
"mtime": 1787365367.3290691,
|
||||
"ast_hash": "e0cbe32b52459331014188a4bd257fb2",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan-contract/index.vue": {
|
||||
"mtime": 1787307536.7752645,
|
||||
"ast_hash": "1eac9a08f0ea05553d0638d6026c49b2",
|
||||
"mtime": 1787365367.3359025,
|
||||
"ast_hash": "fe47ee8a8730e4186af46b509438153d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan/arrange.vue": {
|
||||
@@ -3885,68 +3885,68 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan/detail.vue": {
|
||||
"mtime": 1786180978.7150972,
|
||||
"ast_hash": "3e963d9053ddbcc5b11c29f51b6048af",
|
||||
"mtime": 1787365367.3316083,
|
||||
"ast_hash": "7eddf6861ca2772ed1002bc5754a5b83",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan/form.vue": {
|
||||
"mtime": 1786180978.7156172,
|
||||
"ast_hash": "b833474f857b65e149dce58dc65f60c5",
|
||||
"mtime": 1787365367.3319066,
|
||||
"ast_hash": "9e7fe246a50021ac63f2beb280b8b9c4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/plan/index.vue": {
|
||||
"mtime": 1787306317.9838398,
|
||||
"ast_hash": "a511d1dcd923b67f61d04c1f49b1a794",
|
||||
"mtime": 1787365367.3312416,
|
||||
"ast_hash": "11101f3298e194bc46906a4d39f80a43",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/self-vehicle/index.vue": {
|
||||
"mtime": 1787306072.4391778,
|
||||
"ast_hash": "f32317163c7e3f3e79c3e80682bb1eea",
|
||||
"mtime": 1787365367.337826,
|
||||
"ast_hash": "26def3b831ece030f2d93030ce290f3b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/transport-address/index.vue": {
|
||||
"mtime": 1787306148.787645,
|
||||
"ast_hash": "a41220d7f3d7cb2f4bbef8759c74692f",
|
||||
"mtime": 1787365367.332275,
|
||||
"ast_hash": "d7e21cf4aac2fc827d43990a837b8f43",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/transport/index.vue": {
|
||||
"mtime": 1787306340.3889112,
|
||||
"ast_hash": "02abd7497dabda224d0d3cc3ad407793",
|
||||
"mtime": 1787365367.3295105,
|
||||
"ast_hash": "52440be8b00e12946e21e5b1f74de00f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle-maintenance-apply/index.vue": {
|
||||
"mtime": 1787306454.1908398,
|
||||
"ast_hash": "e4a1efc43ee652e7a0166fdd3e392d9e",
|
||||
"mtime": 1787365367.3327093,
|
||||
"ast_hash": "fb78967d1f782284fb5d4b3f095680ef",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle-maintenance-process/index.vue": {
|
||||
"mtime": 1787306822.1026068,
|
||||
"ast_hash": "c94cb35cc56feed2198a94766415407b",
|
||||
"mtime": 1787365367.3394198,
|
||||
"ast_hash": "8d0cd34a7b51f6b423e6f80ec9309ecf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle-recharge-apply/index.vue": {
|
||||
"mtime": 1787306822.1001072,
|
||||
"ast_hash": "7c0e225dfa640e4cc22f782a084e5c17",
|
||||
"mtime": 1787365367.3331335,
|
||||
"ast_hash": "8effc8211a14541be56e577a7137baef",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle-recharge-record/index.vue": {
|
||||
"mtime": 1787306822.1005454,
|
||||
"ast_hash": "0bedfdd334366b373c216670c03b7018",
|
||||
"mtime": 1787365367.3302405,
|
||||
"ast_hash": "7ceeb9e83fbae873800bc1e7f5c6cc84",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle-urea-apply/index.vue": {
|
||||
"mtime": 1787306822.1011033,
|
||||
"ast_hash": "e51a70660525e31d229db38c717305db",
|
||||
"mtime": 1787365367.336611,
|
||||
"ast_hash": "ffa46b371282f92bea063ce51a2a9bf5",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle-urea-disburse/index.vue": {
|
||||
"mtime": 1787306822.1018808,
|
||||
"ast_hash": "ecf81f8e83628cc83f21af2f8da5b16e",
|
||||
"mtime": 1787365367.3355446,
|
||||
"ast_hash": "456b1603db30bc586cf4f3d7d588284f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/pl/vehicle/index.vue": {
|
||||
"mtime": 1787306072.4381154,
|
||||
"ast_hash": "01901e7da1fe572586bd32501ed20524",
|
||||
"mtime": 1787365367.329891,
|
||||
"ast_hash": "f8e68ecb384f5184223c994c9abc171a",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/portal/home/index.vue": {
|
||||
@@ -3970,8 +3970,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/public/pl/_shared/PublicIoOrderPage.vue": {
|
||||
"mtime": 1787285837.6976671,
|
||||
"ast_hash": "51c132d71db25cbd0743903d276326d0",
|
||||
"mtime": 1787363101.49346,
|
||||
"ast_hash": "3c664af87c4ecb0a7862ebc88f1278f4",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/public/pl/inbound/history.vue": {
|
||||
@@ -4005,8 +4005,8 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/public/pl/transport/index.vue": {
|
||||
"mtime": 1787283282.0512435,
|
||||
"ast_hash": "ac3fb0c693cbade026d9d92b78371bcf",
|
||||
"mtime": 1787363101.2352424,
|
||||
"ast_hash": "b16962e8ef98ff7717c21cdb0344fbf8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/approver-setting/index.vue": {
|
||||
@@ -4015,58 +4015,58 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/dept/index.vue": {
|
||||
"mtime": 1787305070.2119882,
|
||||
"ast_hash": "907b36f7f9c4145531f64a4f8328646e",
|
||||
"mtime": 1787365367.3686805,
|
||||
"ast_hash": "d12fccb3700a9d88f08b3422e0a9ea91",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/dict/index.vue": {
|
||||
"mtime": 1787305070.2482405,
|
||||
"ast_hash": "3053d3135c9e1b3f823fa1680cbe22b2",
|
||||
"mtime": 1787365367.3689375,
|
||||
"ast_hash": "33973ca56277eeb3ed63b28174d1c57f",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/leave/index.vue": {
|
||||
"mtime": 1787304299.604162,
|
||||
"ast_hash": "8913b508f7c4f51229f8d04a38d37847",
|
||||
"mtime": 1787365367.3692615,
|
||||
"ast_hash": "589ca6b9e2b91f7ef24259992c0b0ecf",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/menu/index.vue": {
|
||||
"mtime": 1787305070.480636,
|
||||
"ast_hash": "51f37f81e36bb37b0a4ef7623dd1ca91",
|
||||
"mtime": 1787365367.3679798,
|
||||
"ast_hash": "d6aa2bc292282e4584941e5fcc847e53",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/operlog/index.vue": {
|
||||
"mtime": 1787305070.2482545,
|
||||
"ast_hash": "17790fd2be8b4c2e200b265fb52efff5",
|
||||
"mtime": 1787365367.3650024,
|
||||
"ast_hash": "072d56c8376ad4e42326176fdbd0b01d",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/post/index.vue": {
|
||||
"mtime": 1787304029.896364,
|
||||
"ast_hash": "5b63f6b4288c934b9457f10406a22ed6",
|
||||
"mtime": 1787365367.3647237,
|
||||
"ast_hash": "f98ce917918e7f3ec3b301441a9bc7a0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/role/index.vue": {
|
||||
"mtime": 1787303998.4122179,
|
||||
"ast_hash": "8740321ccee503c2c927c1a99bc0907e",
|
||||
"mtime": 1787365367.3643763,
|
||||
"ast_hash": "548e1bc984d379c1b505c9ca2c264c5b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/site/index.vue": {
|
||||
"mtime": 1787304073.47575,
|
||||
"ast_hash": "8f5dec4d727cd4dc8b4c1cbc09e51e51",
|
||||
"mtime": 1787365367.3683622,
|
||||
"ast_hash": "36bdf1969f7f6a03ea1e7993bad12f26",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/tenant/index.vue": {
|
||||
"mtime": 1787303957.2440748,
|
||||
"ast_hash": "6b673b1802ffe9b3db4bda6780e73a06",
|
||||
"mtime": 1787365367.364058,
|
||||
"ast_hash": "b2b67ba94ba9326b0732c7138366d8c3",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/user/detail.vue": {
|
||||
"mtime": 1786280234.036936,
|
||||
"ast_hash": "de4681f45f1116af4e5b26b64e9c5b0f",
|
||||
"mtime": 1787365367.365747,
|
||||
"ast_hash": "96c8a02d9084b5a0c5be23e0d47917a8",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/user/index.vue": {
|
||||
"mtime": 1787302990.6845987,
|
||||
"ast_hash": "335ed6f863d637496abe4cf859234952",
|
||||
"mtime": 1787365367.3653803,
|
||||
"ast_hash": "7b830865c7644e985fceb5bd686a9e6b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/user/modules/user-dialog.vue": {
|
||||
@@ -4095,23 +4095,23 @@
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/workflow/my-applications/index.vue": {
|
||||
"mtime": 1787305070.2119777,
|
||||
"ast_hash": "09f0074f5d34135bf300c99897d36755",
|
||||
"mtime": 1787365367.3663669,
|
||||
"ast_hash": "0bcc54f2aa910a1e6a413e37abe12b71",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/workflow/process/index.vue": {
|
||||
"mtime": 1787305070.22423,
|
||||
"ast_hash": "f16bd243853f01fbd1f2dd63d92ee47a",
|
||||
"mtime": 1787365367.36773,
|
||||
"ast_hash": "2a2c578843a34d6a7095b3d40b7f55e0",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/workflow/task-completed/index.vue": {
|
||||
"mtime": 1787305070.421325,
|
||||
"ast_hash": "af2ba10617c1db89729656fff8b69189",
|
||||
"mtime": 1787365367.3670566,
|
||||
"ast_hash": "93a4ae3dd85483610b018d23fcc2508b",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"src/views/system/workflow/task-pending/index.vue": {
|
||||
"mtime": 1787305070.2437718,
|
||||
"ast_hash": "426067bdd9a73cb824094435ff16f452",
|
||||
"mtime": 1787365367.3667197,
|
||||
"ast_hash": "5751bb8bb9fb1f7fade5a29c1249e093",
|
||||
"semantic_hash": ""
|
||||
},
|
||||
"tsconfig.json": {
|
||||
|
||||
@@ -191,30 +191,36 @@ Web 管理端弹窗 SHALL 遵循规范:表单 `label-position="top"`;遮罩
|
||||
|
||||
### Requirement: 表格列宽使用 min-width 实现等比缩放
|
||||
|
||||
`web-admin` 中所有 `el-table` 的列宽属性 SHALL 使用 `min-width` 替代 `width`,使浏览器视口宽度变化时各列按基础比例等比伸缩。
|
||||
`web-admin` 中 `el-table` 的**业务数据列与操作列**的列宽属性 SHALL 使用 `min-width` 替代 `width`,使浏览器视口宽度变化时这些列按基础比例等比伸缩。
|
||||
|
||||
**原理**:Element Plus 的布局逻辑是,所有 `min-width` 列按各自 `min-width` 值的比例分配容器可用宽度;当容器宽度小于所有 `min-width` 之和时,触发横向滚动。若部分列使用 `width`(固定宽度),则多余空间全部由 `min-width` 列吸收,导致视口加宽时只有 `min-width` 列变宽而 `width` 列不变。
|
||||
|
||||
**规则**:
|
||||
1. 所有 `el-table-column`(包括序号列、数据列、操作列)SHALL 使用 `min-width` 设定基础宽度,SHALL NOT 使用 `width`。
|
||||
1. 业务数据列、操作列 SHALL 使用 `min-width` 设定基础宽度,SHALL NOT 使用 `width`。
|
||||
2. `min-width` 值即为该列的最小可读宽度,也是等比分配的权重基数。
|
||||
3. `el-table` 本身的 `width` 属性(如弹窗内嵌表格的固定总宽)不受此规则约束。
|
||||
4. **例外(固定窄列)**:`type="selection"`(多选框)与 `type="index"`(序号)列 SHALL 使用固定 `width`(建议多选约 `48`~`55`、序号约 `60`~`68`),SHALL NOT 使用 `min-width`,避免宽屏下被等比拉得过宽。公共组件 `ListIndexColumn` SHALL 遵循同一例外。
|
||||
|
||||
#### Scenario: 新增列表页
|
||||
|
||||
- **WHEN** 新增列表页包含 `el-table`
|
||||
- **THEN** 所有 `el-table-column` 的宽度属性 SHALL 使用 `min-width`,SHALL NOT 使用 `width`
|
||||
- **THEN** 业务数据列与操作列的宽度属性 SHALL 使用 `min-width`,SHALL NOT 使用 `width`;多选列与序号列 SHALL 使用固定 `width`
|
||||
|
||||
#### Scenario: 浏览器窗口宽度变化
|
||||
|
||||
- **WHEN** 用户调整浏览器窗口宽度
|
||||
- **THEN** 各列宽度 SHALL 按 `min-width` 设定的基础比例等比伸缩
|
||||
- **THEN** 业务数据列与操作列宽度 SHALL 按 `min-width` 设定的基础比例等比伸缩;多选列与序号列宽度 SHALL 保持固定,不随视口加宽而膨胀
|
||||
|
||||
#### Scenario: Code review 表格列宽
|
||||
|
||||
- **WHEN** PR 包含新增或修改的 `el-table-column` 且使用 `width` 属性
|
||||
- **WHEN** PR 包含新增或修改的业务数据列 / 操作列 `el-table-column` 且使用 `width` 属性
|
||||
- **THEN** 审查者 SHALL 要求改为 `min-width`
|
||||
|
||||
#### Scenario: Code review 多选与序号列宽
|
||||
|
||||
- **WHEN** PR 包含 `type="selection"` 或 `type="index"` 的 `el-table-column` 且使用 `min-width`
|
||||
- **THEN** 审查者 SHALL 要求改为固定 `width`
|
||||
|
||||
### Requirement: 侧边栏菜单图标层级规则
|
||||
|
||||
`web-admin` 左侧菜单区域的图标展示 SHALL 遵循以下层级规则:
|
||||
|
||||
@@ -261,10 +261,13 @@
|
||||
"259": "Community 259",
|
||||
"260": "Community 260",
|
||||
"261": "Community 261",
|
||||
"262": "zh_CN.js",
|
||||
"262": "index.vue",
|
||||
"263": "canDeleteByCreator",
|
||||
"264": "index.js",
|
||||
"265": "Community 265",
|
||||
"266": "zh_CN.js",
|
||||
"266": "fastEnter.ts",
|
||||
"267": "MENU_BADGE_CODE_SET",
|
||||
"268": "zh_CN.js",
|
||||
"269": "Community 269",
|
||||
"270": "Community 270",
|
||||
"280": "Community 280",
|
||||
|
||||
@@ -261,11 +261,8 @@
|
||||
"259": "Community 259",
|
||||
"260": "Community 260",
|
||||
"261": "Community 261",
|
||||
"262": "zh_CN.js",
|
||||
"263": "v2.5.7 - 2025-09-14",
|
||||
"264": "index.js",
|
||||
"265": "Community 265",
|
||||
"266": "zh_CN.js",
|
||||
"269": "Community 269",
|
||||
"270": "Community 270",
|
||||
"280": "Community 280",
|
||||
@@ -351,7 +348,6 @@
|
||||
"462": "Community 462",
|
||||
"471": "Community 471",
|
||||
"472": "Community 472",
|
||||
"473": "Community 473",
|
||||
"474": "Community 474",
|
||||
"475": "Community 475",
|
||||
"476": "Community 476",
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
+1
@@ -0,0 +1 @@
|
||||
{"nodes": [{"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "label": "add-list-index-columns.py", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L1"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_find_table_spans", "label": "find_table_spans()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L16"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_extract_first_column", "label": "extract_first_column()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L27"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_leading_indent", "label": "leading_indent()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L51"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_build_index_column", "label": "build_index_column()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L56"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_should_use_pagination", "label": "should_use_pagination()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L74"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_insert_index_into_block", "label": "insert_index_into_block()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L88"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_process_file", "label": "process_file()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L108"}, {"id": "path", "label": "Path", "file_type": "code", "source_file": "", "source_location": "", "origin_file": "/Users/wuzilong/work/00code/shanxia2.0/web-admin/scripts/add-list-index-columns.py"}, {"id": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_main", "label": "main()", "file_type": "code", "source_file": "scripts/add-list-index-columns.py", "source_location": "L134"}], "edges": [{"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "re", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L6", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "sys", "relation": "imports", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L7", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "pathlib", "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L8", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_find_table_spans", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L16", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_extract_first_column", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L27", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_leading_indent", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L51", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_build_index_column", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L56", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_py", "target": "users_wuzilong_work_00code_shanxia2_0_web_admin_scripts_add_list_index_columns_should_use_pagination", "relation": "contains", "confidence": "EXTRACTED", "source_file": "scripts/add-list-index-columns.py", "source_location": "L74", "weight": 1.0}, {"source": "users_wuzilong_work_00code_shanxia2_0_web_aLine truncated
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"/Users/zlwu/work/00code/shanxia2.0/web-admin/package.json":{"size":3957,"mtime_ns":1781960299953649209,"hash":"ca01a16c94014e791391dfd8896f93c1ba7c451db1afa2f49f8a2a68b87dcc56"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/tsconfig.json":{"size":921,"mtime_ns":1780108931391506392,"hash":"8cec43256bc87216f729ae2c9588979558b20f33831419aa58502b54f5127c98"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/.vscode/settings.json":{"size":425,"mtime_ns":1780108931156918274,"hash":"0f2b6369eaf54ccac995e091d7ef5e292fa1396eadd32b64cbddd5bba0018d14"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/.vscode/extensions.json":{"size":200,"mtime_ns":1780108931156854566,"hash":"520c42e097d801a599814f12fe6a97bf5d7100e5395fd33217a365baa2cfe3c8"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/locales/langs/zh.json":{"size":10170,"mtime_ns":1783851637746348929,"hash":"015bc477ca647b32f2ef55c87db91ead797ec9db036de6dbf3578cd1be78de89"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/locales/langs/en.json":{"size":10312,"mtime_ns":1783851637976877140,"hash":"c46cb6e3ab9d55364fa79ce2ee42e46fb307f54350ee9abff7a71a74387c5982"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/mock/json/chinaMap.json":{"size":956443,"mtime_ns":1780108931366831877,"hash":"2ce3f532aed5b51fa9b64bf134bf1d77c7886e695fd55a3368333584cbef4113"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/assets/data/china-region-flat.json":{"size":341606,"mtime_ns":1780108931184708348,"hash":"120c09f381ee3ac8fc6282e0be885a72ff256093c5aebf7a0861e38185d5f8ae"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/assets/data/china-region-cascader.json":{"size":217969,"mtime_ns":1780108931184402180,"hash":"63789a66f6bd55e8adeda487f6e4f361f1a916c4fdb3e2d8961ee412de57d307"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/CHANGELOG.md":{"size":19526,"mtime_ns":1780108931156993275,"hash":"3e1cf79e220067ef1e99102d5cee89646591a03e292f7ca957e209ee264d416a"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/README.md":{"size":4196,"mtime_ns":1780108931157199359,"hash":"114c94f9bf11e2083f1c985b2a5f58c5fbc50334dfbd25438415f21f8f577150"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/CHANGELOG.zh-CN.md":{"size":17172,"mtime_ns":1780108931157071900,"hash":"f4ec5751d75c6d3ec0767fd9c1f5787cc96c0a1ab059ed199ae4de1f1959f9fc"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/README.zh-CN.md":{"size":3775,"mtime_ns":1780108931157266568,"hash":"75a5522b08799b17dfe4416d20153a9cd247f5cbf280fe04ed0858a8337dc2d7"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/README.md":{"size":7884,"mtime_ns":1780211534938564937,"hash":"43ee077b77166be37ebf44e0f13c8f01801f08a8274ebfa976ae21cbe8c27ca7"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-quote-vue.py":{"size":4450,"mtime_ns":1780242127112333277,"hash":"97378f52743089231fbc83430106cad7701aa59b045126af45a238d7d2878bac"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-index-shell.py":{"size":11102,"mtime_ns":1780228518737746875,"hash":"0557768a404e2a0d9f2d3b233599bd741bdeb61a8e2d3cadf8d8dc4f1d6be25d"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-vue.py":{"size":4673,"mtime_ns":1780228615418009691,"hash":"790b4297df996f03b45d2efda686e219d60cd8e0f796fd860c070ed2e13939d6"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-attachments.py":{"size":1708,"mtime_ns":1780229286334758010,"hash":"eb364a061d7f7a6659311604353cd64a53edc81c1f1413b626ddf0388d709c46"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-form-panel.py":{"size":5523,"mtime_ns":1780229250658746500,"hash":"c873cdb8f5e8d8339aec3f47dc840106e1a176e3c9ac210ddd6d0abe547d928a"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-form-attachments.py":{"size":14077,"mtime_ns":1780229316215427400,"hash":"470af77a8b9508291fab61aeee4c64bd495f78c77d09574e6b49962ce165eeaf"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-form-layout.py":{"size":5157,"mtime_ns":1780229581646441465,"hash":"d5d97158dd892bd942f61721bcae770de518de368f487c2a30129502b3125787"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-detail-fresh-mint.py":{"size":24615,"mtime_ns":1780229887010846627,"hash":"daf372506c69aa3a92a4ddf3d508252ae63b68718d00bb49fb03914cc8bcfee3"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/apply-list-toolbar-refresh.py":{"size":5777,"mtime_ns":1782834192989973152,"hash":"a2329df76d2aca29b6a7c751e43e61ec47b569718de910f3f10a2391d7b3bedb"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/add-list-index-columns.py":{"size":4644,"mtime_ns":1782865925817727372,"hash":"7e769c9dcb928cb8c4a5ce3eecebd488b94c4a2467959c99d8ec4cbed76bdb44"},"/Users/wuzilong/work/00code/shanxia2.0/web-admin/.vscode/extensions.json":{"size":200,"mtime_ns":1780108931000000000,"hash":"520c42e097d801a599814f12fe6a97bf5d7100e5395fd33217a365baa2cfe3c8"},"/Users/wuzilong/work/00code/shanxia2.0/web-admin/.vscode/settings.json":{"size":425,"mtime_ns":1780108931Line truncated
|
||||
{"/Users/zlwu/work/00code/shanxia2.0/web-admin/package.json":{"size":3957,"mtime_ns":1781960299953649209,"hash":"ca01a16c94014e791391dfd8896f93c1ba7c451db1afa2f49f8a2a68b87dcc56"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/tsconfig.json":{"size":921,"mtime_ns":1780108931391506392,"hash":"8cec43256bc87216f729ae2c9588979558b20f33831419aa58502b54f5127c98"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/.vscode/settings.json":{"size":425,"mtime_ns":1780108931156918274,"hash":"0f2b6369eaf54ccac995e091d7ef5e292fa1396eadd32b64cbddd5bba0018d14"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/.vscode/extensions.json":{"size":200,"mtime_ns":1780108931156854566,"hash":"520c42e097d801a599814f12fe6a97bf5d7100e5395fd33217a365baa2cfe3c8"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/locales/langs/zh.json":{"size":10170,"mtime_ns":1783851637746348929,"hash":"015bc477ca647b32f2ef55c87db91ead797ec9db036de6dbf3578cd1be78de89"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/locales/langs/en.json":{"size":10312,"mtime_ns":1783851637976877140,"hash":"c46cb6e3ab9d55364fa79ce2ee42e46fb307f54350ee9abff7a71a74387c5982"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/mock/json/chinaMap.json":{"size":956443,"mtime_ns":1780108931366831877,"hash":"2ce3f532aed5b51fa9b64bf134bf1d77c7886e695fd55a3368333584cbef4113"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/assets/data/china-region-flat.json":{"size":341606,"mtime_ns":1780108931184708348,"hash":"120c09f381ee3ac8fc6282e0be885a72ff256093c5aebf7a0861e38185d5f8ae"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/assets/data/china-region-cascader.json":{"size":217969,"mtime_ns":1780108931184402180,"hash":"63789a66f6bd55e8adeda487f6e4f361f1a916c4fdb3e2d8961ee412de57d307"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/CHANGELOG.md":{"size":19526,"mtime_ns":1780108931156993275,"hash":"3e1cf79e220067ef1e99102d5cee89646591a03e292f7ca957e209ee264d416a"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/README.md":{"size":4196,"mtime_ns":1780108931157199359,"hash":"114c94f9bf11e2083f1c985b2a5f58c5fbc50334dfbd25438415f21f8f577150"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/CHANGELOG.zh-CN.md":{"size":17172,"mtime_ns":1780108931157071900,"hash":"f4ec5751d75c6d3ec0767fd9c1f5787cc96c0a1ab059ed199ae4de1f1959f9fc"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/README.zh-CN.md":{"size":3775,"mtime_ns":1780108931157266568,"hash":"75a5522b08799b17dfe4416d20153a9cd247f5cbf280fe04ed0858a8337dc2d7"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/src/views/crm/clue/README.md":{"size":7884,"mtime_ns":1780211534938564937,"hash":"43ee077b77166be37ebf44e0f13c8f01801f08a8274ebfa976ae21cbe8c27ca7"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-quote-vue.py":{"size":4450,"mtime_ns":1780242127112333277,"hash":"97378f52743089231fbc83430106cad7701aa59b045126af45a238d7d2878bac"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-index-shell.py":{"size":11102,"mtime_ns":1780228518737746875,"hash":"0557768a404e2a0d9f2d3b233599bd741bdeb61a8e2d3cadf8d8dc4f1d6be25d"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-vue.py":{"size":4673,"mtime_ns":1780228615418009691,"hash":"790b4297df996f03b45d2efda686e219d60cd8e0f796fd860c070ed2e13939d6"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-attachments.py":{"size":1708,"mtime_ns":1780229286334758010,"hash":"eb364a061d7f7a6659311604353cd64a53edc81c1f1413b626ddf0388d709c46"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-form-panel.py":{"size":5523,"mtime_ns":1780229250658746500,"hash":"c873cdb8f5e8d8339aec3f47dc840106e1a176e3c9ac210ddd6d0abe547d928a"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-form-attachments.py":{"size":14077,"mtime_ns":1780229316215427400,"hash":"470af77a8b9508291fab61aeee4c64bd495f78c77d09574e6b49962ce165eeaf"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-form-layout.py":{"size":5157,"mtime_ns":1780229581646441465,"hash":"d5d97158dd892bd942f61721bcae770de518de368f487c2a30129502b3125787"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/migrate-contract-detail-fresh-mint.py":{"size":24615,"mtime_ns":1780229887010846627,"hash":"daf372506c69aa3a92a4ddf3d508252ae63b68718d00bb49fb03914cc8bcfee3"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/apply-list-toolbar-refresh.py":{"size":5777,"mtime_ns":1782834192989973152,"hash":"a2329df76d2aca29b6a7c751e43e61ec47b569718de910f3f10a2391d7b3bedb"},"/Users/zlwu/work/00code/shanxia2.0/web-admin/scripts/add-list-index-columns.py":{"size":4644,"mtime_ns":1782865925817727372,"hash":"7e769c9dcb928cb8c4a5ce3eecebd488b94c4a2467959c99d8ec4cbed76bdb44"},"/Users/wuzilong/work/00code/shanxia2.0/web-admin/.vscode/extensions.json":{"size":200,"mtime_ns":1780108931000000000,"hash":"520c42e097d801a599814f12fe6a97bf5d7100e5395fd33217a365baa2cfe3c8"},"/Users/wuzilong/work/00code/shanxia2.0/web-admin/.vscode/settings.json":{"size":425,"mtime_ns":1780108931Line truncated
|
||||
+2441
-2109
File diff suppressed because it is too large.
Load diff
@@ -59,14 +59,14 @@ def build_index_column(indent: str, paginated: bool) -> str:
|
||||
f"{indent}<el-table-column\n"
|
||||
f"{indent} type=\"index\"\n"
|
||||
f"{indent} label=\"序号\"\n"
|
||||
f"{indent} min-width=\"68\"\n"
|
||||
f"{indent} width=\"68\"\n"
|
||||
f"{indent} align=\"center\"\n"
|
||||
f"{indent} header-align=\"center\"\n"
|
||||
f"{indent} :index=\"(index) => (pagination.page - 1) * pagination.pageSize + index + 1\"\n"
|
||||
f"{indent}/>"
|
||||
)
|
||||
return (
|
||||
f'{indent}<el-table-column type="index" label="序号" min-width="68" '
|
||||
f'{indent}<el-table-column type="index" label="序号" width="68" '
|
||||
f'align="center" header-align="center" />'
|
||||
)
|
||||
|
||||
|
||||
@@ -501,6 +501,12 @@ export interface Plan {
|
||||
products?: PlanProduct[]
|
||||
supplierContracts?: PlanContractLink[]
|
||||
demanderContracts?: PlanContractLink[]
|
||||
/** 列表:是否显示「复制给司机」 */
|
||||
canCopyToDriver?: boolean
|
||||
/** 列表:是否显示「复制给现场」 */
|
||||
canCopyToSite?: boolean
|
||||
/** 列表:是否显示「复制磅单二维码」 */
|
||||
canCopyPoundQrcode?: boolean
|
||||
}
|
||||
|
||||
export interface PlanQuery {
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
@current-change="handleCurrentChange"
|
||||
:max-height="400"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="联系人姓名" prop="contactName" min-width="150" align="center" header-align="center" :show-overflow-tooltip="true">
|
||||
<template #default="scope">
|
||||
<div class="contact-name-cell">
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
@current-change="handleCurrentChange"
|
||||
:max-height="400"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="客户名称" prop="customerName" min-width="200" align="center" header-align="center" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="客户简称" prop="shortName" min-width="120" align="center" header-align="center" :show-overflow-tooltip="true">
|
||||
<template #default="scope">
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
@current-change="handleCurrentChange"
|
||||
:max-height="400"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="商机编号" prop="opportunityNo" min-width="140" align="center" header-align="center" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="商机名称" prop="opportunityName" min-width="180" align="center" header-align="center" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="客户名称" prop="customerName" min-width="150" align="center" header-align="center" :show-overflow-tooltip="true" />
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="报价单编号" prop="quoteNo" min-width="200" align="center" header-align="center" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="状态" prop="status" min-width="100" align="center" header-align="center">
|
||||
<template #default="scope">
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="contractNo"
|
||||
label="合同编号"
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, nextTick, onMounted, ref, unref, useAttrs, watch } from 'vue'
|
||||
import {
|
||||
isFixedNarrowListColumnKey,
|
||||
resolveListColumnKey,
|
||||
usePersistedListColumnWidths
|
||||
} from '@/composables/usePersistedListColumnWidths'
|
||||
@@ -91,7 +92,7 @@
|
||||
) => {
|
||||
if (props.persistColumnWidth) {
|
||||
const key = resolveListColumnKey(column)
|
||||
if (key) setWidth(key, newWidth)
|
||||
if (key && !isFixedNarrowListColumnKey(key)) setWidth(key, newWidth)
|
||||
}
|
||||
|
||||
const parent = parentHeaderDragEnd.value
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="index => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="60"
|
||||
width="60"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="index => index + 1"
|
||||
|
||||
@@ -27,6 +27,12 @@
|
||||
<el-button class="btn-ghost" @click="visible = false">
|
||||
<el-icon><Close /></el-icon>关闭
|
||||
</el-button>
|
||||
<el-button type="danger" @click="toggleRedSeal">
|
||||
<el-icon>
|
||||
<component :is="showRedSeal ? Hide : Stamp" />
|
||||
</el-icon>
|
||||
{{ showRedSeal ? '隐藏红章' : '显示红章' }}
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="isPreviewMode = !isPreviewMode">
|
||||
<el-icon><View /></el-icon>{{ isPreviewMode ? '编辑模式' : '预览模式' }}
|
||||
</el-button>
|
||||
@@ -38,12 +44,6 @@
|
||||
>
|
||||
<el-icon><DocumentChecked /></el-icon>保存模板
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="toggleRedSeal">
|
||||
<el-icon>
|
||||
<component :is="showRedSeal ? Hide : Stamp" />
|
||||
</el-icon>
|
||||
{{ showRedSeal ? '隐藏红章' : '显示红章' }}
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="handlePrint">
|
||||
<el-icon><Printer /></el-icon>打印
|
||||
</el-button>
|
||||
@@ -264,8 +264,9 @@ function handlePrint() {
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>打印送(提)货单</title>
|
||||
<title></title>
|
||||
<style>
|
||||
@page { margin: 0; }
|
||||
body { margin: 0 auto; padding: 0; background: #fff; width: ${DELIVERY_SLIP_DOC_MAX_WIDTH}; box-sizing: border-box; }
|
||||
${DELIVERY_SLIP_PRINT_CSS}
|
||||
@media print {
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
stripe
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column
|
||||
prop="transportNo"
|
||||
label="运输编号"
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
stripe
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column
|
||||
prop="transportNo"
|
||||
label="运输编号"
|
||||
@@ -230,8 +230,8 @@
|
||||
empty-text="暂无已移除运输"
|
||||
@selection-change="handleRemovedSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="transportNo"
|
||||
label="运输编号"
|
||||
@@ -331,8 +331,8 @@
|
||||
empty-text="暂无可添加的未结算计划"
|
||||
@selection-change="handleAddSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="planNo"
|
||||
label="计划编号"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
stripe
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column prop="invoiceNo" label="发票号" min-width="160" show-overflow-tooltip>
|
||||
<template #default="{ row }">{{ row.invoiceNo || '—' }}</template>
|
||||
</el-table-column>
|
||||
@@ -86,7 +86,7 @@
|
||||
stripe
|
||||
empty-text="暂无数据"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="60" align="center" />
|
||||
<el-table-column type="index" label="序号" width="60" align="center" />
|
||||
<el-table-column
|
||||
prop="transportNo"
|
||||
label="运输编号"
|
||||
|
||||
@@ -26,6 +26,12 @@
|
||||
<el-button class="btn-ghost" @click="visible = false">
|
||||
<el-icon><Close /></el-icon>关闭
|
||||
</el-button>
|
||||
<el-button type="danger" @click="toggleRedSeal">
|
||||
<el-icon>
|
||||
<component :is="showRedSeal ? Hide : Stamp" />
|
||||
</el-icon>
|
||||
{{ showRedSeal ? '隐藏红章' : '显示红章' }}
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="isPreviewMode = !isPreviewMode">
|
||||
<el-icon><View /></el-icon>{{ isPreviewMode ? '编辑模式' : '预览模式' }}
|
||||
</el-button>
|
||||
@@ -37,12 +43,6 @@
|
||||
>
|
||||
<el-icon><DocumentChecked /></el-icon>保存模板
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="toggleRedSeal">
|
||||
<el-icon>
|
||||
<component :is="showRedSeal ? Hide : Stamp" />
|
||||
</el-icon>
|
||||
{{ showRedSeal ? '隐藏红章' : '显示红章' }}
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="handlePrint">
|
||||
<el-icon><Printer /></el-icon>打印
|
||||
</el-button>
|
||||
@@ -259,8 +259,9 @@ function handlePrint() {
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>打印入库单</title>
|
||||
<title></title>
|
||||
<style>
|
||||
@page { margin: 0; }
|
||||
body { margin: 0 auto; padding: 0; background: #fff; width: ${INBOUND_SLIP_DOC_MAX_WIDTH}; box-sizing: border-box; }
|
||||
${INBOUND_SLIP_PRINT_CSS}
|
||||
@media print {
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="index => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<div class="panel dialog-list-panel pl-plan-product-table-wrap">
|
||||
<div class="list-body list-wrap dialog-list-body-only">
|
||||
<ListTable table-key="business-pl-plan-form-dialog-pl-plan-form-product-table" :data="products" stripe class="list-table pl-plan-product-table" empty-text="暂无产品">
|
||||
<el-table-column label="序号" type="index" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column label="序号" type="index" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="产品名称" min-width="140" show-overflow-tooltip>
|
||||
<template #default="{ row }">
|
||||
<PlProductNameHazardCell
|
||||
|
||||
@@ -27,6 +27,12 @@
|
||||
<el-button class="btn-ghost" @click="visible = false">
|
||||
<el-icon><Close /></el-icon>关闭
|
||||
</el-button>
|
||||
<el-button type="danger" @click="toggleRedSeal">
|
||||
<el-icon>
|
||||
<component :is="showRedSeal ? Hide : Stamp" />
|
||||
</el-icon>
|
||||
{{ showRedSeal ? '隐藏红章' : '显示红章' }}
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="isPreviewMode = !isPreviewMode">
|
||||
<el-icon><View /></el-icon>{{ isPreviewMode ? '编辑模式' : '预览模式' }}
|
||||
</el-button>
|
||||
@@ -38,12 +44,6 @@
|
||||
>
|
||||
<el-icon><DocumentChecked /></el-icon>保存模板
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="toggleRedSeal">
|
||||
<el-icon>
|
||||
<component :is="showRedSeal ? Hide : Stamp" />
|
||||
</el-icon>
|
||||
{{ showRedSeal ? '隐藏红章' : '显示红章' }}
|
||||
</el-button>
|
||||
<el-button class="btn-ghost" @click="handlePrint">
|
||||
<el-icon><Printer /></el-icon>打印
|
||||
</el-button>
|
||||
@@ -261,8 +261,9 @@ function handlePrint() {
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>打印分装单</title>
|
||||
<title></title>
|
||||
<style>
|
||||
@page { margin: 0; }
|
||||
body { margin: 0 auto; padding: 0; background: #fff; width: ${SUBPACK_SLIP_DOC_MAX_WIDTH}; box-sizing: border-box; }
|
||||
${SUBPACK_SLIP_PRINT_CSS}
|
||||
@media print {
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="index => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleRowEdit"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="categoryName"
|
||||
label="分类名称"
|
||||
|
||||
@@ -44,11 +44,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
:max-height="400"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="60"
|
||||
width="60"
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
|
||||
@@ -20,7 +20,7 @@ function resolveIndex(index: number) {
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="resolveIndex"
|
||||
|
||||
@@ -3,6 +3,13 @@ import { useUserStore } from '@/store/modules/user'
|
||||
|
||||
export type ListColumnWidthMap = Record<string, number>
|
||||
|
||||
/** 多选 / 序号 / 展开列:固定窄宽,不参与拖拽持久化,避免宽屏或历史缓存把列撑得很宽 */
|
||||
const FIXED_NARROW_COLUMN_KEYS = new Set(['__selection__', '__index__', '__expand__'])
|
||||
|
||||
export function isFixedNarrowListColumnKey(columnKey: string | null | undefined): boolean {
|
||||
return !!columnKey && FIXED_NARROW_COLUMN_KEYS.has(columnKey)
|
||||
}
|
||||
|
||||
/** 与 usePersistedListColumns 的特殊列命名保持一致,便于同一套 key 习惯 */
|
||||
export function resolveListColumnKey(column: {
|
||||
property?: string
|
||||
@@ -26,6 +33,22 @@ function buildStorageKey(tableKey: string, userId?: string | number | null): str
|
||||
return `list_col_widths:${uid}:${tableKey}`
|
||||
}
|
||||
|
||||
function scrubFixedNarrowKeys(widths: ListColumnWidthMap): {
|
||||
widths: ListColumnWidthMap
|
||||
changed: boolean
|
||||
} {
|
||||
let changed = false
|
||||
const next: ListColumnWidthMap = {}
|
||||
for (const [key, value] of Object.entries(widths)) {
|
||||
if (isFixedNarrowListColumnKey(key)) {
|
||||
changed = true
|
||||
continue
|
||||
}
|
||||
next[key] = value
|
||||
}
|
||||
return { widths: next, changed }
|
||||
}
|
||||
|
||||
function loadWidths(storageKey: string): ListColumnWidthMap {
|
||||
if (typeof localStorage === 'undefined') return {}
|
||||
const raw = localStorage.getItem(storageKey)
|
||||
@@ -40,7 +63,11 @@ function loadWidths(storageKey: string): ListColumnWidthMap {
|
||||
next[key] = Math.round(n)
|
||||
}
|
||||
}
|
||||
return next
|
||||
const scrubbed = scrubFixedNarrowKeys(next)
|
||||
if (scrubbed.changed) {
|
||||
persistWidths(storageKey, scrubbed.widths)
|
||||
}
|
||||
return scrubbed.widths
|
||||
} catch {
|
||||
return {}
|
||||
}
|
||||
@@ -65,6 +92,7 @@ function getTableColumns(table: any): any[] {
|
||||
/**
|
||||
* 列表列宽 localStorage 持久化(按用户 + tableKey)。
|
||||
* 配合 ListTable:拖拽结束写入,挂载后写回 Element Plus 内部列宽。
|
||||
* 多选 / 序号 / 展开列不持久化、不写回,始终由页面 `width` 固定。
|
||||
*/
|
||||
export function usePersistedListColumnWidths(tableKey: string | Ref<string>) {
|
||||
const userStore = useUserStore()
|
||||
@@ -82,7 +110,7 @@ export function usePersistedListColumnWidths(tableKey: string | Ref<string>) {
|
||||
|
||||
const setWidth = (columnKey: string, width: number) => {
|
||||
const storageKey = resolveKey()
|
||||
if (!storageKey || !columnKey) return
|
||||
if (!storageKey || !columnKey || isFixedNarrowListColumnKey(columnKey)) return
|
||||
const n = Math.round(Number(width))
|
||||
if (!Number.isFinite(n) || n <= 0) return
|
||||
const next = { ...loadWidths(storageKey), [columnKey]: n }
|
||||
@@ -114,7 +142,7 @@ export function usePersistedListColumnWidths(tableKey: string | Ref<string>) {
|
||||
let applied = false
|
||||
for (const col of columns) {
|
||||
const colKey = resolveListColumnKey(col)
|
||||
if (!colKey) continue
|
||||
if (!colKey || isFixedNarrowListColumnKey(colKey)) continue
|
||||
const w = widths[colKey]
|
||||
if (w == null) continue
|
||||
col.width = w
|
||||
|
||||
@@ -13,8 +13,8 @@
|
||||
}
|
||||
|
||||
.public-pl-transport-page {
|
||||
--van-cell-group-title-padding: 2px 10px;
|
||||
--van-cell-group-inset-title-padding: 2px 10px;
|
||||
--van-cell-group-title-padding: 8px 10px 10px;
|
||||
--van-cell-group-inset-title-padding: 8px 10px 10px;
|
||||
--van-cell-group-title-font-size: 12px;
|
||||
--van-cell-group-title-line-height: 1.1;
|
||||
--van-button-primary-background: #059669;
|
||||
@@ -28,8 +28,8 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 2px 10px;
|
||||
margin: 0;
|
||||
padding: 8px 10px 10px;
|
||||
margin: 0 0 6px;
|
||||
min-height: 0;
|
||||
line-height: 1.1;
|
||||
font-size: 12px;
|
||||
@@ -68,17 +68,30 @@
|
||||
left: 14px;
|
||||
}
|
||||
|
||||
.public-pl-transport-page .van-cell__title {
|
||||
/* label 定宽 + value 左对齐,避免 title/value 各 flex:1 中间留白过大 */
|
||||
.public-pl-transport-page .section-card .van-cell__title {
|
||||
flex: 0 0 6.2em;
|
||||
width: 6.2em;
|
||||
margin-right: 10px;
|
||||
color: #64748b;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.public-pl-transport-page .van-cell__value {
|
||||
.public-pl-transport-page .section-card .van-cell__value {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
text-align: left;
|
||||
color: #1e293b;
|
||||
font-weight: 600;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.public-pl-transport-page .personnel-cell .van-cell__title {
|
||||
flex: 1;
|
||||
width: auto;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.public-pl-transport-page .route-cell .van-cell__value {
|
||||
text-align: left;
|
||||
line-height: 1.5;
|
||||
@@ -121,8 +134,8 @@
|
||||
}
|
||||
|
||||
.public-pl-site-page {
|
||||
--van-cell-group-title-padding: 2px 10px;
|
||||
--van-cell-group-inset-title-padding: 2px 10px;
|
||||
--van-cell-group-title-padding: 8px 10px 10px;
|
||||
--van-cell-group-inset-title-padding: 8px 10px 10px;
|
||||
--van-cell-group-title-font-size: 12px;
|
||||
--van-cell-group-title-line-height: 1.1;
|
||||
--van-button-primary-background: #059669;
|
||||
@@ -136,8 +149,8 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 2px 10px;
|
||||
margin: 0;
|
||||
padding: 8px 10px 10px;
|
||||
margin: 0 0 6px;
|
||||
min-height: 0;
|
||||
line-height: 1.1;
|
||||
font-size: 12px;
|
||||
@@ -176,12 +189,19 @@
|
||||
left: 14px;
|
||||
}
|
||||
|
||||
.public-pl-site-page .van-cell__title {
|
||||
/* 与司机端一致:label 定宽,value 紧跟左对齐 */
|
||||
.public-pl-site-page .section-card .van-cell__title {
|
||||
flex: 0 0 6.2em;
|
||||
width: 6.2em;
|
||||
margin-right: 10px;
|
||||
color: #64748b;
|
||||
line-height: 1.35;
|
||||
}
|
||||
|
||||
.public-pl-site-page .van-cell__value {
|
||||
.public-pl-site-page .section-card .van-cell__value {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
text-align: left;
|
||||
color: #1e293b;
|
||||
font-weight: 600;
|
||||
line-height: 1.35;
|
||||
|
||||
@@ -15,7 +15,7 @@ export const DELIVERY_SLIP_DEFAULTS = {
|
||||
const DOC_FONT = "SimSun, 'Songti SC', serif"
|
||||
const FONT_TITLE = 'font-size:26px;font-weight:bold;'
|
||||
const FONT_BODY = 'font-size:20px;'
|
||||
const FONT_SIGN = 'font-size:14px;'
|
||||
const FONT_SIGN = 'font-size:18px;'
|
||||
const FONT_SIDE = 'font-size:18px;'
|
||||
const DOC_PADDING = '8px 10px 24px'
|
||||
/** 单据内容区最大宽度(编辑预览居中,略窄于 A4 像素宽) */
|
||||
@@ -26,9 +26,15 @@ const LOGO_LEFT = 50
|
||||
const TITLE_STYLE = `${FONT_TITLE}font-weight:700 !important;letter-spacing:6px;line-height:1.35;`
|
||||
const TITLE_SUB_STYLE = `${TITLE_STYLE}margin-top:2px;letter-spacing:10px;`
|
||||
const TABLE_ROW_PADDING = '4px'
|
||||
/** 信息表等宽列 */
|
||||
/** 信息表列宽:收货单位(4) / 联系方式(1,略加宽) / 日期(2) */
|
||||
const INFO_COLGROUP = `<colgroup>
|
||||
<col span="7" style="width:14.28%;" />
|
||||
<col style="width:12.75%;" />
|
||||
<col style="width:12.75%;" />
|
||||
<col style="width:12.75%;" />
|
||||
<col style="width:12.75%;" />
|
||||
<col style="width:22.5%;" />
|
||||
<col style="width:13.25%;" />
|
||||
<col style="width:13.25%;" />
|
||||
</colgroup>`
|
||||
/**
|
||||
* 物料表列宽:单据编号 + 加宽编号/名称,收窄规格/单位;前 5 列合计供条款区使用。
|
||||
@@ -421,7 +427,7 @@ export const DELIVERY_SLIP_PRINT_CSS = `
|
||||
.delivery-slip-doc .delivery-slip-sign-row-cell,
|
||||
.delivery-slip-doc .delivery-slip-sign-inner,
|
||||
.delivery-slip-doc .delivery-slip-sign-item {
|
||||
font-size: 14px !important;
|
||||
font-size: 18px !important;
|
||||
}
|
||||
.delivery-slip-doc .delivery-slip-sign-row-cell {
|
||||
overflow: hidden !important;
|
||||
@@ -614,7 +620,6 @@ function buildDeliverySlipTypeCheckboxesHtml(): string {
|
||||
const item = (label: string) =>
|
||||
`<label class="delivery-slip-type-check-item" contenteditable="false"><input type="checkbox" class="delivery-slip-type-check-input" />${label}</label>`
|
||||
return `<div class="delivery-slip-info-row delivery-slip-type-check-wrap" style="${DELIVERY_SLIP_TYPE_CHECK_WRAP_STYLE}">
|
||||
<span class="delivery-slip-info-label delivery-slip-type-check-spacer" style="${INFO_LABEL}visibility:hidden;">日 期:</span>
|
||||
<div class="delivery-slip-type-check-row" style="${DELIVERY_SLIP_TYPE_CHECK_INNER_STYLE}">${item('自提')}${item('出库')}${item('直销')}</div>
|
||||
</div>`
|
||||
}
|
||||
@@ -623,19 +628,19 @@ function buildDeliverySlipInfoTableHtml(): string {
|
||||
return `<table class="delivery-slip-info-table" style="width:100%;border-collapse:collapse;table-layout:fixed;border:none !important;">
|
||||
${INFO_COLGROUP}
|
||||
<tr>
|
||||
<td colspan="2" style="${INFO_CELL_LEFT}">
|
||||
<td colspan="4" style="${INFO_CELL_LEFT}">
|
||||
<div class="delivery-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="delivery-slip-info-label" style="${INFO_LABEL}">收货单位:</span>
|
||||
<span class="delivery-slip-info-value-left" style="${INFO_VALUE_INLINE_LEFT}">{{receivingUnit}} </span>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="2" style="${INFO_CELL_LEFT}">
|
||||
<td colspan="1" style="${INFO_CELL_LEFT}">
|
||||
<div class="delivery-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="delivery-slip-info-label" style="${INFO_LABEL}">收货联系方式:</span>
|
||||
<span class="delivery-slip-info-label" style="${INFO_LABEL}">联系方式:</span>
|
||||
<span class="delivery-slip-info-value-left" style="${INFO_VALUE_INLINE_LEFT}">{{receiveContact}} </span>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="3" style="${INFO_CELL_RIGHT}">
|
||||
<td colspan="2" style="${INFO_CELL_RIGHT}">
|
||||
${buildDeliverySlipTypeCheckboxesHtml()}
|
||||
<div class="delivery-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="delivery-slip-info-label" style="${INFO_LABEL}">日 期:</span>
|
||||
@@ -1267,7 +1272,7 @@ function refreshDeliverySlipGapBeforeProduct(html: string): string {
|
||||
)
|
||||
}
|
||||
|
||||
/** 在收货联系方式行与物料表之间插入间距行(兼容已保存模板) */
|
||||
/** 在联系方式行与物料表之间插入间距行(兼容已保存模板) */
|
||||
function normalizeDeliverySlipGapBeforeProduct(html: string): string {
|
||||
if (!html.includes('delivery-slip-doc')) {
|
||||
return html
|
||||
@@ -1279,17 +1284,18 @@ function normalizeDeliverySlipGapBeforeProduct(html: string): string {
|
||||
|
||||
const gapRow = `<tr class="delivery-slip-gap-before-product"><td colspan="8" class="delivery-slip-gap-before-product-cell" style="${GAP_BEFORE_PRODUCT_CELL}"> </td></tr>\n `
|
||||
const productHeader = `(?:单据编号|物料编号)`
|
||||
const contactLabel = `(?:收货)?联系方式:`
|
||||
|
||||
const withComment = html.replace(
|
||||
new RegExp(
|
||||
`(收货联系方式:[\\s\\S]*?<\\/tr>\\s*)(<!--\\s*中:产品明细表[\\s\\S]*?<tr[\\s\\S]*?<th[^>]*>${productHeader})`
|
||||
`(${contactLabel}[\\s\\S]*?<\\/tr>\\s*)(<!--\\s*中:产品明细表[\\s\\S]*?<tr[\\s\\S]*?<th[^>]*>${productHeader})`
|
||||
),
|
||||
`$1${gapRow}$2`
|
||||
)
|
||||
if (withComment !== html) return withComment
|
||||
|
||||
const withHeader = html.replace(
|
||||
new RegExp(`(收货联系方式:[\\s\\S]*?<\\/tr>\\s*)(<tr[\\s\\S]*?<th[^>]*>${productHeader})`),
|
||||
new RegExp(`(${contactLabel}[\\s\\S]*?<\\/tr>\\s*)(<tr[\\s\\S]*?<th[^>]*>${productHeader})`),
|
||||
`$1${gapRow}$2`
|
||||
)
|
||||
if (withHeader !== html) return withHeader
|
||||
@@ -1390,7 +1396,9 @@ function normalizeDeliverySlipSignRow(html: string): string {
|
||||
)
|
||||
: `${trAttrs} class="delivery-slip-sign-row"`
|
||||
|
||||
let nextTdAttrs = tdAttrs.replace(/white-space:nowrap;?/g, '').replace(/font-size:16px;?/g, 'font-size:14px;')
|
||||
let nextTdAttrs = tdAttrs
|
||||
.replace(/white-space:nowrap;?/g, '')
|
||||
.replace(/font-size:(?:14|16)px;?/g, 'font-size:18px;')
|
||||
if (nextTdAttrs.includes('class="')) {
|
||||
nextTdAttrs = nextTdAttrs.replace(/class="([^"]*)"/, (_, cls: string) =>
|
||||
cls.includes('delivery-slip-sign-row-cell') ? `class="${cls}"` : `class="${cls} delivery-slip-sign-row-cell"`
|
||||
@@ -1411,28 +1419,37 @@ function normalizeDeliverySlipSignRow(html: string): string {
|
||||
return normalizeDeliverySlipSignLabelMarkup(result)
|
||||
}
|
||||
|
||||
/** 信息区:收货单位 / 收货联系方式 / 日期 同一行(兼容旧多行布局) */
|
||||
/** 信息区:收货单位 / 联系方式 / 日期 同一行(兼容旧多行布局) */
|
||||
function normalizeDeliverySlipInfoLayout(html: string): string {
|
||||
if (!html.includes('delivery-slip-info-table')) return html
|
||||
|
||||
const infoMatch = html.match(/<table class="delivery-slip-info-table"[^>]*>[\s\S]*?<\/table>/i)
|
||||
if (!infoMatch) return html
|
||||
let result = html.replace(/收货联系方式:/g, '联系方式:')
|
||||
|
||||
const infoMatch = result.match(/<table class="delivery-slip-info-table"[^>]*>[\s\S]*?<\/table>/i)
|
||||
if (!infoMatch) return result
|
||||
|
||||
const infoHtml = infoMatch[0]
|
||||
const rowCount = (infoHtml.match(/<tr[\s>]/g) || []).length
|
||||
const hasPlanNoInInfo = infoHtml.includes('单据编号:')
|
||||
const dateColWideEnough = /<td[^>]*colspan="3"[^>]*>[\s\S]*?日(?: )?期:/.test(infoHtml)
|
||||
const oneRowThreeFields =
|
||||
const layoutOk =
|
||||
rowCount === 1 &&
|
||||
infoHtml.includes('收货单位:') &&
|
||||
infoHtml.includes('收货联系方式:') &&
|
||||
infoHtml.includes('联系方式:') &&
|
||||
/日(?: )?期:/.test(infoHtml) &&
|
||||
!hasPlanNoInInfo &&
|
||||
dateColWideEnough
|
||||
/<td[^>]*colspan="4"[^>]*>[\s\S]*?收货单位:/.test(infoHtml) &&
|
||||
/<td[^>]*colspan="1"[^>]*>[\s\S]*?联系方式:/.test(infoHtml) &&
|
||||
/<td[^>]*colspan="2"[^>]*>[\s\S]*?日(?: )?期:/.test(infoHtml) &&
|
||||
!/<td[^>]*colspan="[2-5]"[^>]*>[\s\S]*?联系方式:/.test(infoHtml)
|
||||
|
||||
if (oneRowThreeFields) return html
|
||||
if (layoutOk) {
|
||||
return result.replace(
|
||||
/(<table class="delivery-slip-info-table"[^>]*>\s*)(?:<colgroup>[\s\S]*?<\/colgroup>\s*)?/i,
|
||||
`$1${INFO_COLGROUP}`
|
||||
)
|
||||
}
|
||||
|
||||
return html.replace(infoMatch[0], buildDeliverySlipInfoTableHtml())
|
||||
return result.replace(infoMatch[0], buildDeliverySlipInfoTableHtml())
|
||||
}
|
||||
|
||||
/** 物料表:表头补「单据编号」列,并把旧 7 列数据行升为 8 列(兼容已保存模板) */
|
||||
@@ -1659,7 +1676,7 @@ function refreshDeliverySlipTypeCheckRowStyle(html: string): string {
|
||||
result = result.replace(
|
||||
/<div class="delivery-slip-type-check-row"[^>]*>([\s\S]*?)<\/div>/,
|
||||
(_match, inner) =>
|
||||
`<div class="delivery-slip-info-row delivery-slip-type-check-wrap" style="${DELIVERY_SLIP_TYPE_CHECK_WRAP_STYLE}"><span class="delivery-slip-info-label delivery-slip-type-check-spacer" style="${INFO_LABEL}visibility:hidden;">日 期:</span><div class="delivery-slip-type-check-row" style="${DELIVERY_SLIP_TYPE_CHECK_INNER_STYLE}">${inner}</div></div>`
|
||||
`<div class="delivery-slip-info-row delivery-slip-type-check-wrap" style="${DELIVERY_SLIP_TYPE_CHECK_WRAP_STYLE}"><div class="delivery-slip-type-check-row" style="${DELIVERY_SLIP_TYPE_CHECK_INNER_STYLE}">${inner}</div></div>`
|
||||
)
|
||||
}
|
||||
|
||||
@@ -1667,9 +1684,10 @@ function refreshDeliverySlipTypeCheckRowStyle(html: string): string {
|
||||
/<div class="delivery-slip-info-row delivery-slip-type-check-wrap"[^>]*>/g,
|
||||
`<div class="delivery-slip-info-row delivery-slip-type-check-wrap" style="${DELIVERY_SLIP_TYPE_CHECK_WRAP_STYLE}">`
|
||||
)
|
||||
// 去掉「日期」占位空标签,使自提/出库/直销左对齐
|
||||
result = result.replace(
|
||||
/<span class="delivery-slip-info-label delivery-slip-type-check-spacer"[^>]*>[\s\S]*?<\/span>/g,
|
||||
`<span class="delivery-slip-info-label delivery-slip-type-check-spacer" style="${INFO_LABEL}visibility:hidden;">日 期:</span>`
|
||||
/<span class="delivery-slip-info-label delivery-slip-type-check-spacer"[^>]*>[\s\S]*?<\/span>\s*/g,
|
||||
''
|
||||
)
|
||||
result = result.replace(
|
||||
/<div class="delivery-slip-type-check-row"[^>]*>/g,
|
||||
@@ -1702,13 +1720,19 @@ function normalizeDeliverySlipTypeCheckRow(html: string): string {
|
||||
`$1${checkRowHtml}\n $2`
|
||||
)
|
||||
}
|
||||
// 兼容旧模板:日期在 colspan=2 单元格时仍插多选
|
||||
// 兼容旧模板:日期在 colspan=2 / colspan=1 单元格时仍插多选
|
||||
if (!result.includes('delivery-slip-type-check-row')) {
|
||||
result = result.replace(
|
||||
/(<td colspan="2"[^>]*>\s*)(<div class="delivery-slip-info-row"[^>]*>\s*<span class="delivery-slip-info-label"[^>]*>日(?: )?期:)/,
|
||||
`$1${checkRowHtml}\n $2`
|
||||
)
|
||||
}
|
||||
if (!result.includes('delivery-slip-type-check-row')) {
|
||||
result = result.replace(
|
||||
/(<td colspan="1"[^>]*>\s*)(<div class="delivery-slip-info-row"[^>]*>\s*<span class="delivery-slip-info-label"[^>]*>日(?: )?期:)/,
|
||||
`$1${checkRowHtml}\n $2`
|
||||
)
|
||||
}
|
||||
// 兼容更旧模板:单据编号位置仍插多选,随后由 infoLayout 迁移
|
||||
if (!result.includes('delivery-slip-type-check-row')) {
|
||||
result = result.replace(
|
||||
|
||||
@@ -17,7 +17,7 @@ const LEGACY_RECEIVING_UNIT = '安庆市山峡化工有限公司'
|
||||
const DOC_FONT = "SimSun, 'Songti SC', serif"
|
||||
const FONT_TITLE = 'font-size:26px;font-weight:bold;'
|
||||
const FONT_BODY = 'font-size:20px;'
|
||||
const FONT_SIGN = 'font-size:14px;'
|
||||
const FONT_SIGN = 'font-size:18px;'
|
||||
const FONT_SIDE = 'font-size:18px;'
|
||||
const DOC_PADDING = '8px 10px 24px'
|
||||
/** 单据内容区最大宽度(编辑预览居中,略窄于 A4 像素宽) */
|
||||
@@ -310,7 +310,7 @@ export const INBOUND_SLIP_PRINT_CSS = `
|
||||
.inbound-slip-doc .inbound-slip-sign-row-cell,
|
||||
.inbound-slip-doc .inbound-slip-sign-inner,
|
||||
.inbound-slip-doc .inbound-slip-sign-item {
|
||||
font-size: 14px !important;
|
||||
font-size: 18px !important;
|
||||
}
|
||||
.inbound-slip-doc .inbound-slip-sign-row-cell {
|
||||
overflow: hidden !important;
|
||||
@@ -515,13 +515,13 @@ export function generateInboundSlipTemplate(_plan?: Plan): string {
|
||||
<table class="inbound-slip-info-table" style="width:100%;border-collapse:collapse;table-layout:fixed;border:none !important;">
|
||||
${INFO_COLGROUP}
|
||||
<tr>
|
||||
<td colspan="4" style="${INFO_CELL_LEFT}">
|
||||
<td colspan="5" style="${INFO_CELL_LEFT}">
|
||||
<div class="inbound-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="inbound-slip-info-label" style="${INFO_LABEL}">送货单位:</span>
|
||||
<span class="inbound-slip-info-value-left" style="${INFO_VALUE_INLINE_LEFT}">{{receivingUnit}} </span>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="3" style="${INFO_CELL_RIGHT}">
|
||||
<td colspan="2" style="${INFO_CELL_RIGHT}">
|
||||
<div class="inbound-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="inbound-slip-info-label" style="${INFO_LABEL}">日 期:</span>
|
||||
<span class="inbound-slip-info-value-center" style="${INFO_VALUE_INLINE_CENTER}">{{planDateChinese}} </span>
|
||||
@@ -1104,7 +1104,9 @@ function normalizeInboundSlipSignRow(html: string): string {
|
||||
)
|
||||
: `${trAttrs} class="inbound-slip-sign-row"`
|
||||
|
||||
let nextTdAttrs = tdAttrs.replace(/white-space:nowrap;?/g, '').replace(/font-size:16px;?/g, 'font-size:14px;')
|
||||
let nextTdAttrs = tdAttrs
|
||||
.replace(/white-space:nowrap;?/g, '')
|
||||
.replace(/font-size:(?:14|16)px;?/g, 'font-size:18px;')
|
||||
if (nextTdAttrs.includes('class="')) {
|
||||
nextTdAttrs = nextTdAttrs.replace(/class="([^"]*)"/, (_, cls: string) =>
|
||||
cls.includes('inbound-slip-sign-row-cell') ? `class="${cls}"` : `class="${cls} inbound-slip-sign-row-cell"`
|
||||
@@ -1138,20 +1140,22 @@ function normalizeInboundSlipInfoLayout(html: string): string {
|
||||
infoHtml.includes('收货联系方式:') ||
|
||||
infoHtml.includes('单据编号:') ||
|
||||
!infoHtml.includes('送货单位:') ||
|
||||
(infoHtml.match(/<tr[\s>]/g) || []).length > 1
|
||||
(infoHtml.match(/<tr[\s>]/g) || []).length > 1 ||
|
||||
!/<td[^>]*colspan="5"[^>]*>[\s\S]*?送货单位:/.test(infoHtml) ||
|
||||
!/<td[^>]*colspan="2"[^>]*>[\s\S]*?日(?: )?期:/.test(infoHtml)
|
||||
|
||||
if (!needsMigrate) return html
|
||||
|
||||
const newInfoTable = `<table class="inbound-slip-info-table" style="width:100%;border-collapse:collapse;table-layout:fixed;border:none !important;">
|
||||
${INFO_COLGROUP}
|
||||
<tr>
|
||||
<td colspan="4" style="${INFO_CELL_LEFT}">
|
||||
<td colspan="5" style="${INFO_CELL_LEFT}">
|
||||
<div class="inbound-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="inbound-slip-info-label" style="${INFO_LABEL}">送货单位:</span>
|
||||
<span class="inbound-slip-info-value-left" style="${INFO_VALUE_INLINE_LEFT}">{{receivingUnit}} </span>
|
||||
</div>
|
||||
</td>
|
||||
<td colspan="3" style="${INFO_CELL_RIGHT}">
|
||||
<td colspan="2" style="${INFO_CELL_RIGHT}">
|
||||
<div class="inbound-slip-info-row" style="${INFO_ROW}">
|
||||
<span class="inbound-slip-info-label" style="${INFO_LABEL}">日 期:</span>
|
||||
<span class="inbound-slip-info-value-center" style="${INFO_VALUE_INLINE_CENTER}">{{planDateChinese}} </span>
|
||||
|
||||
@@ -14,7 +14,7 @@ export const SUBPACK_SLIP_DEFAULTS = {
|
||||
const DOC_FONT = "SimSun, 'Songti SC', serif"
|
||||
const FONT_TITLE = 'font-size:26px;font-weight:bold;'
|
||||
const FONT_BODY = 'font-size:20px;'
|
||||
const FONT_SIGN = 'font-size:14px;'
|
||||
const FONT_SIGN = 'font-size:18px;'
|
||||
const FONT_SIDE = 'font-size:18px;'
|
||||
const DOC_PADDING = '8px 10px 24px'
|
||||
/** 单据内容区最大宽度(编辑预览居中,略窄于 A4 像素宽) */
|
||||
@@ -531,7 +531,7 @@ export const SUBPACK_SLIP_PRINT_CSS = `
|
||||
.subpack-slip-doc .subpack-slip-sign-row-cell,
|
||||
.subpack-slip-doc .subpack-slip-sign-inner,
|
||||
.subpack-slip-doc .subpack-slip-sign-item {
|
||||
font-size: 14px !important;
|
||||
font-size: 18px !important;
|
||||
}
|
||||
.subpack-slip-doc .subpack-slip-sign-row-cell {
|
||||
overflow: hidden !important;
|
||||
@@ -1598,7 +1598,9 @@ function normalizeSubpackSlipSignRow(html: string): string {
|
||||
)
|
||||
: `${trAttrs} class="subpack-slip-sign-row"`
|
||||
|
||||
let nextTdAttrs = tdAttrs.replace(/white-space:nowrap;?/g, '').replace(/font-size:16px;?/g, 'font-size:14px;')
|
||||
let nextTdAttrs = tdAttrs
|
||||
.replace(/white-space:nowrap;?/g, '')
|
||||
.replace(/font-size:(?:14|16)px;?/g, 'font-size:18px;')
|
||||
if (nextTdAttrs.includes('class="')) {
|
||||
nextTdAttrs = nextTdAttrs.replace(/class="([^"]*)"/, (_, cls: string) =>
|
||||
cls.includes('subpack-slip-sign-row-cell') ? `class="${cls}"` : `class="${cls} subpack-slip-sign-row-cell"`
|
||||
|
||||
@@ -126,8 +126,8 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="onAdvanceApplyHeaderDragEnd"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -373,7 +373,7 @@
|
||||
|
||||
<BaseDetailTableSection title="冲抵记录" :data="viewOffsetRecords" empty-text="暂无冲抵记录">
|
||||
<ListTable table-key="bx-advance-apply-2" class="list-table" :data="viewOffsetRecords" stripe size="small">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="reimburseApplyCode"
|
||||
label="报销单号"
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => pendingStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -282,7 +282,7 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => approvedStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => pendingIssueStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -296,7 +296,7 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => issuedStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -507,7 +507,7 @@
|
||||
|
||||
<BaseDetailTableSection title="冲抵流水" :data="offsetRecords" empty-text="暂无冲抵记录">
|
||||
<ListTable table-key="bx-advance-issue-3" class="list-table" :data="offsetRecords" stripe size="small">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column prop="reimburseApplyCode" label="报销单号" min-width="130" align="center" header-align="center" />
|
||||
<el-table-column prop="reimburseApplicantName" label="报销申请人" min-width="100" align="center" header-align="center" />
|
||||
<el-table-column label="冲抵金额(元)" min-width="120" class-name="col-money" align="right" header-align="center">
|
||||
|
||||
@@ -116,8 +116,8 @@
|
||||
@selection-change="onSelectionChange"
|
||||
@row-dblclick="openEditDialog"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="itemName"
|
||||
label="项目名称"
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
@row-dblclick="openDetail"
|
||||
@header-dragend="() => walletAdminStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column prop="ownerUserName" label="员工" min-width="120">
|
||||
<template #default="{ row }">
|
||||
<el-link type="primary" @click="openDetail(row)">{{ row.ownerUserName || '-' }}</el-link>
|
||||
@@ -152,7 +152,7 @@
|
||||
stripe
|
||||
:max-height="detailTableMaxHeight"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="52" align="center" />
|
||||
<el-table-column type="index" label="序号" width="52" align="center" />
|
||||
<el-table-column prop="amount" label="金额(元)" min-width="88" align="right">
|
||||
<template #default="{ row }">{{ formatMoneyYuan(row.amount) }}</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
@row-dblclick="openInvoiceView"
|
||||
@header-dragend="() => invoiceStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="52" align="center" />
|
||||
<el-table-column type="index" label="序号" width="52" align="center" />
|
||||
<el-table-column prop="amount" label="金额(元)" min-width="88" align="right">
|
||||
<template #default="{ row }">
|
||||
<el-link type="primary" @click="openInvoiceView(row)">
|
||||
@@ -128,7 +128,7 @@
|
||||
stripe
|
||||
@header-dragend="() => ledgerStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column prop="createTime" label="时间" min-width="170" />
|
||||
<el-table-column prop="entryType" label="类型" min-width="140">
|
||||
<template #default="{ row }">
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => pendingPaymentStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -304,7 +304,7 @@
|
||||
@row-dblclick="openProcessedView"
|
||||
@header-dragend="() => processedPaymentStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -572,8 +572,8 @@
|
||||
stripe
|
||||
@selection-change="handleOffsetSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column prop="applyCode" label="申请单号" min-width="130" align="center" header-align="center" />
|
||||
<el-table-column prop="applicantName" label="申请人" min-width="80" align="center" header-align="center" />
|
||||
<el-table-column prop="reason" label="申请原因" min-width="120" align="left" header-align="center" show-overflow-tooltip />
|
||||
@@ -682,7 +682,7 @@
|
||||
<h4 class="dlg-view-section-title section-gap-tight">冲抵明细</h4>
|
||||
<BaseDetailTableSection embedded title="冲抵明细" :data="processedOffsetRecords" empty-text="暂无冲抵明细">
|
||||
<ListTable table-key="bx-payment-4" class="list-table" :data="processedOffsetRecords" stripe size="small">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column prop="advanceApplyCode" label="备用金单号" min-width="130" align="center" header-align="center" />
|
||||
<el-table-column prop="advanceApplicantName" label="备用金申请人" min-width="110" align="center" header-align="center" />
|
||||
<el-table-column prop="advanceReason" label="申请原因" min-width="160" align="left" header-align="center" show-overflow-tooltip />
|
||||
|
||||
@@ -129,8 +129,8 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="onReimburseApplyHeaderDragEnd"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -718,7 +718,7 @@
|
||||
show-summary
|
||||
:summary-method="viewDetailSummary"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column prop="expenseName" label="费用项目" min-width="160" align="left" header-align="center" />
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
|
||||
@@ -127,8 +127,8 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => pendingStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -358,7 +358,7 @@
|
||||
@row-dblclick="openView"
|
||||
@header-dragend="() => approvedStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
v-if="isColumnVisible('applyTime')"
|
||||
prop="applyTime"
|
||||
@@ -536,7 +536,7 @@
|
||||
:summary-method="viewDetailSummary"
|
||||
class="view-detail-table"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column prop="expenseName" label="费用项目" min-width="160" />
|
||||
<el-table-column prop="amount" label="金额(元)" min-width="120" class-name="col-money">
|
||||
<template #default="{ row }">
|
||||
|
||||
@@ -115,11 +115,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@header-dragend="() => allStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
@@ -284,7 +284,7 @@
|
||||
:summary-method="viewDetailSummary"
|
||||
class="view-detail-table"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column prop="expenseName" label="费用项目" min-width="160" />
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
@@ -330,7 +330,7 @@
|
||||
empty-text="暂无冲抵记录"
|
||||
>
|
||||
<el-table :data="viewOffsetRecords" border size="small" class="view-detail-table">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column
|
||||
prop="reimburseApplyCode"
|
||||
label="报销单号"
|
||||
|
||||
@@ -113,11 +113,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@header-dragend="() => mineStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
@@ -272,7 +272,7 @@
|
||||
:summary-method="viewDetailSummary"
|
||||
class="view-detail-table"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column prop="expenseName" label="费用项目" min-width="160" />
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
@@ -318,7 +318,7 @@
|
||||
empty-text="暂无冲抵记录"
|
||||
>
|
||||
<el-table :data="viewOffsetRecords" border size="small" class="view-detail-table">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column
|
||||
prop="reimburseApplyCode"
|
||||
label="报销单号"
|
||||
|
||||
@@ -129,11 +129,11 @@
|
||||
@row-dblclick="openViewDetailFromRow"
|
||||
@header-dragend="() => todoStatsRowRef?.resync?.()"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
/>
|
||||
@@ -306,7 +306,7 @@
|
||||
:summary-method="viewDetailSummary"
|
||||
class="view-detail-table"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column prop="expenseName" label="费用项目" min-width="160" />
|
||||
<el-table-column
|
||||
prop="amount"
|
||||
@@ -353,7 +353,7 @@
|
||||
empty-text="暂无冲抵记录"
|
||||
>
|
||||
<el-table :data="viewOffsetRecords" border size="small" class="view-detail-table">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" />
|
||||
<el-table-column
|
||||
prop="reimburseApplyCode"
|
||||
label="报销单号"
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
@selection-change="onSelectionChange"
|
||||
@row-dblclick="openEditDialog"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="nodeName"
|
||||
label="节点名称"
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
@selection-change="onSelectionChange"
|
||||
@row-dblclick="openEditDialog"
|
||||
>
|
||||
<el-table-column type="selection" min-width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="48" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
prop="nodeName"
|
||||
label="节点名称"
|
||||
|
||||
@@ -215,11 +215,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<section v-else class="invalid-dialog-section">
|
||||
<h3 class="invalid-section-title">待标记线索({{ batchClues.length }} 条)</h3>
|
||||
<ListTable table-key="crm-clue-invalid-form" :data="batchClues" class="list-table invalid-batch-table" stripe max-height="240">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column prop="clueName" label="线索姓名" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="company" label="公司名称" min-width="140" show-overflow-tooltip />
|
||||
<el-table-column prop="mobile" label="手机号" min-width="120" />
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
</div>
|
||||
<div class="list-body list-wrap">
|
||||
<ListTable table-key="crm-clue-statistics" class="list-table" :data="ownerData" stripe max-height="400">
|
||||
<el-table-column type="index" label="排名" min-width="70" align="center">
|
||||
<el-table-column type="index" label="排名" width="70" align="center">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.$index === 0" type="danger" size="small">1</el-tag>
|
||||
<el-tag v-else-if="scope.$index === 1" type="warning" size="small">2</el-tag>
|
||||
|
||||
@@ -101,11 +101,11 @@
|
||||
@row-dblclick="handleView"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (queryParams.pageNum - 1) * queryParams.pageSize + index + 1"
|
||||
|
||||
@@ -150,11 +150,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (queryParams.pageNum - 1) * queryParams.pageSize + index + 1"
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
<div class="panel dialog-list-panel mb-4">
|
||||
<div class="list-body list-wrap dialog-list-body-only">
|
||||
<ListTable table-key="crm-contract-components-contract-detail-dialog" :data="detailContract.products" class="list-table" stripe empty-text="暂无产品明细">
|
||||
<el-table-column label="序号" type="index" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column label="序号" type="index" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="产品名称" min-width="120" :show-overflow-tooltip="true">
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.standardProductName || row.productName || '—' }}</span>
|
||||
@@ -291,7 +291,7 @@
|
||||
<div class="panel dialog-list-panel mb-3">
|
||||
<div class="list-body list-wrap dialog-list-body-only">
|
||||
<ListTable table-key="crm-contract-components-contract-detail-dialog-2" :data="prod.priceTiers || []" class="list-table" stripe empty-text="暂无调价记录">
|
||||
<el-table-column type="index" label="#" min-width="52" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="#" width="52" align="center" header-align="center" />
|
||||
<el-table-column label="开始日期" prop="startDate" min-width="120" align="center" />
|
||||
<el-table-column label="结束日期" prop="endDate" min-width="120" align="center" />
|
||||
<el-table-column label="含税单价(元)" width="130" align="right">
|
||||
@@ -411,7 +411,7 @@
|
||||
empty-text="暂无回款记录"
|
||||
@row-dblclick="handleDetailViewPayment"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="回款单号" prop="paymentNo" min-width="150" align="center" header-align="center">
|
||||
<template #default="scope">
|
||||
<el-link type="primary" @click="handleDetailViewPayment(scope.row)">
|
||||
@@ -459,7 +459,7 @@
|
||||
empty-text="暂无开票记录"
|
||||
@row-dblclick="handleDetailViewInvoice"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="发票号码" prop="invoiceNo" min-width="150" align="center" header-align="center">
|
||||
<template #default="scope">
|
||||
<el-link type="primary" @click="handleDetailViewInvoice(scope.row)">
|
||||
|
||||
@@ -336,8 +336,8 @@
|
||||
</div>
|
||||
<div class="list-body list-wrap">
|
||||
<ListTable table-key="crm-contract-components-contract-form-dialog" :data="form.products" class="list-table" stripe @selection-change="handleProductSelectionChange">
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column label="序号" type="index" min-width="60" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column label="序号" type="index" width="60" align="center" header-align="center" />
|
||||
<el-table-column label="产品名称" min-width="160" :show-overflow-tooltip="true">
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
@@ -631,7 +631,7 @@
|
||||
<div class="panel dialog-list-panel mb-3">
|
||||
<div class="list-body list-wrap dialog-list-body-only">
|
||||
<ListTable table-key="crm-contract-components-contract-form-dialog-2" :data="prod.priceTiers || []" class="list-table fw-price-tier-table" stripe empty-text="暂无调价区间">
|
||||
<el-table-column type="index" label="#" min-width="50" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="#" width="50" align="center" header-align="center" />
|
||||
<el-table-column label="开始日期" min-width="150">
|
||||
<template #default="scope">
|
||||
<el-date-picker v-model="scope.row.startDate" type="date" value-format="YYYY-MM-DD" placeholder="开始日期" style="width: 100%" />
|
||||
|
||||
@@ -466,7 +466,7 @@
|
||||
<el-tab-pane label="回款记录" name="payment">
|
||||
<el-button type="primary" icon="Plus" @click="handleAddPayment" class="mb-3">新增回款</el-button>
|
||||
<el-table :data="paymentList" border v-loading="paymentLoading">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="回款单号" prop="paymentNo" width="150" align="center" />
|
||||
<el-table-column label="回款金额" prop="amount" width="130" align="right">
|
||||
<template #default="scope">
|
||||
@@ -494,7 +494,7 @@
|
||||
<el-tab-pane label="开票记录" name="invoice">
|
||||
<el-button type="primary" icon="Plus" @click="handleAddInvoice" class="mb-3">新增开票</el-button>
|
||||
<el-table :data="invoiceList" border v-loading="invoiceLoading">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="发票号码" prop="invoiceNo" width="150" align="center" />
|
||||
<el-table-column label="发票类型" prop="invoiceType" width="120" align="center" />
|
||||
<el-table-column label="开票金额" prop="amount" width="130" align="right">
|
||||
@@ -977,7 +977,7 @@
|
||||
<el-tab-pane label="操作日志" name="log">
|
||||
<!-- 操作日志列表 -->
|
||||
<el-table v-loading="logLoading" :data="operLogList" stripe>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="操作时间" align="center" prop="operTime" width="160" />
|
||||
<el-table-column label="操作模块" align="center" prop="title" width="120" />
|
||||
<el-table-column label="操作类型" align="center" width="100">
|
||||
|
||||
@@ -106,11 +106,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (queryParams.pageNum - 1) * queryParams.pageSize + index + 1"
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
stripe
|
||||
empty-text=""
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
label="联系人"
|
||||
prop="contactName"
|
||||
@@ -220,7 +220,7 @@
|
||||
stripe
|
||||
empty-text=""
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
label="商机名称"
|
||||
prop="opportunityName"
|
||||
@@ -282,7 +282,7 @@
|
||||
stripe
|
||||
empty-text=""
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
label="合同编号"
|
||||
prop="contractNo"
|
||||
@@ -361,7 +361,7 @@
|
||||
stripe
|
||||
empty-text=""
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
label="操作时间"
|
||||
prop="operTime"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</div>
|
||||
|
||||
<ListTable table-key="crm-customer-components-contact-list" v-loading="loading" :data="contactList" stripe class="list-table">
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="姓名" prop="contactName" min-width="120" align="center">
|
||||
<template #default="{ row }">
|
||||
<span>{{ row.contactName }}</span>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
class="list-table"
|
||||
empty-text="暂无开票信息,请点击「添加开票信息」维护"
|
||||
>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
label="单位名称(章)"
|
||||
prop="companyName"
|
||||
|
||||
@@ -192,11 +192,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -123,11 +123,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleEdit"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -102,11 +102,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
</div>
|
||||
<div class="list-body list-wrap">
|
||||
<ListTable table-key="crm-opportunity-funnel" class="list-table" :data="funnelData" stripe>
|
||||
<el-table-column type="index" label="序号" min-width="68" align="center" header-align="center" />
|
||||
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
|
||||
<el-table-column label="商机阶段" prop="stageName" min-width="120" align="center" />
|
||||
<el-table-column label="商机数量" prop="count" min-width="100" align="center">
|
||||
<template #default="scope">
|
||||
|
||||
@@ -165,11 +165,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleDetail"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (queryParams.pageNum - 1) * queryParams.pageSize + index + 1"
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
</div>
|
||||
<div class="list-body list-wrap">
|
||||
<ListTable table-key="crm-opportunity-statistics" class="list-table" :data="topAmountList" stripe max-height="400">
|
||||
<el-table-column type="index" label="排名" min-width="70" align="center" />
|
||||
<el-table-column type="index" label="排名" width="70" align="center" />
|
||||
<el-table-column
|
||||
prop="opportunityName"
|
||||
label="商机名称"
|
||||
@@ -133,7 +133,7 @@
|
||||
</div>
|
||||
<div class="list-body list-wrap">
|
||||
<ListTable table-key="crm-opportunity-statistics-2" class="list-table" :data="topFollowList" stripe max-height="400">
|
||||
<el-table-column type="index" label="排名" min-width="70" align="center" />
|
||||
<el-table-column type="index" label="排名" width="70" align="center" />
|
||||
<el-table-column
|
||||
prop="opportunityName"
|
||||
label="商机名称"
|
||||
|
||||
@@ -141,11 +141,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
@@ -138,11 +138,11 @@
|
||||
@selection-change="handleSelectionChange"
|
||||
@row-dblclick="handleView"
|
||||
>
|
||||
<el-table-column type="selection" min-width="55" align="center" header-align="center" />
|
||||
<el-table-column type="selection" width="55" align="center" header-align="center" />
|
||||
<el-table-column
|
||||
type="index"
|
||||
label="序号"
|
||||
min-width="68"
|
||||
width="68"
|
||||
align="center"
|
||||
header-align="center"
|
||||
:index="(index) => (pagination.page - 1) * pagination.pageSize + index + 1"
|
||||
|
||||
Loaded 100 of 156 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user