Files
NextEdu/src/app/(auth)/terms/page.tsx
SpecialX 3b6272c99d feat: 完成 P1 全部功能 + 修复 proxy 导出 + 切换 MySQL 端口至 14013
## P1 功能(20 项)
- 站内消息系统、家长仪表盘、学生考勤管理
- Excel 导入导出、用户批量导入、成绩导出
- 排课规则+自动排课+课表调整
- 成绩趋势+对比分析、密码安全策略、速率限制
- 数据变更日志、文件预览+存储策略、全文检索
- 依赖审计集成 CI、数据库定时备份、E2E 测试完善
- 通知偏好管理

## 基础设施修复
- src/proxy.ts: 将 middleware 导出重命名为 proxy(Next.js 16 要求)
- .env: MySQL 端口从 13002 切换至 14013
- scripts/create-db.ts: 新增数据库初始化脚本

## 架构文档同步
- 004_architecture_impact_map.md 和 005_architecture_data.json
  完整记录所有新增表、模块、路由、权限、依赖关系
2026-06-17 13:44:37 +08:00

117 lines
5.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { Metadata } from "next"
import Link from "next/link"
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle,
} from "@/shared/components/ui/card"
export const metadata: Metadata = {
title: "用户协议 - Next_Edu",
description: "Next_Edu 用户服务协议",
}
const SECTION_CLASS = "space-y-2"
const HEADING_CLASS = "text-base font-semibold text-foreground"
const TEXT_CLASS = "text-sm leading-relaxed text-muted-foreground"
const LIST_CLASS = "ml-4 list-disc space-y-1 text-sm leading-relaxed text-muted-foreground"
export default function TermsPage() {
return (
<div className="mx-auto w-full max-w-3xl space-y-6 py-8">
<div className="space-y-2 text-center">
<h1 className="text-2xl font-semibold tracking-tight"></h1>
<p className="text-sm text-muted-foreground">
2026 6 16
</p>
</div>
<Card>
<CardHeader>
<CardTitle></CardTitle>
<CardDescription>
使 Next_Edu 使
</CardDescription>
</CardHeader>
<CardContent className="space-y-6">
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<p className={TEXT_CLASS}>
K12 AI
</p>
</section>
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<ul className={LIST_CLASS}>
<li>使</li>
<li></li>
<li></li>
<li></li>
</ul>
</section>
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<ul className={LIST_CLASS}>
<li></li>
<li></li>
<li>访使</li>
<li></li>
<li>使</li>
</ul>
</section>
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<ul className={LIST_CLASS}>
<li></li>
<li></li>
<li></li>
</ul>
</section>
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<ul className={LIST_CLASS}>
<li></li>
<li>AI 使</li>
<li></li>
<li></li>
</ul>
</section>
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<ul className={LIST_CLASS}>
<li></li>
<li></li>
<li></li>
</ul>
</section>
<section className={SECTION_CLASS}>
<h2 className={HEADING_CLASS}></h2>
<ul className={LIST_CLASS}>
<li></li>
<li></li>
</ul>
</section>
<div className="border-t pt-4 text-center">
<Link
href="/register"
className="text-sm font-medium text-primary underline underline-offset-4 hover:opacity-80"
>
</Link>
</div>
</CardContent>
</Card>
</div>
)
}