# 项目工作台 MVP 设计

## 目标

构建一个以项目为中心、面向私有部署的个人与小团队工作台。产品要解决资料分散、任务分散、AI 对话分散、用时找不到的问题，让每个项目都有统一位置承载任务、笔记、文件、AI 对话、收集内容和轻量任务分发。

第一版不是完整协作套件、即时通讯工具或企业知识图谱。它是一个项目优先的工作空间，重点是可靠收集、组织、搜索和 AI 辅助整理。

## 目标用户

- 同时管理多个主题或项目的个人知识工作者。
- 需要整理项目资料并分发任务的团队负责人。
- 私有部署环境中的内部用户，通过管理员创建账号或邀请码注册。

## 产品范围

### MVP 包含

- 以项目为中心的工作空间。
- 项目 Dashboard 作为项目默认首页。
- 项目 inbox，用于手动收集和承接系统事件。
- 任务列表，支持状态和排序，并为未来看板视图预留模型能力。
- 统一的 Markdown 笔记/文档对象。
- 项目内文件和链接资料。
- 项目内标签，用于筛选项目对象。
- AI 会话归属于具体项目。
- AI 会话可以引用项目笔记和资料。
- AI 辅助分析 inbox 内容，并建议生成任务、笔记或资料。
- 跨项目关键词搜索和全文搜索。
- 向系统内用户分发任务。
- 显式共享任务关联对象。
- 响应式 Svelte Web 前端，并由 Tauri 包装为桌面客户端。
- 客户端登录时需要填写服务器 IP 或域名，作为 API 服务地址。
- Tauri 桌面能力：登录持久化、文件拖拽上传、系统通知、全局快捷键快速收集。
- Go Gin + Gorm 后端，数据库使用 PostgreSQL。
- 服务端本地文件存储。
- 系统 AI key，以及用户可选配置自己的 AI key。

### MVP 不包含

- 真正的实时即时通讯。
- 项目级成员体系和完整角色权限协作。
- 匿名公开任务分享。
- AI 自主 Agent 执行系统。
- 语义搜索或向量搜索。
- 移动端原生 App。
- 浏览器插件、邮件、IM 或第三方渠道收集集成。
- 离线编辑或本地优先同步。
- 高级本地桌面集成，例如开机启动、后台剪贴板监听、文件系统索引。

## 核心信息架构

应用分为全局外壳和项目工作区。

全局外壳：
- 项目列表。
- 全局搜索。
- 浏览器式打开标签页。
- 用户/账号设置。
- AI key 设置。

项目工作区：
- Dashboard。
- Inbox。
- 任务。
- 笔记和资料。
- AI 会话。
- 项目设置。

项目 Dashboard 是默认项目视图。它展示待处理 inbox、当前任务、最近笔记/资料、最近 AI 会话和最近项目事件。

## 核心对象

### Project

项目是一个主题工作空间。它拥有任务、inbox 条目、笔记、资料、AI 会话、项目内标签和项目事件。

### InboxItem

InboxItem 是等待处理的原始收集内容或系统事件。来源包括：
- 手动输入文本。
- 粘贴链接。
- 上传文件。
- AI 输出保存到 inbox。
- 内部任务事件、评论、状态变化。

外部渠道通过 `source_type` 字段预留，但 MVP 不实现外部渠道接入。

InboxItem 在处理后仍作为原始记录保留。处理动作可以将其标记为 `processed`，但不会删除原始内容。

### Task

任务支持：
- 标题。
- 描述。
- 状态。
- 排序字段，用于未来看板视图。
- 截止时间。
- 负责人。
- 项目内标签。
- 显式共享的关联对象。
- 评论或活动记录。

第一版 UI 使用列表。数据模型为未来 Todo/Doing/Done 看板列预留空间。

### Note

笔记和文档合并为同一种 Markdown 对象。通过模板、长度、标签和使用意图区分会议纪要、PRD、研究笔记或轻量文档。

### Source

Source 是原始资料，例如上传文件或链接。MVP 使用服务端本地文件存储。文件路径逻辑必须集中在一个后端文件服务中，不应散落在各个 handler 里。

### AISession

AI 会话归属于一个项目，并以卡片形式出现在项目 AI 会话列表中。每个 session 拥有自己的消息历史和上下文，可以引用项目笔记和资料。

MVP 中的 AI session 是普通项目聊天，不是自主 Agent 运行。模型应为未来 Agent 化 session 预留空间，例如目标、状态、产出物和执行日志。

### Tag

标签是项目内标签。它们可以附加到项目内对象，用于该项目内筛选。跨项目查找依赖全局搜索，而不是全局标签。

### ProjectEvent

项目事件记录重要活动，例如任务分发、评论、状态变化、AI 输出保存到 inbox、笔记更新和文件上传。事件可展示在项目 Dashboard 和类 inbox 的消息流中。

### User

用户体系面向私有部署。注册方式是管理员创建账号或邀请码注册。公开自助注册 SaaS 不在 MVP 范围内。

## 关键流程

### 收集到项目 Inbox

用户将文本、链接或文件添加到项目 inbox。在 Tauri 中，全局快捷键打开快速收集窗口。如果主窗口当前处于某个项目，该项目作为默认投递目标；否则用户需要选择目标项目。

内容进入 inbox 时不会自动触发 AI 分析。用户需要建议时，可以点击“分析/整理”。

### AI 辅助处理 Inbox

当用户点击“分析/整理”时，后端调用选定的 AI provider。AI 返回结构化建议列表，包含候选任务、笔记或资料。

用户查看建议列表，编辑标题或基础字段，勾选要创建的候选项，然后确认。AI 不能在未确认时直接创建正式对象。创建出的对象需要保留对原始 inbox item 的引用。

### 项目 AI 对话

用户在项目下打开一个 AI session 卡片。该 session 有自己的消息历史。用户可以用 @ 选择器引用项目笔记或资料。AI 回复可以保存到 inbox、转换为笔记，或关联到任务。

### 任务分发

用户可以把任务指派或共享给另一个系统用户。接收者能看到任务本身，以及被显式共享的关联对象。接收者不会自动获得项目级访问权限。

公开分享链接是未来能力，不属于 MVP 行为。

### 全局搜索

用户可以跨项目搜索。MVP 搜索范围包括：
- 项目名称。
- 任务标题和描述。
- 笔记标题和 Markdown 正文。
- 资料标题、文件名、URL，以及可提取到的正文文本。
- AI session 标题和消息文本。
- Inbox 文本。

搜索使用 PostgreSQL 全文搜索，并支持关键词搜索。语义搜索后置。

## AI Key 策略

系统配置默认 AI provider/key。用户可以配置自己的 provider/key。如果用户配置了自己的 key，优先使用用户 key；否则可以回退到系统 key。

因为允许回退到系统 key，MVP 必须包含：
- AI 调用日志。
- 基础用户级限流。
- 错误记录。
- 用户 key 的安全存储。
- 清晰的 provider 选择逻辑。

## 后端设计

后端技术栈：
- Go。
- Gin HTTP API。
- Gorm ORM。
- PostgreSQL。
- 服务端本地文件存储。

建议后端模块：
- 认证和邀请。
- 项目。
- Inbox。
- 任务。
- 笔记和资料。
- AI 会话。
- 搜索。
- 文件。
- 标签。
- 事件。
- AI provider 网关。

文件模块拥有所有文件系统路径和元数据规则。Handler 不应直接构造存储路径。

## 前端与 Tauri 设计

前端是响应式 Svelte Web 应用，桌面优先，同时保证移动浏览器可用。Tauri 包装同一套前端作为桌面客户端。登录页必须允许用户填写服务器 IP 或域名，并将其作为后续 API 请求的服务器地址。

Tauri MVP 能力：
- 登录状态持久化。
- 文件拖拽上传。
- 系统通知。
- 全局快捷键快速收集。

浏览器式标签页保存页面级状态，例如打开的项目、任务详情、笔记、资料或 AI session。滚动位置等复杂内部状态不要求进入 MVP。编辑器草稿和 AI 输入草稿应单独保存，避免数据丢失。

## 权限

MVP 使用保守共享模型：
- 项目内容默认仅创建者可见，除非通过任务显式共享。
- 任务接收者可以看到任务。
- 任务接收者只有在对象被显式共享时，才能看到关联笔记、资料或文件。
- 项目级成员和角色体系后置。

## 测试与验证

后端：
- AI key 选择、inbox 处理、任务共享可见性、标签项目隔离、文件元数据处理的单元测试。
- 项目搜索、任务分发、inbox 转对象的集成测试。
- 需要真实 PostgreSQL 时，通过 `DATABASE_URL` 指向测试服务器；不要把真实凭据写入仓库。

前端：
- 项目 Dashboard、inbox 建议确认、AI session 列表、任务列表、快速收集表单的组件测试。
- 收集、分析、确认、搜索、任务指派流程的端到端测试。

桌面端：
- 手动验证文件拖拽上传、系统通知、快速收集快捷键、Tauri 登录持久化。

## 风险

- 如果项目协作、真实消息和自主 Agent 进入 MVP，系统会迅速变得过宽。
- 系统 AI key 回退会带来成本和滥用风险，必须配套日志和限流。
- PostgreSQL 全文搜索对中文内容可能需要额外调优。
- 服务端本地文件存储简单，但需要认真处理备份、路径规则和未来迁移。
- AI 建议必须可审核、可撤销，否则用户会失去信任。

## 里程碑

1. 后端基础：认证、用户、项目、PostgreSQL schema、文件元数据、服务端本地存储。
2. 项目工作区外壳：项目列表、项目 Dashboard、标签页、路由。
3. Inbox 和收集：手动 inbox、上传/链接/文本收集、Tauri 快速收集。
4. 笔记、资料和项目内标签。
5. 任务列表、指派、评论/事件、显式共享关联对象。
6. AI session 和 @ 引用选择器。
7. AI inbox 分析和建议列表确认。
8. 全局全文搜索。
9. Tauri 桌面完善：通知、登录持久化、拖拽上传验证。
