DESIGN.md · git:20260806.bcd3837 · 2026-08-06 · sha256 757c2215ceffd542
DESIGN.md git:20260806.bcd3837A
Immutable. This exact content is served forever at /api/v1/blob/757c2215ceffd542.
# Short Drama Creator Workspace Design ## Status - **Status:** Active - **Last refreshed:** 2026-08-06 - **Primary surface:** `$short-drama dashboard` - **Audience:** writers, directors, and independent short-drama creators ## Product principle Creators work on one page: ```text 项目标题与状态 内容目录 | 当前正文 待办提示与导出提示 ``` The product has one page and one always-visible reading area. It does not provide tabs, pop-up document viewers, an advanced mode, engineering mode, raw-file view, lifecycle panel, or technical report entry. Runtime records and integrity evidence remain system-owned and have no product navigation. ## Goals - Answer within ten seconds: which project, which episode, current work, next action. - Organize work by project, episode, scene, character, and shot instead of files. - Let creators read and edit story content without understanding its storage format. - Keep version choice explicit: saving text never means adopting a creative version. - Explain problems in terms of audience or production impact. - Export production materials by purpose. ## Single-page information architecture ```text 短剧创作台 ├── 当前项目与一句状态说明 ├── 内容目录 │ ├── 全剧 │ └── EP001 │ ├── 故事与剧本 │ ├── 人物场景 │ ├── 分镜画面 │ └── 生成文案 ├── 当前正文(始终可见,打开项目后自动载入) └── 待办提示 / 导出提示 ``` The interface never uses a filesystem tree as navigation. Markdown, structured records, images, and video are rendered as creator-facing documents, cards, or media previews in the permanent reading area. Selecting another item replaces that area in place; it never opens a modal or another page. ### Creator-facing states Use only these creator-facing states: - 待你确认 - 需要修改 - 需要更新 - 已采用 The page shows only a compact plain-language reminder. Until creator-safe action APIs exist, adoption feedback and export requests are handed back to the conversation; the Dashboard must not imitate an action it cannot complete. ## Interaction rules ### Save - Save persists the current edit. - The interface shows saved, saving, unsaved, and conflict states in plain language. - Save does not adopt the content as the chosen creative version. ### Adopt or return - The Dashboard does not pretend that saving adopts a version. - Pending work is read in place; the creator gives the decision in the conversation. - A future action API may shorten this loop, but it must not add a second mode or page. ### Problems Problem cards contain: 1. the scene or shot; 2. the audience or production impact; 3. the intended result; 4. a direct action. Do not display internal severity names, reviewer identities, storage paths, or protocol states. ## Visual language - A calm director's worktable, not an administration dashboard. - Graphite background with warm paper-like content surfaces. - Amber marks the current action; red is reserved for required fixes; green is reserved for creator-confirmed or export-ready content. - System sans-serif for controls and a readable local serif stack for screenplay content. - Use the content rail and paper-like reading area as the defining visual motif. - Avoid metric-card walls, decorative gradients, and code-editor styling. ## Accessibility and responsive behavior - Native buttons, labels, headings, and live status regions. - Visible keyboard focus and Cmd/Ctrl+S support. - No state depends on color alone. - Desktop uses a compact content rail plus one permanent content canvas. - Narrow layouts stack navigation and content with 44px touch targets. - Honor `prefers-reduced-motion`. ## Creator-visible files The target public handoff is: ```text 项目/ ├── 原始资料/ ├── 创作内容/ │ ├── 项目设定/ │ └── 剧集/ │ └── EP001/ │ ├── 剧本.md │ ├── 视觉设定.md │ ├── 分镜.md │ ├── 图片提示词.md │ └── 视频提示词.md └── 导出/ ``` Existing projects remain readable while storage migration is introduced safely. The Dashboard must already present the simplified creator model even when an older project still uses the existing internal layout. ## Implementation constraints - Python standard-library server and vanilla HTML/CSS/JS; no new dependency. - Loopback-only session, Host/Origin validation, path containment, symlink refusal, atomic save, and concurrent-edit protection remain mandatory. - Never inject project HTML into the DOM. - The browser submits creator actions and content identifiers; it does not submit hashes, manifests, or arbitrary output paths. - Every server action needs unit and HTTP coverage. - Every visual change needs desktop and narrow-layout inspection. ## Delivery sequence 1. Replace the file console with the single creator workspace. 2. Add creator-safe adopt, return, problem, and export actions. 3. Introduce logical content identifiers independent of storage paths. 4. Migrate new projects to the simplified public directory and keep old projects readable.