docs(integration): promote Learning project catalog

This commit is contained in:
2026-08-20 00:17:42 +08:00
parent d967b0f6bf
commit a5fc8bf596
14 changed files with 114 additions and 115 deletions

View File

@@ -0,0 +1,44 @@
# ADR-005: Learning Uses A Curated Project Catalog
## Status
Accepted and implemented on 2026-08-20.
## Context
The integrated Learning module previously implemented course generation, an account-partitioned local course library, OpenMAIC playback, and Agent/ASR/classroom runtime bridges. The product direction changed to a simpler operations-curated catalog where users inspect a project's README and save its ZIP to their computer. Keeping the old runtime hidden would preserve substantial packaging, security, and maintenance cost without serving the new workflow.
## Decision
- Keep the existing authenticated Learning entry and `module_access.learning` policy.
- Replace the old course model completely with a server-driven project list and README detail page; do not retain a compatibility API or local-course read path.
- Works Square operations owns project name, cover, summary, tags, version, ordering, publication state, Markdown, ZIP, immutable size, and SHA-256 metadata.
- Publish-time processing mirrors acceptable remote HTTPS raster images and rewrites README image references to fixed project-media paths. Renderer disables raw Markdown HTML; Main fetches controlled media with authentication, MIME validation, and a 10 MiB limit.
- Electron Main owns Works credentials, the native save dialog, archive request, redirect/origin policy, temporary file, 512 MiB limit, declared size, SHA-256, ZIP signature, and atomic final rename. Renderer receives only bounded project DTOs, media data, and `saved` or `cancelled`.
- Remove course generation, progress, local library, OpenMAIC player, Agent, ASR, classroom runtime, Learning IPC channels, player packaging resources, and their tests.
- Do not automatically delete historical downloaded course data. The new client never reads or migrates it.
## Consequences
- The desktop client and package are substantially smaller and no longer depend on a production Stage player artifact.
- The external Works Square operations/admin/API contract must be implemented and deployed before the new client can provide real catalog data.
- Remote README images depend on successful publish-time mirroring; unsupported or failed images remain local display failures rather than arbitrary privileged network requests.
- A future historical-data cleanup must be an explicit, user-controlled maintenance feature.
## Supersedes
- The Learning course-generation, local-course, OpenMAIC playback, and classroom-runtime behavior introduced by integrated source `01bee31`.
## Evidence
- Product confirmation task: `20260819-ai-learning-project-catalog-8f3c2a91`
- Source task: `20260819-learning-project-catalog-impl-4e9c71a2`
- Source commit: `38db158`
- Integration merge: `d967b0f`
## Related
- `docs/learning-project-catalog-server-contract.md`
- `.project-docs/20-architecture/system-overview.md`
- `.project-docs/20-architecture/data-flow.md`
- `.project-docs/40-domain/business-rules.md`

View File

@@ -8,6 +8,7 @@
| ADR-002 | Robot V1 采用 Main 门控的引导式热点配网并衔接现有六位 Binding | Accepted / implemented, default on | 2026-08-16 | Robot Renderer、Host API、Electron Main、现有固件热点入口 | `adr-002-robot-guided-hotspot-binding-v1.md` |
| ADR-003 | Robot 配网页内扫描并连接 Windows/macOS 热点 | Accepted / implemented with physical release gates pending | 2026-08-16 | Robot Renderer、Host API、Electron Main、Windows WLAN、macOS CoreWLAN/CoreLocation | `adr-003-robot-in-app-hotspot-connection.md` |
| ADR-004 | Works Square 统一拥有桌面认证生命周期边界 | Accepted / implemented | 2026-08-19 | Renderer、Host API、Electron Main、Works Square auth facade | `adr-004-square-auth-lifecycle-boundary.md` |
| ADR-005 | Learning 采用运营精选项目目录并退役课程运行时 | Accepted / implemented | 2026-08-20 | Learning Renderer、Host API、Electron Main、Works Square operations/API | `adr-005-learning-project-catalog.md` |
## Superseded Decisions