Skip to content

Commit 15837a3

Browse files
committed
feat: add 2026 webinar event page
1 parent e4b016b commit 15837a3

5 files changed

Lines changed: 250 additions & 3 deletions

File tree

i18n/zh-CN/docusaurus-plugin-content-pages/webinars-page.mdx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,16 @@ import { useState, useCallback, useMemo } from 'react';
77
import useBaseUrl from '@docusaurus/useBaseUrl';
88

99
export const EventsData = [
10+
{
11+
title: "直播预告|PostgreSQL 18.3 x IvorySQL 5.3:开启 AI 数据库新纪元",
12+
desc: "AI 时代数据库如何从存储走向智能?本场直播将从 PostgreSQL 18.3 内核优化、pgvector 实战与 IvorySQL 5.3 升级出发,拆解 AI 数据库选型与落地路径。",
13+
startTime: "2026-03-25",
14+
endTime: "2026-03-25",
15+
location: "线上活动",
16+
link: "/zh-cn/webinars/event-202602",
17+
img: "/img/events/event-202602.svg",
18+
imagePosition: "left center"
19+
},
1020
{
1121
title: "直播活动|IvorySQL v5 兼容功能使用指南",
1222
desc: "IvorySQL v5重磅发布!12月25日线上直播深度解析21项Oracle兼容新功能,助您无缝迁移与高效开发。",
@@ -163,7 +173,7 @@ export const EventsData = [
163173
];
164174

165175
export const EventCard = ({ event }) => {
166-
const { title, desc, startTime, endTime, location, link, img } = event;
176+
const { title, desc, startTime, endTime, location, link, img, imagePosition } = event;
167177
const now = new Date();
168178
const start = new Date(startTime);
169179
const end = new Date(endTime);
@@ -183,7 +193,12 @@ export const EventCard = ({ event }) => {
183193
rel="noopener noreferrer"
184194
>
185195
<div className="card-img-wrapper">
186-
<img src={useBaseUrl(img)} alt={title} loading="lazy" />
196+
<img
197+
src={useBaseUrl(img)}
198+
alt={title}
199+
loading="lazy"
200+
style={imagePosition ? { objectPosition: imagePosition } : undefined}
201+
/>
187202
</div>
188203
<div className="card-content">
189204
<div className="card-header">
@@ -431,4 +446,4 @@ export const WebinarList = () => {
431446
</div>
432447
</div>
433448

434-
<WebinarList />
449+
<WebinarList />
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
---
2+
title: 直播预告|PostgreSQL 18.3 x IvorySQL 5.3:开启 AI 数据库新纪元
3+
hide_table_of_contents: true
4+
---
5+
6+
import useBaseUrl from '@docusaurus/useBaseUrl';
7+
8+
<style>{`
9+
.detail-container { display: flex; gap: 40px; margin-top: 40px; }
10+
.detail-content { flex: 8; min-width: 0; }
11+
.detail-sidebar { flex: 3.5; }
12+
13+
.event-main-img { width: 100%; border-radius: 18px; margin: 24px 0; box-shadow: 0 14px 40px rgba(0,0,0,0.08); background: #f6f6f6; }
14+
.section-title { color: #2f66ff; border-left: 5px solid #2f66ff; padding-left: 16px; margin: 42px 0 20px; font-weight: 700; }
15+
.content-text { line-height: 1.9; color: #444; font-size: 1.05rem; margin-bottom: 18px; text-align: justify; }
16+
17+
.info-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin: 26px 0; }
18+
.info-card { background: linear-gradient(180deg, #f8fbff 0%, #ffffff 100%); border: 1px solid #e7efff; border-radius: 16px; padding: 22px; box-shadow: 0 10px 24px rgba(47,102,255,0.06); }
19+
.info-label { font-size: 0.92rem; color: #2f66ff; margin-bottom: 10px; font-weight: 700; letter-spacing: 0.04em; }
20+
.info-value { font-size: 1.05rem; color: #222; line-height: 1.7; }
21+
22+
.speaker-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin-top: 16px; }
23+
.speaker-card { border: 1px solid #eef1f5; border-radius: 18px; padding: 22px; background: #fff; box-shadow: 0 10px 30px rgba(0,0,0,0.04); }
24+
.speaker-head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
25+
.speaker-avatar { width: 54px; height: 54px; border-radius: 50%; background: linear-gradient(135deg, #2f66ff 0%, #6a8dff 100%); color: #fff; font-size: 1.4rem; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 10px 20px rgba(47,102,255,0.18); }
26+
.speaker-name { font-size: 1.1rem; font-weight: 700; color: #222; }
27+
.speaker-role { font-size: 0.92rem; color: #2f66ff; margin-top: 4px; }
28+
.speaker-desc { color: #555; line-height: 1.85; font-size: 0.97rem; }
29+
30+
.outline-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; margin-top: 16px; }
31+
.outline-card { border-radius: 18px; border: 1px solid #edf1f7; background: #fff; padding: 22px; box-shadow: 0 10px 28px rgba(0,0,0,0.04); }
32+
.outline-tag { display: inline-block; padding: 4px 10px; border-radius: 999px; background: rgba(47,102,255,0.1); color: #2f66ff; font-size: 0.84rem; font-weight: 700; margin-bottom: 12px; }
33+
.outline-title { font-size: 1.08rem; font-weight: 700; color: #222; margin-bottom: 12px; }
34+
.outline-card ul { margin: 0; padding-left: 1.1rem; color: #555; line-height: 1.9; }
35+
36+
.cta-box { background: linear-gradient(135deg, #2f66ff 0%, #5f84ff 100%); color: #fff; border-radius: 22px; padding: 26px; margin-top: 28px; box-shadow: 0 14px 34px rgba(47,102,255,0.22); }
37+
.cta-box p { margin: 0 0 10px; line-height: 1.85; }
38+
.cta-box p:last-child { margin-bottom: 0; }
39+
40+
.sidebar-box { border: 1px solid #f0f0f0; border-radius: 16px; padding: 24px; background: #fff; position: sticky; top: 100px; }
41+
.sidebar-title { font-size: 1.2rem; font-weight: 700; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px solid #eee; }
42+
.side-item { display: flex; gap: 12px; margin-bottom: 20px; text-decoration: none !important; color: inherit; transition: all 0.3s; }
43+
.side-item:hover { transform: translateX(5px); color: #2f66ff; }
44+
.side-item-img { width: 100px; height: 60px; border-radius: 8px; object-fit: cover; flex-shrink: 0; }
45+
.side-item-title { font-size: 0.92rem; font-weight: 700; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
46+
47+
@media (max-width: 996px) {
48+
.detail-container { flex-direction: column; }
49+
.detail-sidebar { display: none; }
50+
.info-grid, .speaker-grid, .outline-grid { grid-template-columns: 1fr; }
51+
}
52+
`}</style>
53+
54+
<div className="container detail-container">
55+
<div className="detail-content">
56+
<h1 style={{ fontSize: '2.2rem', marginBottom: '20px', lineHeight: '1.35' }}>
57+
直播预告|PostgreSQL 18.3 x IvorySQL 5.3:开启 AI 数据库新纪元
58+
</h1>
59+
60+
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '20px', color: '#666', marginBottom: '26px', fontSize: '0.95rem' }}>
61+
<span>📅 活动时间:2026-03-25 19:30</span>
62+
<span>🌍 线上直播</span>
63+
<span>🎥 平台:IvorySQL 视频号</span>
64+
</div>
65+
66+
<div className="content-text">
67+
观看直播即有机会获取 IvorySQL 周边礼品。欢迎大家预约,和社区嘉宾一起聊一聊 PostgreSQL 与 IvorySQL 在 AI 场景下的新能力、新实践与新机会。
68+
</div>
69+
70+
<img className="event-main-img" src={useBaseUrl('/img/events/event-202602-poster-original.jpg')} alt="直播预告海报" />
71+
72+
<h2 className="section-title">直播时间和平台</h2>
73+
<div className="info-grid">
74+
<div className="info-card">
75+
<div className="info-label">直播时间</div>
76+
<div className="info-value">2026 年 3 月 25 日(周三)19:30 准时开启</div>
77+
</div>
78+
<div className="info-card">
79+
<div className="info-label">观看平台</div>
80+
<div className="info-value">【IvorySQL】视频号<br />建议提前进入视频号主页预约,开播时更方便收到提醒。</div>
81+
</div>
82+
</div>
83+
84+
<h2 className="section-title">讲师简介</h2>
85+
<div className="speaker-grid">
86+
<div className="speaker-card">
87+
<div className="speaker-head">
88+
<span className="speaker-avatar">崔</span>
89+
<div>
90+
<div className="speaker-name">崔鹏</div>
91+
<div className="speaker-role">特邀分享嘉宾</div>
92+
</div>
93+
</div>
94+
<div className="speaker-desc">
95+
计算机学博士,专注 AI 与大数据管理领域研究,拥有十五年数据库、操作系统及存储领域实战经验,兼具 ORACLE OCM、MySQL OCP 等国际权威认证,PostgreSQL ACE。运营技术公众号“CP 的 PostgreSQL 厨房”,已在 AI 方向发表 2 篇 SCI 论文,长期推动理论研究与工程实践结合。
96+
</div>
97+
</div>
98+
99+
<div className="speaker-card">
100+
<div className="speaker-head">
101+
<span className="speaker-avatar">杨</span>
102+
<div>
103+
<div className="speaker-name">杨世华</div>
104+
<div className="speaker-role">IvorySQL 贡献者</div>
105+
</div>
106+
</div>
107+
<div className="speaker-desc">
108+
瀚高股份软件开发工程师,IvorySQL 核心贡献者之一,持续参与 IvorySQL 版本演进与功能实现,对 Oracle 兼容能力、AI 场景探索及社区版本实践有丰富经验。
109+
</div>
110+
</div>
111+
</div>
112+
113+
<h2 className="section-title">分享内容简介</h2>
114+
<div className="content-text">
115+
AI 时代,数据库已从“存数据”升级为“懂语义、高并发、易落地”。本次线上直播特邀 KOL 与研发专家双视角联动,拆解 PostgreSQL 为什么正在成为 AI 场景的重要基础设施,分享 PG 18.3 内核优化细节及 pgvector 实战技巧,并同步介绍 IvorySQL 5.3 的核心更新、NL2SQL 方案探索与现场演示,从内核到实战,帮助技术团队更快解锁 AI 数据库选型与智能应用开发路径。
116+
</div>
117+
118+
<h2 className="section-title">分享大纲</h2>
119+
<div className="outline-grid">
120+
<div className="outline-card">
121+
<div className="outline-tag">第一部分</div>
122+
<div className="outline-title">趋势与内核</div>
123+
<ul>
124+
<li>为何选择 PG:为什么 PostgreSQL 正在取代专用向量数据库,成为 AI 场景的重要选择。</li>
125+
<li>内核原力:解读 PG 18.3 针对 AI 高并发检索、异步 I/O 的底层优化。</li>
126+
<li>进阶实战:pgvector 在生产环境中的索引选型(HNSW)与内存压缩技巧。</li>
127+
<li>未来趋势:PostgreSQL 在 AI 原生数据库方向的演进。</li>
128+
</ul>
129+
</div>
130+
131+
<div className="outline-card">
132+
<div className="outline-tag">第二部分</div>
133+
<div className="outline-title">产品与落地</div>
134+
<ul>
135+
<li>同步升级:IvorySQL 5.3 的主要变化。</li>
136+
<li>NL2SQL:pg_ai_query 插件与 n8n + LLM 的自然语言查询方案探索。</li>
137+
<li>实战演示:NL2SQL 现场 Demo。</li>
138+
<li>第三部分:在线答疑与互动交流。</li>
139+
</ul>
140+
</div>
141+
</div>
142+
143+
<h2 className="section-title">直播福利</h2>
144+
<div className="content-text">
145+
本次直播准备了 IvorySQL 周边礼品,观看直播并参与互动即有机会获得。欢迎 PostgreSQL 爱好者、IvorySQL 关注者和使用者一起预约围观。
146+
</div>
147+
148+
<div className="cta-box">
149+
<p><b>预约提醒</b>:建议提前进入【IvorySQL】视频号预约直播,避免错过开播提醒。</p>
150+
<p><b>开播时间</b>:3 月 25 日晚 7 点半。</p>
151+
<p><b>互动方式</b>:欢迎把你对 AI 数据库、pgvector、IvorySQL 5.3 与 NL2SQL 的问题带到直播间,我们会在在线答疑环节集中交流。</p>
152+
</div>
153+
</div>
154+
155+
<div className="detail-sidebar">
156+
<div className="sidebar-box">
157+
<div className="sidebar-title">近期活动</div>
158+
<a href="/zh-cn/webinars/event-202517" className="side-item">
159+
<img className="side-item-img" src={useBaseUrl('/img/events/event-202517.jpg')} alt="IvorySQL v5 兼容功能使用指南" />
160+
<div className="side-item-title">直播回顾|IvorySQL v5 兼容功能使用指南</div>
161+
</a>
162+
<a href="/zh-cn/webinars/event-202516" className="side-item">
163+
<img className="side-item-img" src={useBaseUrl('/img/events/event-202516.png')} alt="Oracle 到 PostgreSQL 迁移技术网络研讨会" />
164+
<div className="side-item-title">活动回顾|Oracle 到 PostgreSQL 迁移技术网络研讨会</div>
165+
</a>
166+
<a href="/zh-cn/webinars/event-202514" className="side-item">
167+
<img className="side-item-img" src={useBaseUrl('/img/events/event-202514.png')} alt="PostgreSQL 18 六大新特性深度解析" />
168+
<div className="side-item-title">直播回顾|PostgreSQL 18 六大新特性深度解析</div>
169+
</a>
170+
</div>
171+
</div>
172+
</div>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: Livestream Preview | PostgreSQL 18.3 x IvorySQL 5.3
3+
hide_table_of_contents: true
4+
---
5+
6+
import useBaseUrl from '@docusaurus/useBaseUrl';
7+
8+
<style>{`
9+
.event-shell { max-width: 900px; margin: 48px auto; padding: 0 20px; }
10+
.event-cover { width: 100%; border-radius: 18px; box-shadow: 0 14px 40px rgba(0,0,0,0.08); }
11+
.event-note { margin-top: 28px; padding: 24px; border-radius: 18px; border: 1px solid #e9eefc; background: linear-gradient(180deg, #f8fbff 0%, #ffffff 100%); line-height: 1.8; color: #444; }
12+
.event-note a { color: #2f66ff; font-weight: 700; }
13+
`}</style>
14+
15+
<div className="event-shell">
16+
<h1>Livestream Preview | PostgreSQL 18.3 x IvorySQL 5.3</h1>
17+
<img className="event-cover" src={useBaseUrl('/img/events/event-202602.svg')} alt="PostgreSQL 18.3 x IvorySQL 5.3 cover" />
18+
<div className="event-note">
19+
This event page is currently maintained in Chinese only.
20+
<br />
21+
For the full event details, please visit the Chinese page:
22+
{' '}
23+
<a href="/zh-cn/webinars/event-202602">/zh-cn/webinars/event-202602</a>
24+
</div>
25+
</div>
2.02 MB
Loading

static/img/events/event-202602.svg

Lines changed: 35 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)