Skip to content

Commit 71b111a

Browse files
authored
docs: update files
1 parent 7bf92dd commit 71b111a

14 files changed

Lines changed: 329 additions & 167 deletions

File tree

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
---
2+
interface UpdateItem {
3+
data: {
4+
date: string;
5+
tag: string;
6+
title: string;
7+
description: string;
8+
};
9+
}
10+
11+
interface Props {
12+
items: UpdateItem[];
13+
}
14+
15+
const { items } = Astro.props;
16+
---
17+
18+
<div class="timeline">
19+
{
20+
items.map((item) => (
21+
<article class="timeline-item">
22+
<div>
23+
<span class="timeline-label">{item.data.date}</span>
24+
</div>
25+
<div class="card">
26+
<span class="card-tag card-tag-subtle">{item.data.tag}</span>
27+
<h3>{item.data.title}</h3>
28+
<p>{item.data.description}</p>
29+
</div>
30+
</article>
31+
))
32+
}
33+
</div>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: "PromptAL: Sample-Aware Dynamic Soft Prompts for Few-Shot Active Learning"
3+
authors: "Hui Xiang, Jinqiao Shi, Ting Zhang, Xiaojie Zhao, Yong Liu, Yong Ma"
4+
venue: "Knowledge-Based Systems"
5+
year: "2025"
6+
type: "Journal"
7+
summary: "该工作面向小样本主动学习场景,引入样本感知的动态软提示来利用未标注数据校正预测分布与决策边界,并结合不确定性与全局/局部多样性,提升高价值样本选择效果。"
8+
links:
9+
- label: "Paper"
10+
href: "https://doi.org/10.1016/j.knosys.2025.114354"
11+
- label: "Code"
12+
href: "https://github.com/PromptAL"
13+
---

src/content/publications/99-rapidai-research-directory.md

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/data/page-content.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,15 @@ export const updatesPageContent = defineUpdatesPageContent({
8888
eyebrow: "时间线",
8989
title: "近期更新",
9090
description: "围绕组织节奏、项目推进和社区动作,持续记录 RapidAI 的公开更新。"
91+
},
92+
paged: {
93+
eyebrow: "时间线",
94+
title: "近期更新",
95+
description: "更新列表支持分页浏览,方便按阶段查看 RapidAI 的组织动态与项目推进。"
9196
}
9297
} satisfies {
9398
timeline: SectionIntroData;
99+
paged: SectionIntroData;
94100
});
95101

96102
export const researchPageContent = defineResearchPageContent({

src/data/updates.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@ import { sectionsByKey } from "./sections";
44
export const updatesPageHero = sectionsByKey.update.hero;
55

66
export const updatesSectionIntro = updatesPageContent.timeline;
7+
export const updatesPagedSectionIntro = updatesPageContent.paged;
8+
export const updatesPageSize = 6;

src/data/validators.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,9 +345,11 @@ export function defineMembersPageContent<
345345
export function defineUpdatesPageContent<
346346
T extends {
347347
timeline: SectionIntroData;
348+
paged: SectionIntroData;
348349
}
349350
>(content: T) {
350351
validateIntro(content.timeline, "updatesPageContent.timeline");
352+
validateIntro(content.paged, "updatesPageContent.paged");
351353
return content;
352354
}
353355

src/pages/publications/[slug].astro

Lines changed: 58 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ const {
5151
} = Astro.props;
5252
const { Content } = await render(publication);
5353
const hasBody = typeof publication.body === "string" && publication.body.trim().length > 0;
54-
const publicationNeighbors = [previousPublication, nextPublication].filter(
55-
(item): item is PublicationNeighbor => item !== null
56-
);
5754
---
5855

5956
<MainLayout
@@ -64,50 +61,52 @@ const publicationNeighbors = [previousPublication, nextPublication].filter(
6461
<section class="page-hero publication-detail-hero">
6562
<div class="publication-detail-main">
6663
<a class="publication-backlink" href={withBase("/publications")}>返回论文页</a>
67-
<p class="eyebrow">论文详情</p>
68-
<h1>{publication.data.title}</h1>
69-
<p class="publication-authors publication-detail-authors">{publication.data.authors}</p>
70-
</div>
64+
<article class="card publication-detail-shell">
65+
<div class="publication-detail-overview">
66+
<p class="eyebrow">论文详情</p>
67+
<h1>{publication.data.title}</h1>
68+
<p class="publication-authors publication-detail-authors">{publication.data.authors}</p>
7169

72-
<aside class="card publication-detail-panel">
73-
<div class="publication-meta publication-detail-meta">
74-
<span class="card-tag">{publication.data.type}</span>
75-
<span class="publication-venue">{publication.data.venue}</span>
76-
<span class="publication-year">{publication.data.year}</span>
77-
</div>
78-
<dl class="publication-detail-facts">
79-
<div>
80-
<dt>类型</dt>
81-
<dd>{publication.data.type}</dd>
82-
</div>
83-
<div>
84-
<dt>刊物</dt>
85-
<dd>{publication.data.venue}</dd>
86-
</div>
87-
<div>
88-
<dt>年份</dt>
89-
<dd>{publication.data.year}</dd>
90-
</div>
91-
</dl>
92-
{
93-
publication.data.links.length > 0 && (
94-
<div class="publication-links publication-detail-actions">
95-
{publication.data.links.map((link) => (
96-
<a class="button button-secondary publication-link" href={link.href} target="_blank" rel="noreferrer">
97-
{link.label}
98-
</a>
99-
))}
70+
<div class="publication-detail-panel">
71+
<div class="publication-meta publication-detail-meta">
72+
<span class="card-tag">{publication.data.type}</span>
73+
<span class="publication-venue">{publication.data.venue}</span>
74+
<span class="publication-year">{publication.data.year}</span>
75+
</div>
76+
<dl class="publication-detail-facts">
77+
<div>
78+
<dt>类型</dt>
79+
<dd>{publication.data.type}</dd>
80+
</div>
81+
<div>
82+
<dt>刊物</dt>
83+
<dd>{publication.data.venue}</dd>
84+
</div>
85+
<div>
86+
<dt>年份</dt>
87+
<dd>{publication.data.year}</dd>
88+
</div>
89+
</dl>
90+
{
91+
publication.data.links.length > 0 && (
92+
<div class="publication-links publication-detail-actions">
93+
{publication.data.links.map((link) => (
94+
<a class="button button-secondary publication-link" href={link.href} target="_blank" rel="noreferrer">
95+
{link.label}
96+
</a>
97+
))}
98+
</div>
99+
)
100+
}
100101
</div>
101-
)
102-
}
103-
</aside>
104-
</section>
105102

106-
<section class="content-section publication-detail-summary-section">
107-
<article class="card publication-detail-summary-card">
108-
<span class="card-tag">摘要</span>
109-
<p class="publication-detail-summary">{publication.data.summary}</p>
110-
</article>
103+
<div class="publication-detail-summary-block">
104+
<span class="card-tag">摘要</span>
105+
<p class="publication-detail-summary">{publication.data.summary}</p>
106+
</div>
107+
</div>
108+
</article>
109+
</div>
111110
</section>
112111

113112
{
@@ -119,15 +118,22 @@ const publicationNeighbors = [previousPublication, nextPublication].filter(
119118
}
120119

121120
{
122-
publicationNeighbors.length > 0 && (
123-
<section class:list={["content-section", "publication-neighbors", publicationNeighbors.length === 1 && "publication-neighbors-single"]}>
124-
{publicationNeighbors.map((item) => (
125-
<a class="card publication-neighbor-card" href={withBase(`/publications/${item.id}`)}>
126-
<span class:list={["card-tag", item.direction === "上一篇" && "card-tag-subtle"]}>{item.direction}</span>
127-
<h3>{item.title}</h3>
128-
<p>{item.year}</p>
121+
(previousPublication || nextPublication) && (
122+
<section class="content-section publication-detail-navigation">
123+
{previousPublication ? (
124+
<a class="publication-prev-link" href={withBase(`/publications/${previousPublication.id}`)}>
125+
上一篇:{previousPublication.title}
126+
</a>
127+
) : (
128+
<span />
129+
)}
130+
{nextPublication && (
131+
<a class="card publication-neighbor-card publication-next-card" href={withBase(`/publications/${nextPublication.id}`)}>
132+
<span class="card-tag">下一篇</span>
133+
<h3>{nextPublication.title}</h3>
134+
<p>{nextPublication.year}</p>
129135
</a>
130-
))}
136+
)}
131137
</section>
132138
)
133139
}

src/pages/update.astro

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
---
22
import { getCollection } from "astro:content";
3+
import Pagination from "../components/Pagination.astro";
34
import PageHero from "../components/PageHero.astro";
5+
import UpdateTimeline from "../components/UpdateTimeline.astro";
46
import MainLayout from "../layouts/MainLayout.astro";
57
import SectionIntro from "../components/SectionIntro.astro";
68
import { sectionsByKey } from "../data/sections";
7-
import { updatesPageHero, updatesSectionIntro } from "../data/updates";
9+
import { updatesPageHero, updatesPageSize, updatesSectionIntro } from "../data/updates";
810
import { orderContentEntriesByFile } from "../utils/content-order";
911
1012
const updates = orderContentEntriesByFile(await getCollection("updates"));
13+
const currentPage = 1;
14+
const totalPages = Math.max(1, Math.ceil(updates.length / updatesPageSize));
15+
const visibleUpdates = updates.slice(0, updatesPageSize);
1116
---
1217

1318
<MainLayout
@@ -28,21 +33,7 @@ const updates = orderContentEntriesByFile(await getCollection("updates"));
2833
title={updatesSectionIntro.title}
2934
description={updatesSectionIntro.description}
3035
/>
31-
<div class="timeline">
32-
{
33-
updates.map((item) => (
34-
<article class="timeline-item">
35-
<div>
36-
<span class="timeline-label">{item.data.date}</span>
37-
</div>
38-
<div class="card">
39-
<span class="card-tag card-tag-subtle">{item.data.tag}</span>
40-
<h3>{item.data.title}</h3>
41-
<p>{item.data.description}</p>
42-
</div>
43-
</article>
44-
))
45-
}
46-
</div>
36+
<UpdateTimeline items={visibleUpdates} />
37+
<Pagination currentPage={currentPage} totalPages={totalPages} baseUrl="/update" />
4738
</section>
4839
</MainLayout>

src/pages/update/page/[page].astro

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
---
2+
import { getCollection } from "astro:content";
3+
import Pagination from "../../../components/Pagination.astro";
4+
import PageHero from "../../../components/PageHero.astro";
5+
import SectionIntro from "../../../components/SectionIntro.astro";
6+
import UpdateTimeline from "../../../components/UpdateTimeline.astro";
7+
import { sectionsByKey } from "../../../data/sections";
8+
import { updatesPageHero, updatesPagedSectionIntro, updatesPageSize } from "../../../data/updates";
9+
import MainLayout from "../../../layouts/MainLayout.astro";
10+
import { orderContentEntriesByFile } from "../../../utils/content-order";
11+
12+
export async function getStaticPaths() {
13+
const updates = orderContentEntriesByFile(await getCollection("updates"));
14+
const totalPages = Math.ceil(updates.length / updatesPageSize);
15+
16+
return Array.from({ length: Math.max(0, totalPages - 1) }, (_, index) => {
17+
const currentPage = index + 2;
18+
const start = (currentPage - 1) * updatesPageSize;
19+
const end = start + updatesPageSize;
20+
21+
return {
22+
params: { page: String(currentPage) },
23+
props: {
24+
updates: updates.slice(start, end),
25+
currentPage,
26+
totalPages
27+
}
28+
};
29+
});
30+
}
31+
32+
const { updates, currentPage, totalPages } = Astro.props;
33+
---
34+
35+
<MainLayout
36+
title={`动态第 ${currentPage} 页 | RapidAI`}
37+
description={sectionsByKey.update.pageDescription}
38+
>
39+
<PageHero
40+
eyebrow={updatesPageHero.eyebrow}
41+
title={updatesPageHero.title}
42+
description={updatesPageHero.description}
43+
themeClass="page-hero-update"
44+
panel={updatesPageHero.panel}
45+
/>
46+
47+
<section class="content-section">
48+
<SectionIntro
49+
eyebrow={updatesPagedSectionIntro.eyebrow}
50+
title={updatesPagedSectionIntro.title}
51+
description={updatesPagedSectionIntro.description}
52+
/>
53+
<UpdateTimeline items={updates} />
54+
<Pagination currentPage={currentPage} totalPages={totalPages} baseUrl="/update" />
55+
</section>
56+
</MainLayout>

src/styles/cards.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121

122122
.member-title-row h3 {
123123
margin-bottom: 0;
124-
font-size: 1.15rem;
124+
font-size: 1.08rem;
125125
}
126126

127127
.member-id {
@@ -313,7 +313,7 @@
313313
.stat-card strong {
314314
display: block;
315315
margin-bottom: 0.5rem;
316-
font-size: clamp(2rem, 5vw, 3.25rem);
316+
font-size: clamp(1.7rem, 4.2vw, 2.8rem);
317317
line-height: 1;
318318
}
319319

@@ -349,8 +349,8 @@
349349
.page-hero-panel strong {
350350
display: block;
351351
margin: 1rem 0 0.8rem;
352-
font-size: clamp(1.8rem, 3.4vw, 2.8rem);
353-
line-height: 1.02;
352+
font-size: clamp(1.55rem, 3vw, 2.4rem);
353+
line-height: 1.08;
354354
letter-spacing: -0.04em;
355355
}
356356

0 commit comments

Comments
 (0)