init: 导入团队知识库内容
This commit is contained in:
@@ -0,0 +1,962 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>CRMEB-MER 项目图谱报告</title>
|
||||
<style>
|
||||
/* ===== Design Tokens ===== */
|
||||
:root {
|
||||
--color-primary: #1677FF;
|
||||
--color-primary-hover: #4096FF;
|
||||
--color-primary-active: #0958D9;
|
||||
--color-primary-bg: #E6F4FF;
|
||||
--color-success: #52C41A;
|
||||
--color-warning: #FAAD14;
|
||||
--color-error: #FF4D4F;
|
||||
--color-info: #1677FF;
|
||||
--bg: #F5F5F5;
|
||||
--bg-container: #FFFFFF;
|
||||
--bg-elevated: #FAFAFA;
|
||||
--border: #D9D9D9;
|
||||
--border-light: #F0F0F0;
|
||||
--text-primary: #141414;
|
||||
--text-secondary: #595959;
|
||||
--text-tertiary: #8C8C8C;
|
||||
--gradient-title: linear-gradient(135deg, #1677FF 0%, #722ED1 100%);
|
||||
--gradient-success: linear-gradient(135deg, #52C41A 0%, #1677FF 100%);
|
||||
--radius-xs: 2px;
|
||||
--radius-sm: 6px;
|
||||
--radius-md: 8px;
|
||||
--radius-lg: 12px;
|
||||
--space-xs: 4px;
|
||||
--space-sm: 8px;
|
||||
--space-md: 12px;
|
||||
--space-lg: 16px;
|
||||
--space-xl: 24px;
|
||||
--space-2xl: 32px;
|
||||
--space-3xl: 48px;
|
||||
--shadow-sm: 0 1px 2px rgba(0,0,0,0.03), 0 1px 6px -1px rgba(0,0,0,0.02);
|
||||
--shadow-md: 0 2px 4px rgba(0,0,0,0.04), 0 4px 12px -2px rgba(0,0,0,0.04);
|
||||
--shadow-lg: 0 4px 8px rgba(0,0,0,0.06), 0 8px 24px -4px rgba(0,0,0,0.08);
|
||||
}
|
||||
|
||||
/* ===== Reset & Base ===== */
|
||||
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
color: var(--text-primary);
|
||||
background: var(--bg);
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ===== Header ===== */
|
||||
.header {
|
||||
height: 64px;
|
||||
background: var(--bg-container);
|
||||
border-bottom: 1px solid var(--border-light);
|
||||
box-shadow: var(--shadow-sm);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 var(--space-xl);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.header-inner {
|
||||
max-width: 1200px;
|
||||
width: 100%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.header-title {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
background: var(--gradient-title);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
|
||||
.header-meta {
|
||||
font-size: 12px;
|
||||
color: var(--text-tertiary);
|
||||
}
|
||||
|
||||
/* ===== Layout ===== */
|
||||
.container {
|
||||
max-width: 1200px;
|
||||
margin: 0 auto;
|
||||
padding: var(--space-2xl) var(--space-xl);
|
||||
}
|
||||
|
||||
/* ===== Summary Cards ===== */
|
||||
.summary-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: var(--space-lg);
|
||||
margin-bottom: var(--space-2xl);
|
||||
}
|
||||
|
||||
.summary-card {
|
||||
background: var(--bg-container);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-xl);
|
||||
transition: all 0.2s ease;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.summary-card::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 3px;
|
||||
background: var(--gradient-title);
|
||||
}
|
||||
|
||||
.summary-card:nth-child(2)::before { background: var(--gradient-success); }
|
||||
.summary-card:nth-child(3)::before { background: linear-gradient(135deg, #FAAD14 0%, #FF4D4F 100%); }
|
||||
.summary-card:nth-child(4)::before { background: linear-gradient(135deg, #722ED1 0%, #1677FF 100%); }
|
||||
|
||||
.summary-card:hover {
|
||||
border-color: var(--color-primary);
|
||||
box-shadow: var(--shadow-md);
|
||||
}
|
||||
|
||||
.summary-label {
|
||||
font-size: 12px;
|
||||
color: var(--text-tertiary);
|
||||
margin-bottom: var(--space-sm);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
|
||||
.summary-value {
|
||||
font-size: 30px;
|
||||
font-weight: 700;
|
||||
color: var(--text-primary);
|
||||
line-height: 38px;
|
||||
}
|
||||
|
||||
.summary-sub {
|
||||
font-size: 12px;
|
||||
color: var(--text-secondary);
|
||||
margin-top: var(--space-xs);
|
||||
}
|
||||
|
||||
/* ===== Section ===== */
|
||||
.section {
|
||||
margin-bottom: var(--space-2xl);
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 24px;
|
||||
font-weight: 600;
|
||||
line-height: 32px;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: var(--space-xl);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-sm);
|
||||
}
|
||||
|
||||
.section-title::before {
|
||||
content: '';
|
||||
width: 4px;
|
||||
height: 24px;
|
||||
background: var(--gradient-title);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.sub-section-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 28px;
|
||||
color: var(--text-primary);
|
||||
margin-bottom: var(--space-lg);
|
||||
}
|
||||
|
||||
/* ===== Card ===== */
|
||||
.card {
|
||||
background: var(--bg-container);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-xl);
|
||||
transition: all 0.2s ease;
|
||||
margin-bottom: var(--space-lg);
|
||||
}
|
||||
|
||||
.card:hover {
|
||||
border-color: var(--color-primary);
|
||||
box-shadow: var(--shadow-md);
|
||||
}
|
||||
|
||||
.card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: var(--space-md);
|
||||
}
|
||||
|
||||
.card-title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
/* ===== Badge ===== */
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 10px;
|
||||
border-radius: 12px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.badge-primary {
|
||||
background: rgba(22, 119, 255, 0.1);
|
||||
border: 1px solid rgba(22, 119, 255, 0.25);
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
.badge-success {
|
||||
background: rgba(82, 196, 26, 0.1);
|
||||
border: 1px solid rgba(82, 196, 26, 0.25);
|
||||
color: var(--color-success);
|
||||
}
|
||||
|
||||
.badge-warning {
|
||||
background: rgba(250, 173, 20, 0.1);
|
||||
border: 1px solid rgba(250, 173, 20, 0.25);
|
||||
color: var(--color-warning);
|
||||
}
|
||||
|
||||
.badge-error {
|
||||
background: rgba(255, 77, 79, 0.1);
|
||||
border: 1px solid rgba(255, 77, 79, 0.25);
|
||||
color: var(--color-error);
|
||||
}
|
||||
|
||||
/* ===== Table ===== */
|
||||
.table-wrapper {
|
||||
overflow-x: auto;
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
thead th {
|
||||
background: var(--bg-elevated);
|
||||
font-weight: 600;
|
||||
text-align: left;
|
||||
padding: 10px 14px;
|
||||
border-bottom: 1px solid var(--border);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
font-size: 13px;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
tbody td {
|
||||
padding: 10px 14px;
|
||||
border-bottom: 1px solid var(--border-light);
|
||||
background: var(--bg-container);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
tbody tr:hover td {
|
||||
background: var(--color-primary-bg);
|
||||
}
|
||||
|
||||
tbody tr:last-child td {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* ===== Code ===== */
|
||||
code {
|
||||
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
|
||||
background: var(--bg-elevated);
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
font-size: 13px;
|
||||
color: var(--color-success);
|
||||
}
|
||||
|
||||
.code-block {
|
||||
background: var(--bg-elevated);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-lg);
|
||||
line-height: 1.7;
|
||||
overflow-x: auto;
|
||||
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/* ===== God Nodes ===== */
|
||||
.god-nodes-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
gap: var(--space-md);
|
||||
}
|
||||
|
||||
.god-node-item {
|
||||
background: var(--bg-elevated);
|
||||
border: 1px solid var(--border-light);
|
||||
border-radius: var(--radius-sm);
|
||||
padding: var(--space-md) var(--space-lg);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.god-node-name {
|
||||
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
|
||||
font-size: 13px;
|
||||
color: var(--text-primary);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
.god-node-degree {
|
||||
font-weight: 700;
|
||||
color: var(--color-primary);
|
||||
font-size: 16px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
/* ===== Progress Bar ===== */
|
||||
.progress-bar {
|
||||
height: 8px;
|
||||
background: var(--bg-elevated);
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
margin-top: var(--space-sm);
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
height: 100%;
|
||||
border-radius: 4px;
|
||||
transition: width 0.3s ease;
|
||||
}
|
||||
|
||||
.progress-extracted { background: var(--gradient-title); }
|
||||
.progress-inferred { background: var(--gradient-success); }
|
||||
|
||||
/* ===== Architecture Section ===== */
|
||||
.arch-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: var(--space-lg);
|
||||
}
|
||||
|
||||
.arch-card {
|
||||
background: var(--bg-container);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
padding: var(--space-xl);
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.arch-card:hover {
|
||||
border-color: var(--color-primary);
|
||||
box-shadow: var(--shadow-md);
|
||||
}
|
||||
|
||||
.arch-card-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: var(--radius-md);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 20px;
|
||||
margin-bottom: var(--space-md);
|
||||
}
|
||||
|
||||
.arch-card-icon.java { background: rgba(22, 119, 255, 0.1); color: var(--color-primary); }
|
||||
.arch-card-icon.vue { background: rgba(82, 196, 26, 0.1); color: var(--color-success); }
|
||||
.arch-card-icon.uni { background: rgba(250, 173, 20, 0.1); color: var(--color-warning); }
|
||||
|
||||
.arch-card-title {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
margin-bottom: var(--space-sm);
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
.arch-card-desc {
|
||||
font-size: 13px;
|
||||
color: var(--text-secondary);
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.arch-card-list {
|
||||
list-style: none;
|
||||
margin-top: var(--space-md);
|
||||
}
|
||||
|
||||
.arch-card-list li {
|
||||
font-size: 13px;
|
||||
color: var(--text-secondary);
|
||||
padding: var(--space-xs) 0;
|
||||
padding-left: var(--space-md);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.arch-card-list li::before {
|
||||
content: '·';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
color: var(--color-primary);
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
/* ===== Community Table Specific ===== */
|
||||
.community-detail {
|
||||
margin-bottom: var(--space-xl);
|
||||
}
|
||||
|
||||
.community-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--space-md);
|
||||
margin-bottom: var(--space-md);
|
||||
}
|
||||
|
||||
.community-id {
|
||||
font-size: 12px;
|
||||
color: var(--text-tertiary);
|
||||
}
|
||||
|
||||
.community-members {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--space-xs);
|
||||
}
|
||||
|
||||
.member-tag {
|
||||
display: inline-block;
|
||||
padding: 2px 8px;
|
||||
border-radius: var(--radius-xs);
|
||||
font-size: 12px;
|
||||
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', monospace;
|
||||
background: var(--bg-elevated);
|
||||
border: 1px solid var(--border-light);
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
/* ===== Footer ===== */
|
||||
.footer {
|
||||
text-align: center;
|
||||
padding: var(--space-2xl) 0;
|
||||
color: var(--text-tertiary);
|
||||
font-size: 12px;
|
||||
border-top: 1px solid var(--border-light);
|
||||
margin-top: var(--space-3xl);
|
||||
}
|
||||
|
||||
/* ===== Responsive ===== */
|
||||
@media (max-width: 992px) {
|
||||
.summary-grid { grid-template-columns: repeat(2, 1fr); }
|
||||
.arch-grid { grid-template-columns: repeat(2, 1fr); }
|
||||
.container { padding: var(--space-xl) var(--space-md); }
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.summary-grid { grid-template-columns: 1fr; }
|
||||
.arch-grid { grid-template-columns: 1fr; }
|
||||
.god-nodes-grid { grid-template-columns: 1fr; }
|
||||
.header { padding: 0 var(--space-md); }
|
||||
}
|
||||
|
||||
/* ===== Scrollbar ===== */
|
||||
::-webkit-scrollbar { width: 6px; height: 6px; }
|
||||
::-webkit-scrollbar-track { background: var(--bg-elevated); }
|
||||
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
|
||||
::-webkit-scrollbar-thumb:hover { background: var(--text-tertiary); }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- ===== Header ===== -->
|
||||
<header class="header">
|
||||
<div class="header-inner">
|
||||
<div class="header-title">CRMEB-MER 项目图谱报告</div>
|
||||
<div class="header-meta">graphify-rs · 2026-05-06 · JAVA-MER-2.2</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="container">
|
||||
|
||||
<!-- ===== Summary ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">项目概览</div>
|
||||
<div class="summary-grid">
|
||||
<div class="summary-card">
|
||||
<div class="summary-label">节点数</div>
|
||||
<div class="summary-value">36,835</div>
|
||||
<div class="summary-sub">AST 解析 + 推理</div>
|
||||
</div>
|
||||
<div class="summary-card">
|
||||
<div class="summary-label">边数</div>
|
||||
<div class="summary-value">52,059</div>
|
||||
<div class="summary-sub">引用 / 调用 / 导入</div>
|
||||
</div>
|
||||
<div class="summary-card">
|
||||
<div class="summary-label">社区数</div>
|
||||
<div class="summary-value">3,103</div>
|
||||
<div class="summary-sub">Louvain 社群检测</div>
|
||||
</div>
|
||||
<div class="summary-card">
|
||||
<div class="summary-label">文件数</div>
|
||||
<div class="summary-value">4,086</div>
|
||||
<div class="summary-sub">2,616 代码 / 24 文档 / 1,446 图片</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Confidence -->
|
||||
<div class="card">
|
||||
<div class="card-title">置信度分布</div>
|
||||
<div style="display: flex; gap: var(--space-2xl); margin-top: var(--space-lg);">
|
||||
<div style="flex: 1;">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<span style="font-size: 13px; color: var(--text-secondary);">EXTRACTED (AST 提取)</span>
|
||||
<span style="font-weight: 600; color: var(--color-primary);">66.4% (34,555)</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill progress-extracted" style="width: 66.4%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="flex: 1;">
|
||||
<div style="display: flex; justify-content: space-between; align-items: center;">
|
||||
<span style="font-size: 13px; color: var(--text-secondary);">INFERRED (推理)</span>
|
||||
<span style="font-weight: 600; color: var(--color-success);">33.6% (17,504)</span>
|
||||
</div>
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill progress-inferred" style="width: 33.6%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== Architecture ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">系统架构</div>
|
||||
<div class="arch-grid">
|
||||
<div class="arch-card">
|
||||
<div class="arch-card-icon java">J</div>
|
||||
<div class="arch-card-title">Java 后端 (mer_java)</div>
|
||||
<div class="arch-card-desc">Spring Boot 2.2.6 多模块 Maven 项目,Java 8,MyBatis Plus 3.3.1</div>
|
||||
<ul class="arch-card-list">
|
||||
<li><code>crmeb-common</code> — 共享模型、DTO、常量、工具类</li>
|
||||
<li><code>crmeb-service</code> — DAO + Service 业务逻辑层</li>
|
||||
<li><code>crmeb-admin</code> — 后台管理 API(平台 + 商户)</li>
|
||||
<li><code>crmeb-front</code> — 移动端/前端用户 API</li>
|
||||
<li><code>crmeb-generate</code> — 代码生成模块</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="arch-card">
|
||||
<div class="arch-card-icon vue">V</div>
|
||||
<div class="arch-card-title">平台管理端 (mer_plat_admin)</div>
|
||||
<div class="arch-card-desc">Vue 2 + Element UI 单页应用,平台管理员操作入口</div>
|
||||
<ul class="arch-card-list">
|
||||
<li>商品、订单、用户、营销、财务管理</li>
|
||||
<li>商户入驻审核、分类、菜单管理</li>
|
||||
<li>系统设置、权限、装修 DIY</li>
|
||||
<li>路由按模块拆分至 router/modules/</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="arch-card">
|
||||
<div class="arch-card-icon vue">M</div>
|
||||
<div class="arch-card-title">商户管理端 (mer_mer_admin)</div>
|
||||
<div class="arch-card-desc">Vue 2 + Element UI 单页应用,商户独立管理后台</div>
|
||||
<ul class="arch-card-list">
|
||||
<li>自有商品管理、订单发货、退款</li>
|
||||
<li>优惠券、用户管理</li>
|
||||
<li>运费模板、素材管理</li>
|
||||
<li>财务流水、结算记录</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="arch-card">
|
||||
<div class="arch-card-icon uni">U</div>
|
||||
<div class="arch-card-title">移动端 (mer_uniapp)</div>
|
||||
<div class="arch-card-desc">UniApp 跨平台应用 — H5、微信小程序、原生 App</div>
|
||||
<ul class="arch-card-list">
|
||||
<li>首页、商品、分类、购物车、订单</li>
|
||||
<li>个人中心、地址、营销活动</li>
|
||||
<li>逛逛社区、商户主页</li>
|
||||
<li>Diy 页面装修组件系统</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== God Nodes ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">核心节点(God Nodes)</div>
|
||||
<p style="color: var(--text-secondary); margin-bottom: var(--space-lg);">连接度最高的节点,代表项目中最核心/最常被引用的模块或函数。</p>
|
||||
<div class="god-nodes-grid">
|
||||
<div class="god-node-item">
|
||||
<span class="god-node-name">echarts.min</span>
|
||||
<span class="god-node-degree">552</span>
|
||||
</div>
|
||||
<div class="god-node-item">
|
||||
<span class="god-node-name">n()</span>
|
||||
<span class="god-node-degree">389</span>
|
||||
</div>
|
||||
<div class="god-node-item">
|
||||
<span class="god-node-name">f()</span>
|
||||
<span class="god-node-degree">322</span>
|
||||
</div>
|
||||
<div class="god-node-item">
|
||||
<span class="god-node-name">T()</span>
|
||||
<span class="god-node-degree">314</span>
|
||||
</div>
|
||||
<div class="god-node-item">
|
||||
<span class="god-node-name">r()</span>
|
||||
<span class="god-node-degree">280</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: var(--space-md);">
|
||||
<span class="badge badge-warning">注意</span>
|
||||
<span style="font-size: 13px; color: var(--text-secondary); margin-left: var(--space-sm);">顶层 God Nodes 主要为打包后的 minified 库函数(echarts.min 等),真实业务核心见下方社区分析</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== Key Business Communities ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">核心业务社区分析</div>
|
||||
<p style="color: var(--text-secondary); margin-bottom: var(--space-lg);">从 3,103 个社区中筛选出的关键业务模块社区,按业务领域分类展示。</p>
|
||||
|
||||
<!-- Java Backend Communities -->
|
||||
<div class="sub-section-title" style="margin-top: var(--space-xl);">Java 后端核心服务</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">ProductService 社区</div>
|
||||
<span class="badge badge-primary">94 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">商品服务核心社区,涵盖商品 CRUD、批量操作、审核、复制、库存管理等全部商品相关功能。</p>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>方法</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><code>batchAudit()</code></td><td>批量审核商品</td></tr>
|
||||
<tr><td><code>batchDelete()</code></td><td>批量删除</td></tr>
|
||||
<tr><td><code>batchSetBrokerage()</code></td><td>批量设置分销佣金</td></tr>
|
||||
<tr><td><code>batchSetFreightTemplate()</code></td><td>批量设置运费模板</td></tr>
|
||||
<tr><td><code>copyProduct()</code></td><td>复制商品</td></tr>
|
||||
<tr><td><code>deleteProduct()</code></td><td>删除商品</td></tr>
|
||||
<tr><td><code>downByMerId()</code></td><td>商户下架商品</td></tr>
|
||||
<tr><td><code>validatedCanUseById()</code></td><td>校验商品可用性</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">OrderService 社区</div>
|
||||
<span class="badge badge-primary">72 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">订单服务核心社区,涵盖订单查询、取消、退款、发货、统计等全部订单生命周期操作。</p>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>方法</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><code>cancel()</code></td><td>取消订单</td></tr>
|
||||
<tr><td><code>directRefund()</code></td><td>直接退款</td></tr>
|
||||
<tr><td><code>batchCompleteByOrderNo()</code></td><td>按订单号批量完成</td></tr>
|
||||
<tr><td><code>findAwaitTakeDeliveryOrderList()</code></td><td>查找待发货订单</td></tr>
|
||||
<tr><td><code>findPayByDate()</code></td><td>按日期查找已支付订单</td></tr>
|
||||
<tr><td><code>getByOrderNo()</code></td><td>按订单号查询</td></tr>
|
||||
<tr><td><code>getCircleOrderPage()</code></td><td>圈子订单分页</td></tr>
|
||||
<tr><td><code>virtualShipment()</code></td><td>虚拟发货</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">ProductServiceImpl 实现社区</div>
|
||||
<span class="badge badge-success">69 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">商品服务实现层,依赖 TransactionTemplate、Hutool、FastJSON、PageHelper 等基础设施。</p>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>关键依赖</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><code>TransactionTemplate</code></td><td>Spring 事务模板</td></tr>
|
||||
<tr><td><code>LambdaQueryWrapper</code></td><td>MyBatis Plus 条件构造器</td></tr>
|
||||
<tr><td><code>LambdaUpdateWrapper</code></td><td>MyBatis Plus 更新构造器</td></tr>
|
||||
<tr><td><code>PageHelper / PageInfo</code></td><td>分页插件</td></tr>
|
||||
<tr><td><code>cn.hutool.core.util.*</code></td><td>Hutool 工具类</td></tr>
|
||||
<tr><td><code>com.alibaba.fastjson.*</code></td><td>FastJSON 序列化</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">UserServiceImpl 社区</div>
|
||||
<span class="badge badge-success">57 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">用户服务核心实现,涵盖用户信息管理、等级、标签、地址、提现等功能。</p>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">FrontOrderServiceImpl 社区</div>
|
||||
<span class="badge badge-success">70 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">前端订单服务,处理 C 端用户下单流程,依赖 Hutool 日期工具、Cart 模型、Coupon 模型等。</p>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">GroupBuyRecordServiceImpl 社区</div>
|
||||
<span class="badge badge-success">66 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">拼团功能实现,包含拼团记录、状态管理等,依赖 GroupBuyRecordEnum 枚举和事务管理。</p>
|
||||
</div>
|
||||
|
||||
<!-- Frontend Communities -->
|
||||
<div class="sub-section-title" style="margin-top: var(--space-xl);">前端核心模块</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">平台 Admin API 社区</div>
|
||||
<span class="badge badge-primary">71 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">平台管理端 API 调用模块,涵盖区域管理(area)、管理员权限、菜单配置等接口。</p>
|
||||
<div class="community-members" style="margin-top: var(--space-sm);">
|
||||
<span class="member-tag">areaListTreeApi()</span>
|
||||
<span class="member-tag">areaSaveApi()</span>
|
||||
<span class="member-tag">areasAdminListApi()</span>
|
||||
<span class="member-tag">areasAdminInfoApi()</span>
|
||||
<span class="member-tag">areaBindMerchantApi()</span>
|
||||
<span class="member-tag">areasGetMenusApi()</span>
|
||||
<span class="member-tag">areasAdminUpdateStatusApi()</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">商品 Admin API 社区</div>
|
||||
<span class="badge badge-primary">70 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">商品管理端 API 模块,涵盖商品创建、分类、品牌、优惠券、保障服务等接口。</p>
|
||||
<div class="community-members" style="margin-top: var(--space-sm);">
|
||||
<span class="member-tag">attrCreatApi()</span>
|
||||
<span class="member-tag">categoryApi()</span>
|
||||
<span class="member-tag">brandListApi()</span>
|
||||
<span class="member-tag">couponInfoApi()</span>
|
||||
<span class="member-tag">guaranteeListApi()</span>
|
||||
<span class="member-tag">copyProductApi()</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">营销 Admin API 社区</div>
|
||||
<span class="badge badge-primary">70 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">营销管理 API 模块,涵盖秒杀、优惠券、直播、氛围图等营销活动相关接口。</p>
|
||||
<div class="community-members" style="margin-top: var(--space-sm);">
|
||||
<span class="member-tag">catListApi()</span>
|
||||
<span class="member-tag">couponUserListApi()</span>
|
||||
<span class="member-tag">liveGoodsListApi()</span>
|
||||
<span class="member-tag">draftListApi()</span>
|
||||
<span class="member-tag">atmosphereStatusApi()</span>
|
||||
<span class="member-tag">getSeckillStyleApi()</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- uCharts Community -->
|
||||
<div class="card community-detail">
|
||||
<div class="card-header">
|
||||
<div class="card-title">uCharts 图表库社区</div>
|
||||
<span class="badge badge-warning">119 节点</span>
|
||||
</div>
|
||||
<p style="color: var(--text-secondary); font-size: 13px; margin-bottom: var(--space-md);">移动端数据可视化 uCharts 库,是 UniApp 项目中最大的第三方依赖社区之一。</p>
|
||||
<div class="community-members" style="margin-top: var(--space-sm);">
|
||||
<span class="member-tag">Animation()</span>
|
||||
<span class="member-tag">calCategoriesData()</span>
|
||||
<span class="member-tag">calLegendData()</span>
|
||||
<span class="member-tag">calYAxisData()</span>
|
||||
<span class="member-tag">drawActivePoint()</span>
|
||||
<span class="member-tag">collisionNew()</span>
|
||||
<span class="member-tag">deepAssign()</span>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== Technology Stack ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">技术栈</div>
|
||||
|
||||
<div class="card">
|
||||
<div class="card-title" style="margin-bottom: var(--space-md);">后端依赖</div>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>依赖</th><th>版本</th><th>用途</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><code>Spring Boot</code></td><td>2.2.6.RELEASE</td><td>应用框架</td></tr>
|
||||
<tr><td><code>MyBatis Plus</code></td><td>3.3.1</td><td>ORM 框架</td></tr>
|
||||
<tr><td><code>FastJSON</code></td><td>2.0.38</td><td>JSON 序列化</td></tr>
|
||||
<tr><td><code>Druid</code></td><td>1.1.20</td><td>数据库连接池</td></tr>
|
||||
<tr><td><code>MySQL Connector</code></td><td>8.0.33</td><td>MySQL 驱动</td></tr>
|
||||
<tr><td><code>Redis (Jedis)</code></td><td>3.3.0</td><td>缓存</td></tr>
|
||||
<tr><td><code>Hutool</code></td><td>4.5.7</td><td>Java 工具类库</td></tr>
|
||||
<tr><td><code>weixin-java</code></td><td>4.7.5</td><td>微信生态 SDK</td></tr>
|
||||
<tr><td><code>Alipay SDK</code></td><td>4.15.20</td><td>支付宝 SDK</td></tr>
|
||||
<tr><td><code>Knife4j</code></td><td>2.0.7</td><td>API 文档 (Swagger)</td></tr>
|
||||
<tr><td><code>PageHelper</code></td><td>1.2.5</td><td>分页插件</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card" style="margin-top: var(--space-lg);">
|
||||
<div class="card-title" style="margin-bottom: var(--space-md);">前端依赖</div>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>依赖</th><th>版本</th><th>用途</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td><code>Vue</code></td><td>2.6.10</td><td>前端框架</td></tr>
|
||||
<tr><td><code>Element UI</code></td><td>2.15.14</td><td>UI 组件库</td></tr>
|
||||
<tr><td><code>Vue Router</code></td><td>3.0.2</td><td>路由管理</td></tr>
|
||||
<tr><td><code>Vuex</code></td><td>3.1.0</td><td>状态管理</td></tr>
|
||||
<tr><td><code>Axios</code></td><td>0.24.0</td><td>HTTP 客户端</td></tr>
|
||||
<tr><td><code>ECharts</code></td><td>4.2.1</td><td>数据可视化</td></tr>
|
||||
<tr><td><td><code>XLSX</code></td><td>0.14.1</td><td>Excel 导入导出</td></tr>
|
||||
<tr><td><code>Sass</code></td><td>1.26.2</td><td>CSS 预处理器</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== External Integrations ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">外部集成</div>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>集成</th><th>SDK / 服务</th><th>用途</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>微信小程序</td><td><code>weixin-java-miniapp</code></td><td>小程序登录、消息、模板消息</td></tr>
|
||||
<tr><td>微信支付</td><td><code>weixin-java-pay</code></td><td>支付、退款、订单查询</td></tr>
|
||||
<tr><td>微信公众号</td><td><code>weixin-java-mp</code></td><td>公众号消息、菜单、用户管理</td></tr>
|
||||
<tr><td>微信开放平台</td><td><code>weixin-java-open</code></td><td>第三方平台授权</td></tr>
|
||||
<tr><td>支付宝</td><td><code>alipay-sdk-java</code></td><td>支付、退款</td></tr>
|
||||
<tr><td>阿里云 OSS</td><td><code>aliyun-sdk-oss</code></td><td>对象存储</td></tr>
|
||||
<tr><td>腾讯云 COS</td><td><code>cos_api</code></td><td>对象存储</td></tr>
|
||||
<tr><td>七牛云</td><td><code>qiniu-java-sdk</code></td><td>对象存储</td></tr>
|
||||
<tr><td>华为云 OBS</td><td><code>esdk-obs-java-bundle</code></td><td>对象存储</td></tr>
|
||||
<tr><td>京东云 S3</td><td><code>aws-java-sdk-s3</code></td><td>对象存储</td></tr>
|
||||
<tr><td>易联云打印</td><td><code>yly</code></td><td>小票打印</td></tr>
|
||||
<tr><td>安吉加加验证码</td><td><code>spring-boot-starter-captcha</code></td><td>行为验证码</td></tr>
|
||||
<tr><td>IP 解析</td><td><code>ip2region</code></td><td>IP 地理位置解析</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== Business Domains ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">业务领域模型</div>
|
||||
<p style="color: var(--text-secondary); margin-bottom: var(--space-lg);">根据模型文件目录 (crmeb-common/model) 梳理出的核心业务域。</p>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>业务域</th><th>模型包</th><th>核心实体</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>商品</td><td><code>model/product</code></td><td>Product, ProductAttr, Category, Brand, Guarantee</td></tr>
|
||||
<tr><td>订单</td><td><code>model/order</code></td><td>Order, OrderDetail, Refund, Cart</td></tr>
|
||||
<tr><td>用户</td><td><code>model/user</code></td><td>User, UserLevel, UserTag, Address</td></tr>
|
||||
<tr><td>商户</td><td><code>model/merchant</code></td><td>Merchant, MerchantType, MerchantCategory</td></tr>
|
||||
<tr><td>优惠券</td><td><code>model/coupon</code></td><td>Coupon, CouponProduct, CouponUser</td></tr>
|
||||
<tr><td>营销</td><td><code>model/seckill, model/activity</code></td><td>Seckill, Activity, Sign</td></tr>
|
||||
<tr><td>拼团</td><td><code>model/groupbuy</code></td><td>GroupBuy, GroupBuyRecord</td></tr>
|
||||
<tr><td>社区/圈子</td><td><code>model/circle, model/community</code></td><td>Circle, Community, Comment</td></tr>
|
||||
<tr><td>文章</td><td><code>model/article</code></td><td>Article, ArticleCategory</td></tr>
|
||||
<tr><td>物流</td><td><code>model/express, model/city</code></td><td>Express, City</td></tr>
|
||||
<tr><td>财务</td><td><code>model/bill, model/closing</code></td><td>Bill, Closing, CapitalFlow</td></tr>
|
||||
<tr><td>管理</td><td><code>model/admin, model/system</code></td><td>SystemAdmin, Role, Menu, Config</td></tr>
|
||||
<tr><td>页面</td><td><code>model/page</code></td><td>PageDiy, Theme</td></tr>
|
||||
<tr><td>预约</td><td><code>model/reservation</code></td><td>Reservation</td></tr>
|
||||
<tr><td>会员</td><td><code>model/member</code></td><td>Member, PaidMember</td></tr>
|
||||
<tr><td>卡密</td><td><code>model/cdkey</code></td><td>CardSecret</td></tr>
|
||||
<tr><td>短信</td><td><code>model/sms</code></td><td>SmsTemplate, SmsRecord</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== Module Dependency ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">模块依赖关系</div>
|
||||
<div class="code-block">
|
||||
crmeb-admin ──┐
|
||||
├──► crmeb-service ──► crmeb-common
|
||||
crmeb-front ──┘
|
||||
crmeb-generate ──► crmeb-service ──► crmeb-common
|
||||
|
||||
mer_plat_admin ──(HTTP)──► crmeb-admin (platform/* controllers)
|
||||
mer_mer_admin ──(HTTP)──► crmeb-admin (merchant/* controllers)
|
||||
mer_uniapp ──(HTTP)──► crmeb-front (user-facing APIs)
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ===== Commands Reference ===== -->
|
||||
<section class="section">
|
||||
<div class="section-title">常用开发命令</div>
|
||||
<div class="table-wrapper">
|
||||
<table>
|
||||
<thead><tr><th>子系统</th><th>命令</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>Java 后端</td><td><code>mvn clean compile</code></td><td>编译所有模块</td></tr>
|
||||
<tr><td>Java 后端</td><td><code>mvn clean package -DskipTests</code></td><td>打包 JAR</td></tr>
|
||||
<tr><td>Java 后端</td><td><code>java -jar Crmeb-admin.jar --spring.profiles.active=dev</code></td><td>启动 Admin API</td></tr>
|
||||
<tr><td>Java 后端</td><td><code>java -jar Crmeb-front.jar --spring.profiles.active=dev</code></td><td>启动 Front API</td></tr>
|
||||
<tr><td>平台 Admin</td><td><code>npm run dev</code></td><td>启动开发服务器 (localhost:9527)</td></tr>
|
||||
<tr><td>平台 Admin</td><td><code>npm run build:prod</code></td><td>生产环境构建</td></tr>
|
||||
<tr><td>商户 Admin</td><td><code>npm run dev</code></td><td>启动开发服务器</td></tr>
|
||||
<tr><td>商户 Admin</td><td><code>npm run build:prod</code></td><td>生产环境构建</td></tr>
|
||||
<tr><td>移动端</td><td>HBuilderX IDE</td><td>运行 H5 / 微信小程序</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
</main>
|
||||
|
||||
<!-- ===== Footer ===== -->
|
||||
<footer class="footer">
|
||||
<div>Generated by graphify-rs · CRMEB-MER JAVA-MER-2.2 · 2026-05-06</div>
|
||||
<div style="margin-top: var(--space-xs);">36,835 nodes · 52,059 edges · 3,103 communities</div>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user