Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions _news/announcement_11.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
layout: post
date: 2026-10-14
inline: true
related_posts: false
---

OneAI is now also used at Zhixin School and Daoyuan School, both affiliated to The Chinese University of Hong Kong, Shenzhen. It is now in use at four schools in Guangzhou and Shenzhen; see [where it is used](/products/#oneai).
36 changes: 30 additions & 6 deletions src/data/oneai.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,42 @@
/**
* Where OneAI is used. The homepage, the products page, and the news item
* describe the same deployment, so the school names and subjects live here.
* Where OneAI is used. The homepage, the products page, and the news items
* describe the same deployments, so the school names and subjects live here.
*/
export const oneaiSubjects = 'mathematics, physics, chemistry, biology, and informatics';

export const oneaiSchools = [
type School = {
name: string;
localName: string;
href?: string;
olympiad: boolean;
};

export const oneaiSchools: School[] = [
{
name: 'The Affiliated High School of South China Normal University',
localName: '华南师大附中',
localName: '华南师范大学附属中学',
href: 'https://www.hsfz.net.cn/',
olympiad: true,
},
{
name: 'Guangzhou University Affiliated Middle School',
localName: '广大附中',
localName: '广州大学附属中学',
href: 'https://www.gdfz.edu.cn/',
olympiad: true,
},
{
name: 'Zhixin School Affiliated to The Chinese University of Hong Kong, Shenzhen',
localName: '深圳市龙岗区香港中文大学(深圳)附属知新学校',
olympiad: false,
},
] as const;
{
name: 'Daoyuan School Affiliated to The Chinese University of Hong Kong, Shenzhen',
localName: '深圳市龙岗区香港中文大学(深圳)附属道远学校',
olympiad: false,
},
];

const numberWords = ['no', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
export const oneaiSchoolCount = numberWords[oneaiSchools.length] ?? String(oneaiSchools.length);

export const oneaiOlympiadSchools = oneaiSchools.filter((school) => school.olympiad);
7 changes: 4 additions & 3 deletions src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import Base from '../layouts/Base.astro';
import ResearchMap from '../components/ResearchMap.astro';
import { site } from '../data/site';
import { oneaiSchools, oneaiSubjects } from '../data/oneai';
import { oneaiOlympiadSchools, oneaiSchoolCount, oneaiSubjects } from '../data/oneai';
import { pacificProducts } from '../data/pacific';
import { formatDate, getWriting } from '../lib/writing';
import { news } from '../lib/legacy';
Expand Down Expand Up @@ -93,9 +93,10 @@ const latest = [
Teachers stay in the decision seat; AI handles the first pass.
</p>
<p class="feature-use">
In use for olympiad training in {oneaiSubjects} at{' '}
In use at {oneaiSchoolCount} schools in Guangzhou and Shenzhen, including olympiad training
in {oneaiSubjects} at{' '}
{
oneaiSchools.map((school, index) => (
oneaiOlympiadSchools.map((school, index) => (
<>
{index > 0 && ' and '}
<a href={school.href}>{school.name}</a>
Expand Down
18 changes: 15 additions & 3 deletions src/pages/products.astro
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
import Base from '../layouts/Base.astro';
import { pacificProducts } from '../data/pacific';
import { oneaiSchools, oneaiSubjects } from '../data/oneai';
import { oneaiSchoolCount, oneaiSchools, oneaiSubjects } from '../data/oneai';
---

<Base
Expand Down Expand Up @@ -47,13 +47,17 @@ import { oneaiSchools, oneaiSubjects } from '../data/oneai';
</p>
<div class="oneai-in-use">
<p class="products-kicker">In use</p>
<p>Olympiad training in {oneaiSubjects} at:</p>
<p>
At {oneaiSchoolCount} schools in Guangzhou and Shenzhen. Olympiad training covers
{' ' + oneaiSubjects}.
</p>
<ul>
{
oneaiSchools.map((school) => (
<li>
<a href={school.href}>{school.name}</a>
{school.href ? <a href={school.href}>{school.name}</a> : school.name}
<span lang="zh-Hans">{school.localName}</span>
{school.olympiad && <span class="oneai-use-tag">Olympiad training</span>}
</li>
))
}
Expand Down Expand Up @@ -320,6 +324,14 @@ import { oneaiSchools, oneaiSubjects } from '../data/oneai';
color: var(--product-muted);
font-size: 14px;
}
.oneai-in-use li .oneai-use-tag {
color: var(--product-blue);
font-size: 13px;
}
.oneai-in-use li + li {
padding-top: 8px;
border-top: 1px solid var(--product-line);
}
.product-capabilities {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
Expand Down
Loading