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
200 changes: 93 additions & 107 deletions README.md

Large diffs are not rendered by default.

65 changes: 36 additions & 29 deletions doc/00-项目总纲.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 星序 Astra — 项目总纲

> **文档梗概**:项目定位、当前交付和必要文档入口。
> **文档梗概**:项目定位、当前作品、两类学习入口与文档职责。
>
> **具体规划法则**:实现、规划和历史分别由 01、02、03 维护;代码定义的字段以代码为准,旧记录通过 Git 追溯。
> **具体规划法则**:实现、规划和历史分别由 01、02、03 维护;对象字段与运行行为以代码为准。介绍性内容从 README 进入,操作步骤与证据不在总纲重复。
>
> **最后一次更新时间**:2026-09-16
> **最后一次更新时间**:2026-09-18
>
> **更新者**:主开发组

Expand All @@ -17,42 +17,49 @@

## 1. 项目定位

星序是一站式可交互学习平台,将实验探索与教学管理结合。Web 体验与后端架构同等重要:前者支持学习、设计和展示,后者承接课程、协作、评价及可解释记录。
星序是一站式可交互学习平台,将实验探索、课程组织和学习评价结合。学生通过改变参数、比较现象、追踪程序或完成场景任务理解知识;教师组织资源与授课过程,保留提交、反馈和评价依据。Web 体验与后端业务共同构成作品。

当前面向单校 Web、本机毕业设计和竞赛展示,先完善课程广度、递进、适配和解释性。微信小程序、跨校平台、AI 助教和公网长期运营仍属后续方向。
当前有学术教育和职业教育两类入口。学术主站围绕学科实验、编程活动与校内课程展开;职教子站围绕融媒体岗位组织采访、核实、授权和作品表达。两站已有入口跳转与联合启动,账号、课程和成绩分别管理。

本阶段面向 Web、本机毕业设计与竞赛展示。学术主站采用单校课程权限,职教动态站使用本地教学演示身份;跨校平台、正式职业身份接入、公网长期运营和真实课堂效果另有实施与验证范围。

## 2. 当前作品

| 部分 | 当前事实 |
| --- | --- |
| 正式门户 | `qianduan/`:星云开场、透视课程轮盘和学生/教师/管理员页面 |
| 学习资源 | 工科 90、代码 18、未来 19,共 127 个活动身份;不等于 127 门完整独立课程 |
| 教学后端 | FastAPI:身份、组织、资源模板、独立课程与共享草稿、同步候选审核、冻结发布、选课、作业、批改与记录 |
| 本机版本 | `astra-local.ps1` 在 9001 同源提供真实前端、API 和 SQLite |
| 静态展示 | [GitHub Pages](https://falling-feather.github.io/Astra/) 使用明确标识的内存演示数据 |
| Git | `main` 为完整源码;`qianduan` 为静态制品,仅保留根工作树 |
| 下一阶段 | 学习版本绑定、换版补做、成绩历史与旧结果认定、统计/任务及课程统一改进,详见 02 |
| 部分 | 当前内容 | 维护入口 |
| --- | --- | --- |
| 学术门户 | 星云开场、教育方向、课程轮盘和学生/教师/管理员页面;TypeScript、Vite、原生 DOM 与 Three.js | `qianduan/`;01 第 5 章 |
| 学科学习资源 | 工科 90、代码 18、未来 19,共 127 个活动身份;支持按真实能力引用和配置 | `pages/`、`shared/`、`codevis/`;15 号指南 |
| 教学业务 | 身份与组织、资源模板、独立课程、共享草稿、同步候选审核、冻结发布、选课、作业与批改 | `backend/`;01 第 6 章 |
| 学习历史 | 学习上下文、检查点、历次作业与评分、结果认定;部分实验已声明参数记录能力 | 01 第 6.5—6.6 节;当前回归与未完成入口见 02 |
| 职教实训 | 5 门融媒体课程、3 个区域;场景、人物、资料、笔记、作品、过程评价和教师复核 | `zhijiao/apps/`、`zhijiao/packages/`;01 第 2 章 |
| 可选模型 | 主站 AI 助教;职教模型网关、人物交互与课程证据检索,按配置启用 | 04 第 9 章 |
| 运行交付 | 主站 9001 同源服务;职教独立动态站;两站可联合启动。主站另有 Pages 静态演示 | 04 部署指南 |

127 项统计只包含三个原学习空间的活动身份,不包括职教课程、教师派生课程或模板版本。活动可自由探索,也可进入具体课程;来源相同不意味着共享成员、发布或完成结果。

数据分别保存在两套服务中:主站默认使用 SQLite,也有 MySQL 连接支持;职教以 PGlite 保存内容与证据关系,并通过文件记录部分会话、世界状态和作品。数据库模型、表数及代码层级见 [01 系统全局架构](01-开发者手册.md#2-系统全局架构),实际数据位置见 [04](04-部署指南.md)。

基础教学流程已完成 2026-09-08 验收;2026-09-16 新增课程创作、同步审核与冻结发布的开发实现和本机联调。测试计数与发布提交只在 03 保存,不把历史通过结果当成今天的复测。
基础教学流程的 2026-09-08 验收、后续课程版本开发与 2026-09-18 职教迁入分别记录在 [03](03-发布历史.md)。当前代码存在后续改动和待处理问题,历史测试计数不作为当前全量通过证明。

## 3. 文档入口

| 文档 | 唯一职责 |
| 文档 | 职责 |
| --- | --- |
| [01 开发者手册](01-开发者手册.md) | 当前架构、页面、业务边界和代码入口;第 13 章保留待实现目标图 |
| [02 更新规划](02-更新规划.md) | 完整业务方案、当前/后续任务、依赖与验收标准 |
| [03 发布历史](03-发布历史.md) | 实际提交、阶段验收、方向撤换和旧材料的 Git 恢复方式 |
| [04 部署指南](04-部署指南.md) | 当前本机运行、构建、数据目录、演示发布及生产边界 |
| [05 UI 规范](05-UI规范模板.md) | 正式门户与实验的视觉、交互和可访问性约定 |
| [15 实验开发指南](01-子文档/15-学科实验与内容开发指南.md) | 新实验注册流程与现有三项模型的科学依据、误差和复核记录 |
| [README](../README.md) | 面向首次访问者介绍作品、体验方式、技术亮点与启动入口 |
| [01 开发者手册](01-开发者手册.md) | 当前架构、业务、数据和代码入口;第 13 章对照完整目标与实际进度 |
| [02 更新规划](02-更新规划.md) | 完整业务方案、任务状态、依赖和验收条件 |
| [03 发布历史](03-发布历史.md) | 实际提交、验证范围、暂停节点和历史恢复依据 |
| [04 部署指南](04-部署指南.md) | 两站运行、环境、数据目录、可选模型与发布 |
| [05 UI 规范](05-UI规范模板.md) | 学术门户、职教场景及实验交互的视觉约定 |
| [15 实验开发指南](01-子文档/15-学科实验与内容开发指南.md) | 活动注册与记录接线、科学模型、误差和复核样例 |

本文件是总入口。组件目录内 README 只保留各自运行和维护说明;许可证、第三方来源记录、机器契约与有效测试不作为旧报告删除。
各组件 README 保留本目录的开发与维护说明,不另建平行的产品规划或阶段历史。

## 4. 开发与交付边界

- 角色、授权、发布和完成结果由服务端决定。自由探索不直接产生授课成绩。
- 课程家族、跨课程同步与候选正文审核已实现并完成阶段联调;跨版本学习结果和统一统计继续推进。
- 以根工作区 main 单线推进,任务先登记于 02;不因扩展方向讨论自动开工。
- 用户未提交文件、数据库和有效依赖保留;本次未修改 `UI.pen` 或应用已有 stash。
- 协作规则见 [AGENTS.md](../AGENTS.md)。旧模型的冻结阶段、旧写入清单和过期报告不重新成为当前约束。
- 文档整理前的完整材料保存在 `e73cfa7` 对应 Git 树中;恢复入口见 [03](03-发布历史.md#3-旧材料的git追溯)。
- 学术主站的角色、发布和正式完成结果由 FastAPI 决定;职教业务由独立 Fastify 服务及世界规则处理。入口相通不表示两站已统一身份和数据。
- 课程家族、同步候选、冻结发布、检查点和作业版本历史已有实现;实验记录能力、页面接线及后续统一查询按 01、02 逐项说明。
- 模型接口与资料检索按配置和课程启用。主站助教回答不产生教师评分,职教模型建议经过规则校验;公开导览的预设访谈单独标明。
- 2026-09-17 的学术持续开发任务保持暂停;之后的独立入口改动和职教迁入按实际提交记录。本次 README 与文档更新不恢复整个研发目标。
- `main` 保存源码,`qianduan` 保存学术静态制品。源码、构建、推送和线上发布分别记录,不为普通文档维护新增产品发布号。
- 协作约定见 [AGENTS.md](../AGENTS.md)。旧材料、暂停时的本机证据和未完成验证按 [03](03-发布历史.md) 追溯,保留用户已有数据和修改。
37 changes: 32 additions & 5 deletions doc/01-子文档/15-学科实验与内容开发指南.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# 星序 Astra — 学科实验与内容开发指南

> **文档梗概**:保留新增实验的实际注册步骤、运行边界和三项现有科学模型说明。
> **文档梗概**:新增实验的注册步骤、课程资源与操作记录接线、运行边界和三项现有科学模型说明。
>
> **具体规划法则**:该文档隶属于[01 学习资源与实验维护](../01-开发者手册.md#4-三个学习空间与课程内容)。目录、字段和运行时以代码为准;模型的公式、误差、样例与来源在本文维护。
>
> **最后一次更新时间**:2026-09-16
> **最后一次更新时间**:2026-09-18
>
> **更新者**:主开发组

Expand All @@ -23,20 +23,25 @@
| 未来星系 19 个活动身份 | [frontier-manifest.js](../../pages/frontier/frontier-manifest.js) |
| 统一活动身份与恢复入口 | [learning-activity-catalog.js](../../shared/js/learning-activity-catalog.js) |
| 后端受控活动引用 | [official_activity_keys.py](../../backend/app/schemas/official_activity_keys.py)、[content_v2.py](../../backend/app/schemas/content_v2.py) |
| 学习空间与系统资源版本 | [learning-spaces.v1.json](../../backend/app/catalogue/learning-spaces.v1.json)、[learning_resources.py](../../backend/app/services/learning_resources.py) |
| 模板配置与资源能力更新 | [templates.v1.json](../../backend/app/catalogue/templates.v1.json)、[resource-updates.v1.json](../../backend/app/catalogue/resource-updates.v1.json) |
| 课程学习上下文与参数记录 | [LearningWorkspace](../../qianduan/src/portal/learning-workspace.ts)、[CoursePlayer](../../qianduan/src/portal/course-player.ts)、[ActivitySession](../../qianduan/src/domain/activity-session.ts) |
| 新实验模板与质量规则 | [tools/templates/new-experiment](../../tools/templates/new-experiment/) |
| 正式门户目录与打包 | [catalog.mjs](../../qianduan/scripts/catalog.mjs)、[package-resources.mjs](../../qianduan/scripts/package-resources.mjs) |

资源身份、课程实例和课程内单元分别计数。不能把不同 slug、复制页面或改标题直接算成新的独立实验。同一资源在不同授课情境中的复用与独立学习记录见 [02](../02-更新规划.md)。
三空间合计 127 个活动身份。资源身份、资源版本、课程实例和课程内单元分别计数;可配置模板、教师派生课程与职教情境课程不混入这一历史数量。不能把不同 slug、复制页面或改标题直接算成新的独立实验。同一资源在不同授课情境中的复用与独立学习记录见 [02](../02-更新规划.md)。

`zhijiao/` 的课程档案、岗位现场、人物交流和作品评价由独立 Web 与 API 承接,不经本节的实验目录打包。其当前结构与业务边界见 [01](../01-开发者手册.md);本文继续维护原学科学习空间的实验注册和科学模型。

## 2. 新增实验与验证

### 2.1 注册流程

1. 在 02 明确学习目标、必要前置、交互、解释、科学边界与验收;核对现有身份、模型和路由,避免同义扩数。
2. 使用现有模板建立独立 module、JS、CSS、候选 manifest 与预览记录。模型说明写入本文,不放进公开实验页面的开发说明文件。
3. manifest 固定 `activity_key`、路由、owner、版本化资源、模型锚点与预览来源;代码占位全部替换后才能交付。只登记实际支持的记录能力。
3. manifest 固定 `activity_key`、路由、owner、版本化资源、模型锚点与预览来源;代码占位全部替换后才能交付。资源版本中的配置、`operation_recording`、完成方式和运行适配说明只登记实际能力;已有不可变版本通过追加新版本更新。
4. 先在候选隔离页验证参数变化、暂停/重置、尺寸变化、减少动态效果、离页释放和重新进入;通过前不插入生产目录。
5. 复核模型说明和预览素材,再接入 config、registry、页面与活动目录。后端引用白名单和门户目录要对应同一稳定身份。
5. 复核模型说明和预览素材,再接入 config、registry、页面与活动目录。后端引用白名单、系统资源描述与门户目录要对应同一稳定身份;支持课程操作记录时,完成下方第 2.4 节的发布绑定与回读验证。
6. 执行受影响行为回归与旧活动保护检查;已授权变更更新适用回归,不能用替换哈希掩盖意外变化。
7. 接线完成后移除只供候选发现的 manifest,保留可读 module、模型和素材来源记录;最终目录不再把已发布资源当成未注册候选。

Expand Down Expand Up @@ -67,6 +72,28 @@

原模板的桌面、手机和 reduced-motion 行为检查继续有效;当前门户桌面优先不意味着删除实验已有的响应式回归。操作、失败、离页、重入和资源释放需真实验证,不能只看截图。

### 2.4 课程资源与操作记录接线

资源版本保存运行入口、允许配置和记录能力;同一实验是否计入某门课程,还取决于实际学习上下文、发布版完成规则与服务端回执。系统自主探索、教师预览和正式授课学习分别建模,打开页面或调动任意控件不直接产生课程完成。

| 资源与入口 | 当前接线与边界 |
| --- | --- |
| 可配置函数图像 v2 | 在课程正文内运行,通过 [CoursePlayer](../../qianduan/src/portal/course-player.ts) 与 [ActivitySession](../../qianduan/src/domain/activity-session.ts) 记录发布版声明的参数变化;结果是否认定完成由服务端规则决定 |
| 数据图表模板 | 支持受控配置与预览,当前资源未声明操作记录能力;课程完成使用实际配置的检查点或作业要求 |
| 原力学实验 `physics.mechanics` v2/v3 | 资源声明支持参数记录,但课程入口改为整页导航后,播放器跳过 legacy 的记录会话,实验端尚未读取传入的学习上下文;当前无法据这条入口确认课程参数记录与操作完成 |
| 其他原活动与公开资源预览 | 逐资源核对能力;公开预览不产生授课成绩,不能因同属 legacy 或位于目录中就宣称已有自动记录 |

原力学入口的具体差异可对照 [resource-updates.v1.json](../../backend/app/catalogue/resource-updates.v1.json) 与 [course-player.ts](../../qianduan/src/portal/course-player.ts):前者保留 `numeric-controls-v1` 能力,后者仅为非 legacy 资源建立记录会话,整页地址附带 `astra_context_key` 和返回位置。当前公开实验包未接收这两个参数,打包入口见 [package-resources.mjs](../../qianduan/scripts/package-resources.mjs)。实验画面与控件仍可使用;本项回归限定为正式课程中原力学参数记录的接线,不表示所有原实验失效。修复与复验安排见 [02 第 3 节](../02-更新规划.md#3-当前任务状态)。

支持操作记录的资源按以下步骤验收:

1. 学生进入课程单元时,以所见发布 ID 建立正式学习上下文;记录请求固定课程、单元、发布版本与允许的控件。
2. 改变一个已声明参数,核对实际运行事件、原请求编号和服务端回执;发送失败时保留同一请求重试,不把失败显示为已保存。
3. 回读该学生的学习记录与当前完成状态,分别核对操作事实、完成规则和旧结果认定;导航成功或 URL 带有上下文不能替代这一步。
4. 验证换版、开放条件变化、撤权、离页和重新进入;未经确认的记录不得静默丢弃,探索与预览不得写入正式课程结果。

原活动标记 `legacy-compatibility` 时,仅承诺其已实现的兼容入口与记录范围;资源配置版本不等于全部运行字节、运动状态或历史画面都可复现。验收结论分别记录导航、科学模型、操作事实和完成结果,具体日期与证据由 [03](../03-发布历史.md) 保存。

## 3. 科学模型说明

以下三段保留已经复核的公式、数据、限制与来源。本轮仅整理外围目录与指南,模型记录原文未改。
Expand Down
Loading
Loading