184 lines
21 KiB
Plaintext
184 lines
21 KiB
Plaintext
---
|
||
title: 代码功能地图
|
||
description: 从产品功能快速定位主要代码入口
|
||
---
|
||
|
||
# 代码功能地图
|
||
|
||
## 自定义更新公告
|
||
|
||
- 后台编辑:`web/src/pages/admin/settings/components/update-announcement-editor.tsx`;版本、排序与草稿校验:`web/src/lib/update-announcement.ts`。
|
||
- 统一入口与弹窗:`web/src/components/layout/app-changelog-modal.tsx`、`app-changelog-dialog.tsx`;图文视频展示:`update-announcement-content.tsx`。
|
||
- 服务端持久化、校验、公开投影及媒体访问:`backend/internal/app/appearance_updates.go` 与 `appearance.go`;HTTP 边界:`backend/internal/handler/appearance.go`。
|
||
|
||
## 画布 Agent 配置与 Live2D
|
||
|
||
- 后台入口:`web/src/pages/admin/settings/appearance-settings-page.tsx` 与 `components/canvas-appearance-editor.tsx`。
|
||
- 公共配置及文案:`web/src/stores/use-appearance-store.ts`、`web/src/lib/canvas/agent-appearance.ts`。
|
||
- 画布形象:`web/src/components/canvas/live2d-avatar.tsx`、`canvas-cloud-agent-panel.tsx`;受限资源加载:`web/src/services/live2d-loader.ts`。
|
||
- 服务端:`backend/internal/app/appearance_canvas.go` 校验配置,`appearance_live2d.go` 验证 ZIP、导入及资源访问;`backend/internal/handler/appearance_live2d.go` 为 HTTP 边界。已有外观设置和资源引用链路负责持久化及删除保护。
|
||
|
||
这是一张入口地图,不罗列所有文件。先找到功能所属层,再沿调用关系阅读。
|
||
|
||
## 前端页面
|
||
|
||
云端 Agent:`web/src/components/canvas/canvas-cloud-agent-panel.tsx` 协调对话、Skills 和审批,`canvas-cloud-agent-settings.tsx` 编辑长期偏好与个人记忆,`services/api/agent.ts` 适配运行快照与事件流;画布手工编辑与引用同步共用 `web/src/lib/canvas/canvas-node-prompt.ts`,已有媒体结果只更新 `composerContent` 草稿,不覆盖生成结果和已提交提示词。后端 `handler/agent.go` 负责 HTTP 合同,`app/cloud_agent.go` 负责权限、幂等、可信历史,`app/cloud_agent_profile.go` / `repository/agent_profile.go` 管理用户、项目、画布偏好及 revision CAS,`app/cloud_agent_lessons.go` / `app/cloud_agent_memory_compact.go` / `repository/agent_lesson.go` / `handler/agent_lesson.go` 管理用户私有记忆的写入脱敏、召回注入、用户自审批与压缩优化,`web/src/pages/settings/agent-memory-pane.tsx` 是用户批准/添加/导入导出/压缩入口,`web/src/pages/admin/components/agent-lessons-panel.tsx` 是管理员按用户查看入口,`internal/prompts/agent-*-policy.md` 是随发布物编译、并在文档头声明 ID/版本的行为资源,`app/cloud_agent_policy.go` 编译本轮策略快照,`internal/canvas/capability/` 注册服务端节点能力和字段映射,`app/cloud_agent_canvas_state.go` 投影画布摘要和精读,`app/cloud_agent_runtime.go` / `app/cloud_agent_pi_coordinator.go` 负责可恢复编排,原生 Pi runtime 协议适配位于 `internal/agent/runtime/` 与 `agent-runtime/pi/agent-runtime.mjs`;`cloud_agent_pi_sessions` 独立保存原生 JSONL 会话,控制检查点仍由 Go 管理。工具根据能力定义生成 schema,并从固定技能快照渐进读取 `SKILL.md` / reference;`app/cloud_agent_media.go` 负责收费媒体任务适配,`app/task_creation.go` 执行预算 admission,运行沿用任务 Worker。节点新增需要能力描述符和真实画布实现;新生成模式还需任务适配器,不由偏好或技能 md 授权。协议见 HTTP API 专题,未确认的真实登录态与上游联调见待测试清单。
|
||
|
||
| 功能 | 页面入口 | 主要协作模块 |
|
||
| --- | --- | --- |
|
||
| 首页与导航 | `web/src/pages/home/`、`web/src/layouts/user-layout.tsx` | `components/layout/workspace-sidebar-nav.tsx`、`workspace-sidebar-checkin.tsx`、`workspace-sidebar-storage-meter.tsx`、`router.tsx` |
|
||
| 创作工作台 | `web/src/pages/create/index.tsx` | `creation-workspace.tsx`、`creation-conversations.ts`、`creation-types.ts`、`creation-assets.ts`、`creation-references.ts` |
|
||
| 登录注册 | `web/src/pages/auth/` | `stores/use-user-store.ts`、`services/api/auth.ts`、后端 `internal/auth/` |
|
||
| 积分与计费 | `web/src/components/layout/workspace-wallet-modal.tsx`、`pages/admin/components/platform-finance-panel.tsx` | `services/api/wallet.ts`、`services/api/payments.ts`、后端 `internal/app/finance.go`、`internal/app/payment.go`、`payment-plugins/`、`plugin-packages/official-payment-*` |
|
||
| 视频 Token 报价与结算 | `web/src/pages/admin/components/channel-model-price-tier-fields.tsx`、`web/src/components/model-picker.tsx` | `lib/model-pricing.ts`、`services/api/logical-models.ts`;后端 `app/video_token_billing.go` 管像素与时长估算,`app/logical_model_quote.go` 复用准入与价格规则,`app/analytics.go` 提取可信用量,`repository/finance.go` 按订单快照退补差额 |
|
||
| 任务中心 | `web/src/pages/tasks/` | `services/api/task-center.ts`、`services/api/task-text-stream.ts` |
|
||
| 产品模型与渠道选择 | `web/src/components/model-picker.tsx`、`pages/admin/components/channel-model-editor.tsx` | `lib/model-picker-groups.ts` 只构建跨渠道展示分组;`lib/user-session.ts` 透传渠道展示名;`components/model-logo.tsx` 按需加载原色图标;后端 `app/channel_models.go` 校验写入,`app/model_catalog.go` 发布目录,schema v24 增加 `channel_label` |
|
||
| 系统渠道规格利润率与批量调价 | `web/src/pages/admin/components/channel-model-manager.tsx`、`channel-model-reprice-dialog.tsx` | 弹窗按模型分组展示多规格、重新计算与逐项编辑;`channel-model-cost-summary.tsx` 展示价格,`channel-model-pricing.ts` 精确四舍五入并组装最终售价;后端 `handler/finance.go` 接收批量请求,`app/channel_model_pricing.go` 校验权限、最终价格及快照版本,`repository/channel_model_pricing.go` 事务保存及版本冲突检测 |
|
||
| 我的素材 | `web/src/pages/assets/` | `stores/use-asset-store.ts`、`services/image-storage.ts` |
|
||
| 技能库 | `web/src/pages/skills/` | `services/api/skills.ts`、`services/skill-runtime.ts`、`components/skills/skill-runtime-picker.tsx` |
|
||
| 画布列表 | `web/src/pages/canvas/index.tsx` | `stores/canvas/use-canvas-store.ts` |
|
||
| 画布编辑器 | `web/src/pages/canvas/project.tsx` | `pages/canvas/canvas-project-*`、`pages/canvas/use-canvas-*`、`components/canvas/`、`lib/canvas/`、`stores/canvas/` |
|
||
| 公开分享 | `web/src/pages/canvas/shared.tsx` | `components/canvas/canvas-viewport.tsx`、`services/api/canvas-share.ts` |
|
||
| 管理后台 | `web/src/pages/admin/`、`router.tsx` | `admin-context.tsx`、`users/`、`channels/`、`logs/`、`storyboard-prompts/`、`settings/`、`components/agent-lessons-panel.tsx` |
|
||
| 支付 CSV 导出 | `web/src/pages/admin/payments/payments-page.tsx` | `services/api/payments.ts`、`AdminExportButton`;后端 `handler/payment_export.go`、`app/payment_export.go`、`repository/payment_export.go`(共享筛选、只读快照) |
|
||
|
||
## AI 拆图工作流
|
||
|
||
- 配置入口:`web/src/components/canvas/canvas-node-layer-decomposition-dialog.tsx`;编排、并行生成与重试:`web/src/pages/canvas/use-canvas-media-tools.ts`、`use-canvas-generation-retry.ts`。
|
||
- 规划与策略:`web/src/lib/canvas/canvas-image-layer-plan.ts`、`canvas-image-layer-strategy.ts`;原图、规划请求、提取与合成:`web/src/services/canvas-image-layer-*.ts`。
|
||
- 图层组和素材保存:`web/src/pages/canvas/use-canvas-image-layer-groups.ts`、`use-canvas-image-layer-materials.ts`;任务恢复与复制规则:`web/src/lib/canvas/canvas-generation-task-sync.ts`、`canvas-node-copy.ts`。
|
||
- 看图资源归属及实际像素:`backend/internal/app/provider_media_hydration.go`;透明 PNG 参数:`plugin-packages/image-tools/manifest.json`。
|
||
|
||
## 画布核心
|
||
|
||
云端 Agent 的提示词维护边界见[画布 Agent 提示词与用户意图](/docs/backend/agent-prompt-policy):行为策略在版本化 md,动态事实由 `cloud_agent_policy.go` 编译,运行状态消息由 `cloud_agent_prompt_context.go` 统一编码;`cloud_agent_anchor.go` 不再推断用户授权或锁定首轮目标。
|
||
|
||
| 职责 | 代码位置 |
|
||
| --- | --- |
|
||
| 页面装配和跨域动作协调 | `web/src/pages/canvas/project.tsx` |
|
||
| 画布领域规则和生成协议 | `web/src/lib/canvas/canvas-project-domain.ts`、`canvas-project-generation.ts`、`produced-model.ts` |
|
||
| 项目恢复、持久化和项目级动作 | `web/src/pages/canvas/use-canvas-project-lifecycle.ts` |
|
||
| 云端版本校验与冲突草稿 | `web/src/services/user-data-sync.ts`、`canvas-sync-drafts.ts`、`web/src/lib/canvas/canvas-content.ts`、`web/src/pages/canvas/canvas-sync-status.tsx` |
|
||
| 历史树与独立只读预览 | `web/src/pages/canvas/canvas-version-history.tsx`、`canvas-version-preview.tsx`;后端 `internal/canvas/canvas_history.go` 与 `repository/canvas_history.go`,Agent 写入桥接在 `app/canvas_bridge.go` |
|
||
| Patch 历史、生成任务和重试控制 | `web/src/pages/canvas/use-canvas-history.ts`、`use-canvas-generation.ts`、`use-canvas-generation-executor.ts`、`use-canvas-generation-retry.ts` |
|
||
| 文本、图片、视频和音频生成执行 | `web/src/pages/canvas/canvas-*-generation-executor*.ts` |
|
||
| 云端 Agent、助手面板、导演台和全局快捷键控制 | `web/src/components/canvas/canvas-cloud-agent-panel.tsx`、`web/src/pages/canvas/use-canvas-assistant-visibility.ts`、`use-canvas-director.ts`、`use-canvas-keyboard.ts`;画布操作契约在 `web/src/lib/canvas/canvas-operation-contract.ts` |
|
||
| 选择拖拽与连线控制 | `web/src/pages/canvas/use-canvas-selection-controller.ts`、`use-canvas-connection-controller.ts` |
|
||
| 上传、素材插入、媒体工具和短剧编排 | `web/src/pages/canvas/use-canvas-upload.ts`、`use-canvas-timeline-asset-insert.ts`、`use-canvas-media-tools.ts`、`use-canvas-storyboard.ts`、`use-canvas-generation-batches.ts`、`use-canvas-short-drama.ts` |
|
||
| 节点操作、节点编辑和视口导航 | `web/src/pages/canvas/use-canvas-node-operations.ts`、`use-canvas-node-editor.ts`、`use-canvas-viewport-controller.ts` |
|
||
| 小说、画风和角色工作流 | `web/src/pages/canvas/use-canvas-document-workflow.ts` |
|
||
| 派生渲染模型和画布分层 | `web/src/pages/canvas/use-canvas-render-model.ts`、`canvas-project-world-layers.tsx`、`canvas-project-context-menu.tsx`、`canvas-project-status-dialogs.tsx` |
|
||
| 顶栏、反馈和 screen-space 浮层 | `web/src/pages/canvas/canvas-project-top-bar.tsx`、`canvas-project-feedback.tsx`、`canvas-project-selection-toolbar.tsx`、`components/canvas/canvas-workspace-overlays.tsx` |
|
||
| 媒体弹窗装配 | `web/src/pages/canvas/canvas-project-media-dialogs.tsx` |
|
||
| 画布视口、拖拽、缩放和框选 | `web/src/components/canvas/canvas-viewport.tsx`、`web/src/lib/canvas/canvas-live-viewport.ts` |
|
||
| 节点渲染与节点工具 | `web/src/components/canvas/canvas-node.tsx`、`canvas-node-hover-toolbar.tsx`、`canvas-node-toolbar.tsx` |
|
||
| 图片多角度、宫格切分与多选框 | `canvas-node-angle-dialog.tsx`、`canvas-angle-scene.tsx`、`canvas-grid-split-picker.tsx`、`web/src/lib/canvas/canvas-grid-split.ts`、`canvas-selection.ts` |
|
||
| 生成 Composer | `web/src/components/canvas/canvas-node-prompt-panel.tsx`、`canvas-config-composer.tsx` |
|
||
| 风格中心、用户风格编辑与项目快照 | `web/src/components/canvas/canvas-style-picker-modal.tsx`、`style-profile-editor-modal.tsx`、`style-asset-binding-modal.tsx`、`web/src/lib/canvas/style-profile.ts`、`web/src/services/api/style-profiles.ts` |
|
||
| 分镜脚本节点 | `web/src/components/canvas/canvas-script-node.tsx` |
|
||
| 3D 导演台 | `web/src/components/canvas/director/` |
|
||
| 节点生成上下文 | `web/src/components/canvas/canvas-node-generation.ts` |
|
||
| 布局和连线算法 | `web/src/lib/canvas/canvas-layout.ts`、`canvas-frame.ts` |
|
||
| 任务结果准备与按节点提交 | `web/src/lib/canvas/canvas-generation-task-sync.ts`、`canvas-generation-result.ts`;持久化协调在 `web/src/services/canvas-generation-consumer.ts` |
|
||
| 编辑命令与批次状态投影 | `web/src/lib/canvas/canvas-editor-state.ts`、`canvas-task-state.ts`、`canvas-image-batch-retry.ts` |
|
||
| 视口节点选择与输入关系解析 | `web/src/lib/canvas/canvas-node-visibility.ts`、`canvas-resource-references.ts` |
|
||
| 本地持久化状态 | `web/src/stores/canvas/use-canvas-store.ts` |
|
||
| 云端 Agent 运行与事件 API | `web/src/services/api/agent.ts`、`web/src/components/canvas/canvas-cloud-agent-panel.tsx` |
|
||
| Agent 画布上下文、操作与历史 | `web/src/lib/canvas/canvas-context-discovery.ts`、`canvas-operation-contract.ts`、`web/src/pages/canvas/use-canvas-operation-history.ts` |
|
||
| 官方提示词目录与客户端起始稿 | `backend/internal/prompts/`、`web/src/lib/prompts/` |
|
||
|
||
## 前端 HTTP 与产品壳
|
||
|
||
| 职责 | 代码位置 |
|
||
| --- | --- |
|
||
| 业务 JSON 调用面 | `web/src/services/api/request.ts` 的 `http`;拦截器仍挂 `apiClient` |
|
||
| 自定义渠道传输 | `web/src/services/api/channel-transport.ts`,image / video / audio 只组协议 |
|
||
| 自带外壳的弹窗 / 侧栏 | `web/src/components/ui/product/app-modal/`、`app-drawer/` |
|
||
|
||
## 后端调用链
|
||
|
||
AutoDL 画面规格由 `app/model_capability_screen_spec.go` 读取官方插件工作流合同,校验所选分辨率及默认值;`task_creation.go` 在价格选择之前归一化,任务校验与 `provider_video.go` 再次使用同一规则。前端 `lib/video-screen-specs.ts` 管理插件预设、所选规格与工作流切换,`ModelCapabilityEditor` 复用到系统及自定义渠道;无开关或独立草稿。
|
||
|
||
```text
|
||
HTTP 请求 -> handler -> service(稳定导入面 / 别名)-> app(组合根)-> 业务域包 -> repository/model
|
||
|
|
||
-> protocol / payment / generation / outbound
|
||
```
|
||
|
||
`internal/service` 只再导出 `internal/app` 的类型、常量和包级函数,handler/cmd 仍 import `internal/service`。组合根和尚未拆出的业务实现在 `internal/app`。已抽出的域包不得 import `service` 或 `app`(防回环)。共享错误码与 ID/字符串工具在 `internal/kernel`。
|
||
|
||
### 目标业务域
|
||
|
||
| 域包 | 职责 | 现状 |
|
||
| --- | --- | --- |
|
||
| `service` | HTTP 稳定导入面 | **已变薄**:仅 `aliases_*.go` / `doc.go`(4 个文件) |
|
||
| `app` | 组合根、跨域编排、尚未拆出的业务实现 | **承接原 service 实现**:`provider_*`、`task_*`、`project_*`、OSS/配额、渠道、管理后台等 |
|
||
| `platform` | 运行时策略、功能开关、限流/并发协调、worker 与读缓存 | **已抽出**:`internal/platform`;`app/platform_bridge.go` 委托 |
|
||
| `kernel` | 结构化错误、错误码、ID 与通用字符串/配额换算 | **已抽出**:`internal/kernel` |
|
||
| `generation` | 协议注册表和生成域边界 | **部分抽出**:`internal/generation` 提供协议注册入口;`provider_*` 执行簇仍在 `app` |
|
||
| `outbound` | 出站 URL/Header 校验、SSRF 防护、HTTP 客户端 | **已抽出**:`internal/outbound` |
|
||
| `skills` | 技能库、GitHub/ZIP 包、内置技能种子、后台同步 | **已抽出**:`internal/skills` |
|
||
| `prompts` | 提示词模板、用户定制、风格档案、JSON 抽取 | **已抽出**:`internal/prompts` |
|
||
| `auth` | 登录注册、OAuth、邮件验证码、LibTV/TapNow 导入 | **已抽出**:`internal/auth` |
|
||
| `canvas` | 画布公开分享、媒体引用守卫、用户画布/素材库同步 | **已抽出**:`internal/canvas` |
|
||
| `assets` | 资源 URL/引用解析、流式交付类型 | **部分抽出**:`internal/assets`;OSS/配额/转码仍在 `app` |
|
||
| `agentcontext` | Agent 上下文检查点的编码、解析与压缩提示词(provider 中立,不含触发与调度) | **已抽出**:`internal/agentcontext`;触发、暂停与恢复在 `app/cloud_agent_context_compaction.go` |
|
||
|
||
组合根原则:`service.New`(委托 `app.New`)组装各域服务;coordinator 不得再持有整个 `*Service` 回灌域包。
|
||
|
||
| 功能 | Handler | Service / 域包 / Repository |
|
||
| --- | --- | --- |
|
||
| 路由与中间件 | `handler/api.go`、`handler/routes.go` | `RegisterCanvasAPI` 挂到 `/api`。合同见 `docs/content/docs/backend/http-api.mdx`、`handler/openapi.yaml`。 |
|
||
| 用户和管理员 | `handler/auth.go` | `internal/auth`、`internal/app/admin.go`(经 `service` 别名) |
|
||
| 管理后台批量操作 | `handler/auth.go` | `internal/app/admin.go`、`repository/admin_audit.go`、`repository/analytics.go` |
|
||
| 管理后台存储资源 | `handler/admin_storage.go` | `internal/app/admin_storage.go`、`repository/admin_storage.go` |
|
||
| 资源与请求策略 | `handler/auth.go`、`handler/security.go` | `internal/platform`、`internal/app/upload_quota.go`、`storage_quota.go`、`coordination.go` |
|
||
| 模型响应拦截 | `handler/response_interception.go`、`handler/custom_proxy.go` | `internal/app/response_interception.go`、`repository/repository.go` |
|
||
| 异步任务、文本 SSE 与 Agent | `handler/routes.go` | `internal/app` 组合根(`provider_*` 仍在此)+ `internal/generation` + `internal/outbound` + `task_text_stream.go`、`text_replay.go` |
|
||
| 用户画布与素材 | `handler/user_data.go` | `internal/canvas` |
|
||
| 文件和 OSS | `handler/routes.go` | `internal/app/resource.go`、`settings.go` |
|
||
| 画布分享 | `handler/canvas_share.go` | `internal/canvas` |
|
||
| 技能库 | `handler/skills.go` | `internal/skills`、`repository/skills.go` |
|
||
| 提示词模板 | `handler/auth.go`、`handler/user_data.go` | `internal/prompts` |
|
||
| 用户风格库 | `handler/style_profile.go` | `internal/prompts`、`repository/style_profile.go` |
|
||
| 用量分析 | `handler/admin_analytics.go` | `internal/app/analytics.go`、`repository/analytics.go` |
|
||
|
||
登录恢复仅初始化当前账号缓存与增量同步会话,不再自动读取 `GET /api/user-data/snapshot`。画布库通过分页摘要加载,打开、导出、重命名时按 ID 读取完整画布,引用素材通过批量 ID 接口读取;旧快照接口仍保留供显式调用。实现见 `internal/canvas/user_data_page.go` 和前端 `services/user-data-sync.ts`。用户库素材写入(`UpsertUserAsset` / `ReplaceUserAssets`)在 `internal/canvas/user_asset_document.go` 校验 SPA 合同:`kind`、`coverUrl`、`tags` 字符串数组,以及按类型完整的 `data`。不完整 payload 在入库时拒绝;GET 仍返回已保存的原始 JSON。上游异构 JSON 的可选字符串仍走 `stringField`;任务 ID 等关键字段走 `firstJSONString`,数字 ID 不再被当成“缺字段”。
|
||
|
||
后端托管的文本生成通过 `GET /api/tasks/:id/text-events` 返回 `progress`、`delta` 和 `terminal` 事件。`delta` 的递增事件 ID 是断线续传游标,前端使用 `?after=<id>` 恢复;分镜任务复用该通道实时接收阶段和进度,但分镜结构和 Agent 工具参数仍在完整响应结束并校验通过后原子应用,不执行半截 JSON。
|
||
|
||
## 其他入口
|
||
|
||
- 旧版 `canvas-agent/` 和 Codex App/MCP 插件已删除;Agent 运行统一由后端云端控制面承载。
|
||
- `docs/content/docs/`:产品、操作、开发和进度文档。
|
||
- `docker-compose.local.yml`:本地前后端编排;`nginx.conf`:生产静态资源和 API 代理。
|
||
|
||
## 修改原则
|
||
|
||
- HTTP 参数与响应只在 handler 处理,业务规则进入 service。
|
||
- 页面保留流程协调;可独立理解和测试的算法进入同业务域的 `lib`。
|
||
- 新增功能时只更新本页的主要入口,不增加逐文件清单。
|
||
|
||
## 画布工具链路
|
||
|
||
- `backend/internal/handler/tools.go`:登录态工具列表、详情、收藏、创建与删除。
|
||
- `internal/service` 别名 → `internal/app/tools_bridge.go`(资源归属校验)→ `internal/tools`(可见性策略、输入合同、token 展开和内置种子)→ `internal/repository/tools.go`。
|
||
- 任务入队 `internal/app/task_creation.go` 与生成执行 `internal/app/provider.go` 共用严格 token 解析。
|
||
- 前端 `canvas-tool-presentation.ts` 共享轻量展示配置,`canvas-resource-references.ts` 统一 token;节点提示词与工具面板共用同一持久状态,不复制到 metadata 风格字段。
|
||
- `canvas-workspace-panel.tsx` 提供常驻左侧菜单,按需挂载节点、资产、工具、任务和历史面板;资产面板复用素材分页服务与画布插入合同;主分支项目章节侧栏与工作区互斥。
|
||
|
||
## 技能策展
|
||
|
||
`internal/skills/skill_curation.go` 负责校验,`internal/repository/skill_curation.go` 负责分类持久化与 CAS 审计交易,handler/app bridge 接入原有技能域。
|
||
|
||
`skill_curation_roots.go` 扩展动态根维护、有效根查询和空表回落;数据库迁移 47 接续 46。
|
||
|
||
## 创作首页纵深画廊与灵感库
|
||
|
||
- `web/src/pages/create/creation-inspiration-tunnel.tsx`、`creation-inspiration-tunnel.css`:纵深画廊的排布、随机取样、封面就绪门控与样式。
|
||
- `web/src/pages/inspirations/`:灵感页(`index.tsx`)、详情弹窗、编辑弹窗与 `inspirations.css`。
|
||
- `web/src/lib/inspirations/catalog.ts`、`resolve.ts`、`source-revisions.ts`:来源登记表、条目类型与解析、原创条目、上游版本号。
|
||
- `web/src/services/inspiration-catalog.ts`:全量目录与画廊池的运行时加载、内存缓存与失败退回。
|
||
- `web/src/stores/use-inspiration-store.ts`:自建/覆盖/隐藏/收藏的本地持久化与导入导出。
|
||
- `web/scripts/import-inspirations.mjs`:外部来源同步、等距抽取、缩略图生成与画廊池落盘;产物在 `web/public/inspirations/` 与 `web/public/inspiration-thumbs/`。
|