56 |
57 |
58 |
领域平台实践
59 |
60 | 探索不同领域的平台工程实践,从软件开发到 AI、数据、前端等各个技术领域的平台建设经验。
61 |
62 |
63 |
64 |
65 |
66 | {domainCategories.map((cat) => (
67 |
68 | {cat.name}
69 |
70 | ))}
71 |
72 |
73 |
74 |
75 | {filteredPractices.map((practice) => (
76 |
handleSelectPractice(practice.id)}
80 | >
81 |
82 |
83 |
{iconMap[practice.icon]}
84 |
85 | {practice.domain}
86 |
87 |
88 | {practice.title}
89 | {practice.description}
90 |
91 |
92 |
93 | {practice.tags.slice(0, 3).map((tag) => (
94 |
95 | {tag}
96 |
97 | ))}
98 |
99 |
100 |
101 | ))}
102 |
103 |
104 | {/* Practice Detail Sheet */}
105 |
!open && handleSelectPractice(null)}>
106 |
107 | {selected && (
108 | <>
109 |
110 |
111 |
{iconMap[selected.icon]}
112 |
{selected.domain}
113 |
114 | {selected.title}
115 | {selected.description}
116 |
117 |
118 |
119 | {/* Main Content */}
120 |
121 |
122 | {selected.content.split("\n").map((line, i) => {
123 | if (line.startsWith("## ")) {
124 | return (
125 |
126 | {line.replace("## ", "")}
127 |
128 | )
129 | }
130 | if (line.startsWith("### ")) {
131 | return (
132 |
133 | {line.replace("### ", "")}
134 |
135 | )
136 | }
137 | if (line.startsWith("- ")) {
138 | return (
139 |
140 | {line.replace("- ", "")}
141 |
142 | )
143 | }
144 | if (line.match(/^\d+\./)) {
145 | return (
146 |
147 | {line}
148 |
149 | )
150 | }
151 | if (line.trim() === "") {
152 | return
153 | }
154 | return (
155 |
156 | {line}
157 |
158 | )
159 | })}
160 |
161 |
162 |
163 | {/* Key Capabilities */}
164 |
165 |
166 |
167 |
核心能力
168 |
169 |
170 | {selected.keyCapabilities.map((capability, i) => (
171 | -
172 |
173 | {capability}
174 |
175 | ))}
176 |
177 |
178 |
179 | {/* Technical Stack */}
180 |
181 |
185 |
186 | {selected.technicalStack.map((tech, i) => (
187 |
188 |
189 | {tech}
190 |
191 |
192 | ))}
193 |
194 |
195 |
196 | {/* Challenges */}
197 |
198 |
202 |
203 | {selected.challenges.map((challenge, i) => (
204 | -
205 |
206 | {challenge}
207 |
208 | ))}
209 |
210 |
211 |
212 | {/* Best Practices */}
213 |
214 |
215 |
216 |
最佳实践
217 |
218 |
219 | {selected.bestPractices.map((practice, i) => (
220 | -
221 |
222 | {practice}
223 |
224 | ))}
225 |
226 |
227 |
228 | {/* References */}
229 | {selected.references && selected.references.length > 0 && (
230 |
247 | )}
248 |
249 | {/* Tags */}
250 |
251 | {selected.tags.map((tag) => (
252 |
253 | {tag}
254 |
255 | ))}
256 |
257 |
258 | >
259 | )}
260 |
261 |
262 |
263 |
264 | )
265 | }
266 |
--------------------------------------------------------------------------------
/data/domain-practices.ts:
--------------------------------------------------------------------------------
1 | // 领域平台实践数据
2 | export interface DomainPractice {
3 | id: string
4 | title: string
5 | description: string
6 | domain: string
7 | icon: string
8 | tags: string[]
9 | content: string
10 | keyCapabilities: string[]
11 | technicalStack: string[]
12 | challenges: string[]
13 | bestPractices: string[]
14 | references?: { title: string; url: string }[]
15 | }
16 |
17 | export const domainPractices: DomainPractice[] = [
18 | {
19 | id: "software-dev-platform",
20 | title: "软件开发平台工程",
21 | description: "构建支持应用开发全生命周期的内部开发者平台,提供自助服务能力和黄金路径",
22 | domain: "软件开发",
23 | icon: "Code",
24 | tags: ["IDP", "CI/CD", "自助服务", "黄金路径"],
25 | content: `软件开发平台工程是平台工程最核心的领域,专注于为应用开发者提供标准化、自动化的开发工具链和工作流程。通过内部开发者平台(IDP),开发者可以自助完成从代码提交到生产部署的全流程操作。
26 |
27 | ## 核心价值
28 |
29 | - **提升开发效率**: 通过自动化和标准化减少重复性工作,让开发者专注于业务价值
30 | - **降低认知负荷**: 提供开箱即用的最佳实践和预配置环境,减少技术选型和配置工作
31 | - **确保一致性**: 统一的工具链和流程保证不同团队间的协作效率
32 | - **加速交付**: 缩短从开发到生产的周期时间,支持快速迭代
33 |
34 | ## 平台架构
35 |
36 | 现代软件开发平台通常包含以下层次:
37 |
38 | 1. **开发者门户**: 统一的界面,提供服务目录、文档、API 参考等
39 | 2. **应用配置层**: 定义应用期望状态,如 Score、Acorn 等标准
40 | 3. **基础设施编排**: 自动化资源配置,如 Terraform、Pulumi
41 | 4. **CI/CD 流水线**: 自动化构建、测试、部署流程
42 | 5. **可观测性平台**: 日志、指标、追踪一体化`,
43 | keyCapabilities: [
44 | "自助服务的应用创建和部署",
45 | "标准化的项目模板和脚手架",
46 | "自动化的 CI/CD 流水线",
47 | "统一的开发者门户",
48 | "环境管理和配置管理",
49 | "集成的可观测性和监控",
50 | "安全和合规自动化",
51 | "文档和知识库",
52 | ],
53 | technicalStack: [
54 | "Backstage - 开发者门户",
55 | "GitLab/GitHub - 代码管理和 CI/CD",
56 | "ArgoCD/Flux - GitOps 部署",
57 | "Terraform/Pulumi - 基础设施即代码",
58 | "Kubernetes - 容器编排",
59 | "Prometheus/Grafana - 监控告警",
60 | "ELK/Loki - 日志聚合",
61 | "Vault - 密钥管理",
62 | ],
63 | challenges: [
64 | "平衡标准化与灵活性,避免过度约束创新",
65 | "管理不同技术栈和遗留系统的复杂性",
66 | "确保平台采纳率,避免开发者绕过平台",
67 | "持续维护和演进平台能力",
68 | "度量平台价值和开发者满意度",
69 | ],
70 | bestPractices: [
71 | "采用产品思维运营平台,将开发者视为客户",
72 | "建立快速反馈机制,定期收集开发者需求",
73 | "提供清晰的文档和培训材料",
74 | "实施渐进式推广,从试点团队开始",
75 | "建立平台 SLA 和支持渠道",
76 | "使用度量数据驱动平台优化决策",
77 | ],
78 | references: [
79 | { title: "Platform Engineering Best Practices", url: "https://platformengineering.org/" },
80 | { title: "Backstage Documentation", url: "https://backstage.io/docs/overview/what-is-backstage" },
81 | { title: "CNCF Platform Engineering Whitepaper", url: "https://tag-app-delivery.cncf.io/whitepapers/platforms/" },
82 | ],
83 | },
84 | {
85 | id: "data-platform",
86 | title: "数据开发平台工程",
87 | description: "构建现代数据栈,提供数据摄取、存储、转换、编排的完整能力,支持数据驱动决策",
88 | domain: "数据工程",
89 | icon: "Database",
90 | tags: ["现代数据栈", "ELT", "数据质量", "数据治理"],
91 | content: `数据开发平台工程专注于构建可扩展、可靠的数据基础设施,使数据工程师和分析师能够高效地处理和分析数据。现代数据平台采用模块化、云原生的架构,强调自助服务和数据质量。
92 |
93 | ## 现代数据栈架构
94 |
95 | 现代数据平台通常包含四个核心层次:
96 |
97 | 1. **数据摄取层**: 从各种数据源提取和加载数据
98 | 2. **数据存储层**: 云数据仓库或数据湖存储
99 | 3. **数据转换层**: 使用 ELT 模式进行数据清洗和建模
100 | 4. **数据编排层**: 调度和监控数据管道
101 |
102 | ## ELT vs ETL
103 |
104 | 现代数据平台普遍采用 ELT(提取-加载-转换)而非传统 ETL:
105 |
106 | - **性能优势**: 利用云数据仓库的计算能力进行转换
107 | - **灵活性**: 原始数据保留,支持多样化转换需求
108 | - **简化架构**: 减少中间层,降低维护成本`,
109 | keyCapabilities: [
110 | "多源数据集成和同步",
111 | "云数据仓库管理",
112 | "数据转换和建模(dbt)",
113 | "数据质量监控和验证",
114 | "数据血缘和影响分析",
115 | "数据目录和元数据管理",
116 | "数据合约和 SLA 管理",
117 | "访问控制和安全治理",
118 | ],
119 | technicalStack: [
120 | "Airbyte/Fivetran - 数据摄取",
121 | "Snowflake/BigQuery/Redshift - 数据仓库",
122 | "dbt - 数据转换",
123 | "Airflow/Dagster/Prefect - 数据编排",
124 | "Great Expectations - 数据质量",
125 | "Apache Iceberg/Delta Lake - 数据湖",
126 | "Datahub/Amundsen - 数据目录",
127 | "Monte Carlo/Soda - 数据可观测性",
128 | ],
129 | challenges: [
130 | "数据质量管理,防止脏数据传播",
131 | "成本控制,避免云数据仓库费用失控",
132 | "数据治理和合规性要求",
133 | "跨团队的数据协作和共享",
134 | "实时数据处理需求",
135 | ],
136 | bestPractices: [
137 | "实施数据合约,明确数据生产者和消费者责任",
138 | "采用元数据驱动的架构,提升自动化和可观测性",
139 | "优先考虑数据质量和可观测性",
140 | "使用 Python + SQL 混合工作流",
141 | "建立数据 SLA 和监控告警",
142 | "推行自助服务的数据分析能力",
143 | ],
144 | references: [
145 | { title: "Modern Data Stack Guide", url: "https://www.getdbt.com/blog/data-engineering" },
146 | { title: "Data Platform Modernization", url: "https://blog.dataengineerthings.org/" },
147 | { title: "dbt Documentation", url: "https://docs.getdbt.com/" },
148 | ],
149 | },
150 | {
151 | id: "ai-platform",
152 | title: "AI开发平台工程",
153 | description: "构建 MLOps 平台,支持机器学习模型的训练、部署、监控全生命周期管理",
154 | domain: "AI/ML",
155 | icon: "Brain",
156 | tags: ["MLOps", "模型训练", "模型部署", "AI基础设施"],
157 | content: `AI开发平台工程(也称 MLOps 平台)将软件工程的最佳实践应用于机器学习工作流,实现 ML 模型的规模化、自动化部署和运维。现代 AI 平台需要提供从数据准备到模型服务的端到端能力。
158 |
159 | ## MLOps 生命周期
160 |
161 | 完整的 MLOps 平台覆盖以下阶段:
162 |
163 | 1. **数据管理**: 数据版本化、特征工程、数据验证
164 | 2. **模型开发**: 实验跟踪、超参数调优、模型版本管理
165 | 3. **模型训练**: 分布式训练、GPU/TPU 资源调度
166 | 4. **模型部署**: 模型注册、A/B 测试、渐进式发布
167 | 5. **模型监控**: 性能监控、数据漂移检测、模型再训练
168 |
169 | ## AI 基础设施
170 |
171 | 现代 AI 平台需要强大的硬件和软件基础设施:
172 |
173 | - **计算资源**: GPU/TPU 集群、弹性伸缩
174 | - **存储**: 高性能数据湖、模型仓库
175 | - **框架**: TensorFlow、PyTorch、JAX
176 | - **容器化**: Docker、Kubernetes for ML`,
177 | keyCapabilities: [
178 | "实验管理和跟踪",
179 | "分布式模型训练",
180 | "特征存储和管理",
181 | "模型版本控制和注册",
182 | "自动化模型部署",
183 | "在线和批量推理服务",
184 | "模型性能监控",
185 | "数据和模型漂移检测",
186 | ],
187 | technicalStack: [
188 | "MLflow/Weights & Biases - 实验跟踪",
189 | "Kubeflow/Ray - 分布式训练",
190 | "Feast - 特征存储",
191 | "Seldon/KServe - 模型服务",
192 | "TensorFlow Serving - 模型部署",
193 | "Evidently/WhyLabs - 模型监控",
194 | "DVC - 数据版本控制",
195 | "Airflow - ML 工作流编排",
196 | ],
197 | challenges: [
198 | "GPU 资源的高效调度和成本控制",
199 | "模型可解释性和公平性",
200 | "数据隐私和安全合规",
201 | "模型性能退化的检测和处理",
202 | "跨团队的模型共享和复用",
203 | ],
204 | bestPractices: [
205 | "建立标准化的 ML 流水线模板",
206 | "实施严格的模型版本管理",
207 | "自动化模型测试和验证",
208 | "建立模型监控和告警机制",
209 | "实施特征复用和共享",
210 | "建立模型治理和合规流程",
211 | ],
212 | references: [
213 | { title: "MLOps Platforms Guide", url: "https://www.qwak.com/post/top-mlops-end-to-end" },
214 | { title: "Kubeflow Documentation", url: "https://www.kubeflow.org/" },
215 | { title: "ML Infrastructure Best Practices", url: "https://rafay.co/ai-and-cloud-native-blog/" },
216 | ],
217 | },
218 | {
219 | id: "frontend-platform",
220 | title: "大前端平台工程",
221 | description: "构建前端基础设施,包括微前端、构建工具链、组件库、开发者工具等",
222 | domain: "前端工程",
223 | icon: "Layout",
224 | tags: ["微前端", "构建工具", "组件库", "开发者工具"],
225 | content: `大前端平台工程专注于提升前端开发效率和应用性能,通过统一的工具链、组件库和最佳实践,支持多团队独立开发和部署。微前端架构是现代大前端平台的核心模式之一。
226 |
227 | ## 微前端架构
228 |
229 | 微前端允许将单个应用拆分为多个独立部署的单元:
230 |
231 | - **团队自治**: 每个团队独立选择技术栈和发布节奏
232 | - **独立部署**: 各模块可独立发布,降低变更风险
233 | - **技术栈灵活**: 支持不同框架共存
234 | - **边缘路由**: 在 CDN 层面进行应用组合
235 |
236 | ## 构建工具链
237 |
238 | 现代前端平台需要高效的构建工具:
239 |
240 | - **Turbopack**: 新一代打包工具,显著提升构建速度
241 | - **Turborepo**: Monorepo 管理工具
242 | - **Vite**: 快速的开发服务器和构建工具`,
243 | keyCapabilities: [
244 | "微前端应用编排和路由",
245 | "统一的组件库和设计系统",
246 | "快速构建和热更新",
247 | "代码质量和规范检查",
248 | "性能监控和优化",
249 | "多环境部署和灰度发布",
250 | "开发者工具和调试支持",
251 | "文档和示例平台",
252 | ],
253 | technicalStack: [
254 | "Single-SPA/Module Federation - 微前端框架",
255 | "Turbopack/Vite - 构建工具",
256 | "Turborepo/Nx - Monorepo 管理",
257 | "React/Vue/Angular - 前端框架",
258 | "Vercel/Netlify - 部署平台",
259 | "Storybook - 组件开发",
260 | "ESLint/Prettier - 代码规范",
261 | "Playwright/Cypress - 测试工具",
262 | ],
263 | challenges: ["微前端间的通信和状态共享", "样式冲突和隔离", "构建产物体积控制", "首屏加载性能优化", "跨框架兼容性"],
264 | bestPractices: [
265 | "采用 Monorepo 管理共享代码",
266 | "建立统一的设计系统和组件库",
267 | "使用特性标志控制功能发布",
268 | "优化构建流程,使用缓存和增量构建",
269 | "实施自动化测试和视觉回归测试",
270 | "建立性能预算和监控",
271 | ],
272 | references: [
273 | { title: "Microfrontends on Vercel", url: "https://vercel.com/docs/frameworks/microfrontends" },
274 | { title: "Turborepo Documentation", url: "https://turbo.build/repo" },
275 | { title: "Module Federation", url: "https://module-federation.io/" },
276 | ],
277 | },
278 | {
279 | id: "agent-platform",
280 | title: "Agent开发平台工程",
281 | description: "构建 AI Agent 开发和运行平台,支持多步骤、自主决策的智能代理系统",
282 | domain: "AI Agent",
283 | icon: "Bot",
284 | tags: ["LangChain", "LangGraph", "多智能体", "工作流编排"],
285 | content: `Agent开发平台工程是 2024 年快速兴起的新领域,专注于构建支持 AI Agent 开发、测试、部署和监控的基础设施。随着大语言模型能力的提升,AI Agent 正在从简单的对话式应用演进为能够自主完成复杂任务的智能系统。
286 |
287 | ## AI Agent 架构演进
288 |
289 | 从简单到复杂的 Agent 架构:
290 |
291 | 1. **单步 Agent**: 简单的提示-响应模式
292 | 2. **工具调用 Agent**: 能够调用外部 API 和工具
293 | 3. **多步推理 Agent**: ReAct 模式,思考-行动循环
294 | 4. **多智能体系统**: 多个 Agent 协作完成任务
295 |
296 | ## LangChain vs LangGraph
297 |
298 | - **LangChain**: 适合线性工作流和简单集成
299 | - **LangGraph**: 提供强大的状态管理、分支、循环能力,适合复杂多 Agent 场景`,
300 | keyCapabilities: [
301 | "Agent 工作流设计和编排",
302 | "工具和 API 集成管理",
303 | "对话上下文和记忆管理",
304 | "多智能体协作框架",
305 | "Agent 行为监控和调试",
306 | "安全和权限控制",
307 | "提示词版本管理",
308 | "性能和成本优化",
309 | ],
310 | technicalStack: [
311 | "LangChain - Agent 框架",
312 | "LangGraph - 复杂工作流编排",
313 | "AutoGPT - 自主 Agent",
314 | "OpenAI/Anthropic API - LLM 后端",
315 | "Vector Databases - 知识检索",
316 | "FastAPI/Flask - Agent 服务",
317 | "Redis - 会话状态管理",
318 | "LangSmith - 监控和调试",
319 | ],
320 | challenges: [
321 | "Agent 行为的可预测性和可靠性",
322 | "工具调用的安全性控制",
323 | "上下文窗口和成本管理",
324 | "Agent 决策的可解释性",
325 | "多 Agent 协作的复杂性",
326 | ],
327 | bestPractices: [
328 | "明确定义 Agent 的目标和边界",
329 | "实施严格的工具调用权限控制",
330 | "建立完善的测试和评估机制",
331 | "使用结构化输出提升可靠性",
332 | "实施成本监控和限流",
333 | "保留 Agent 决策日志用于审计",
334 | ],
335 | references: [
336 | { title: "LangChain Documentation", url: "https://python.langchain.com/" },
337 | { title: "LangGraph Guide", url: "https://langchain-ai.github.io/langgraph/" },
338 | { title: "Building Autonomous AI Agents", url: "https://www.incentius.com/blog-posts/" },
339 | ],
340 | },
341 | {
342 | id: "developer-portal",
343 | title: "开发者门户与平台工程",
344 | description: "构建统一的开发者门户,提供服务目录、文档、API 管理、自助服务等能力",
345 | domain: "开发者门户",
346 | icon: "Globe",
347 | tags: ["Backstage", "服务目录", "API 管理", "文档平台"],
348 | content: `开发者门户是平台工程的核心界面,为开发者提供统一的服务发现、文档查阅、资源申请入口。Backstage 是目前最流行的开源开发者门户框架,由 Spotify 开源并被 CNCF 孵化。
349 |
350 | ## 开发者门户的价值
351 |
352 | - **提升可发现性**: 统一的服务目录,快速找到所需资源
353 | - **减少重复**: 通过模板和最佳实践避免重复造轮子
354 | - **标准化**: 统一的工具和流程,降低协作成本
355 | - **自助服务**: 开发者自主完成常见任务,减少等待
356 |
357 | ## Backstage 核心能力
358 |
359 | 1. **软件目录**: 管理所有软件组件、服务、库的元数据
360 | 2. **软件模板**: 快速创建符合最佳实践的新项目
361 | 3. **TechDocs**: 文档即代码,与项目同步维护
362 | 4. **插件生态**: 丰富的插件系统,集成各类工具`,
363 | keyCapabilities: [
364 | "统一的服务和组件目录",
365 | "项目模板和脚手架",
366 | "集成文档平台",
367 | "API 目录和测试工具",
368 | "资源申请和审批流程",
369 | "插件市场和扩展性",
370 | "搜索和发现能力",
371 | "权限和访问控制",
372 | ],
373 | technicalStack: [
374 | "Backstage - 门户框架",
375 | "GitHub/GitLab - 代码仓库集成",
376 | "Kubernetes - 服务发现",
377 | "Swagger/OpenAPI - API 文档",
378 | "MkDocs/Docusaurus - 文档生成",
379 | "LDAP/OAuth - 身份认证",
380 | "PostgreSQL - 元数据存储",
381 | "各类 Backstage 插件",
382 | ],
383 | challenges: [
384 | "初期实施需要较大工程投入",
385 | "保持服务目录数据的准确性和时效性",
386 | "推动开发者采纳和使用",
387 | "插件集成和维护成本",
388 | "跨组织的数据治理",
389 | ],
390 | bestPractices: [
391 | "采用产品化思维运营门户",
392 | "自动化服务元数据的收集和更新",
393 | "提供清晰的入门指南和培训",
394 | "建立反馈机制,持续改进",
395 | "从核心功能开始,逐步扩展",
396 | "重视文档质量和搜索体验",
397 | ],
398 | references: [
399 | { title: "Backstage Official Site", url: "https://backstage.io/" },
400 | { title: "Backstage Documentation", url: "https://backstage.io/docs/" },
401 | {
402 | title: "Platform Engineering with Backstage",
403 | url: "https://www.forrester.com/blogs/how-backstage-is-transforming-platform-engineering/",
404 | },
405 | ],
406 | },
407 | {
408 | id: "devex-platform",
409 | title: "开发者体验平台工程",
410 | description: "通过度量和数据驱动的方法,持续优化开发者生产力和满意度",
411 | domain: "开发者体验",
412 | icon: "Smile",
413 | tags: ["DX 指标", "生产力", "DORA", "SPACE"],
414 | content: `开发者体验(DX)平台工程专注于度量和优化开发者的日常工作体验。通过结合定性和定量数据,识别瓶颈并转化为可衡量的业务价值。DX 平台由 DORA 和 SPACE 框架的研究者设计。
415 |
416 | ## DX Core 4 框架
417 |
418 | 平衡四个维度来衡量开发者生产力:
419 |
420 | 1. **速度 (Speed)**: 交付速度和周期时间
421 | 2. **效能 (Effectiveness)**: 任务完成质量和成功率
422 | 3. **质量 (Quality)**: 代码质量和系统可靠性
423 | 4. **业务影响 (Impact)**: 对业务目标的实际贡献
424 |
425 | ## 开发者体验指数 (DXI)
426 |
427 | DXI 是一个综合性指标,衡量 14 个维度:
428 |
429 | - 深度工作时间
430 | - 本地迭代速度
431 | - 发布便捷性
432 | - 代码可维护性
433 | - 文档质量
434 | - 工具链效率
435 | - ...
436 |
437 | 研究表明,DXI 每提高 1 分,每位工程师每周可节省 13 分钟。`,
438 | keyCapabilities: [
439 | "开发者满意度调查",
440 | "生产力指标采集和分析",
441 | "工具链性能监控",
442 | "流程瓶颈识别",
443 | "ROI 计算和报告",
444 | "团队对比和基准测试",
445 | "改进建议和优先级排序",
446 | "持续反馈循环",
447 | ],
448 | technicalStack: [
449 | "DX Platform - 开发者智能平台",
450 | "DORA Metrics - 交付性能指标",
451 | "SPACE Framework - 生产力框架",
452 | "Datadog/New Relic - 应用监控",
453 | "GitHub/GitLab Analytics - 代码分析",
454 | "Slack/Teams - 协作数据",
455 | "Jira/Linear - 项目管理数据",
456 | "自定义调查工具",
457 | ],
458 | challenges: [
459 | "选择正确的指标,避免度量误导",
460 | "平衡定量数据和定性反馈",
461 | "保护开发者隐私和信任",
462 | "将 DX 改进转化为业务价值",
463 | "跨团队和组织的对比公平性",
464 | ],
465 | bestPractices: [
466 | "结合定性和定量方法",
467 | "关注结果指标而非活动指标",
468 | "建立安全的反馈环境",
469 | "定期而非过度频繁地度量",
470 | "将 DX 改进与业务目标对齐",
471 | "持续迭代度量框架本身",
472 | ],
473 | references: [
474 | { title: "DX Platform", url: "https://getdx.com/" },
475 | { title: "Developer Productivity Guide", url: "https://getdx.com/blog/developer-productivity/" },
476 | { title: "Developer Experience Index", url: "https://getdx.com/report/developer-experience-index" },
477 | ],
478 | },
479 | ]
480 |
481 | export const domainCategories = [
482 | { id: "all", name: "全部领域" },
483 | { id: "软件开发", name: "软件开发" },
484 | { id: "数据工程", name: "数据工程" },
485 | { id: "AI/ML", name: "AI/ML" },
486 | { id: "前端工程", name: "前端工程" },
487 | { id: "AI Agent", name: "AI Agent" },
488 | { id: "开发者门户", name: "开发者门户" },
489 | { id: "开发者体验", name: "开发者体验" },
490 | ]
491 |
--------------------------------------------------------------------------------
/components/sections/projects-section.tsx:
--------------------------------------------------------------------------------
1 | "use client"
2 |
3 | import { useState, useMemo } from "react"
4 | import { projects, projectCategories, type ProjectCategory, type ProjectType } from "@/data/projects"
5 | import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
6 | import { Button } from "@/components/ui/button"
7 | import { Badge } from "@/components/ui/badge"
8 | import { Kbd } from "@/components/ui/kbd"
9 | import { LayoutGrid, List, ExternalLink, Github, Star, Filter, X } from "lucide-react"
10 | import {
11 | DropdownMenu,
12 | DropdownMenuContent,
13 | DropdownMenuCheckboxItem,
14 | DropdownMenuLabel,
15 | DropdownMenuSeparator,
16 | DropdownMenuTrigger,
17 | } from "@/components/ui/dropdown-menu"
18 |
19 | type ViewMode = "grid" | "list"
20 |
21 | const typeLabels: Record