Skip to content

feat(web): add shared team projects workbench - #148

Merged
realchendahuang merged 2 commits into
realchendahuang:mainfrom
Jasper-Wei1:codex/team-projects-workbench
Sep 29, 2026
Merged

realchendahuang merged 2 commits into
realchendahuang:mainfrom
Jasper-Wei1:codex/team-projects-workbench

Conversation

@Jasper-Wei1

@Jasper-Wei1 Jasper-Wei1 commented Sep 28, 2026 •

Copy link
Copy Markdown

变更

在 FlareMo 原生工作区内新增「团队项目」入口 /team-projects,让团队能集中查看项目、负责人、状态、当前进展、下一步和跟进日期,并进入完整页面维护概况、记录进展/会议结论、上传和查看资料。原有 /projects 个人任务看板保留。

  • 将已有 KOSX 项目工作台接入原生登录、侧栏、主题和路由;支持团队/我的项目筛选、详情深链、编辑刷新和返回时保留筛选。
  • 复用 protected 团队 memo、Better Auth、现有附件 API 和服务端权限。仅识别有效 kosx-pm 元数据块(kosx.pm/1),普通笔记不进入项目列表。
  • 新建遵循现有团队发布权限;编辑遵循 can_manage。指定业务负责人不会授予主记录编辑权限;其他可发布成员可添加自己的进展和附件。
  • 保留现有记录格式、未知元数据和正文;对分页、接口 wire 格式、预览权限复查和路由序列化增加定向覆盖。
  • 提供中文/英文工作台文案,以及接入边界说明 docs/team-projects-workbench.md。

Issue 关系:本次为用户明确请求的外部集成贡献,暂无关联 issue。

本期范围与后续边界

本期交付为 FlareMo 内置的全团队共享项目工作台。默认团队中有有效成员资格的用户(包含只读成员)可查看正常状态的团队共享项目、进展和资料;原有记录生命周期权限继续生效。

  • 「我的项目」、负责人和状态筛选只改变展示,不构成访问权限隔离。
  • 本期不支持运营/后端等部门之间的项目隔离,也不提供多团队创建、选择或切换。需要部门保密的项目应在后续隔离功能完成后再录入。
  • 项目概况仍由主记录作者维护,指定业务负责人不会自动授予编辑权;其他有发布权限的成员可以添加自己的进展和附件,只读成员不能发布。
  • 多团队与细化权限留待后续 PR。届时需处理已有项目归属,并覆盖进展、附件、历史、普通 memo 信息流、搜索和其他后端读取路径,不能仅依赖看板筛选隐藏数据。

影响范围

  • Web UI
  • /api/app/* 服务端实现
  • Memos-compatible /api/v1/* 服务端实现
  • D1 / Drizzle migration
  • R2 / attachments 服务端实现或资源配置
  • Cloudflare Access / deploy
  • Docs

前端调用现有 API 和附件能力;不新增后端服务、数据库表、依赖或云资源。移植的 JavaScript 通过局部 checkJs 配置纳入 web 检查,宿主 strict TypeScript 配置保持不变;本次不是完整 strict TypeScript 重写。

验证

在最终提交上独立复核通过:

pnpm exec vitest run tests/team-projects/workbench.test.ts apps/web/src/features/team-projects/navigation.test.ts
pnpm --filter @flaremo/web check
pnpm --filter @flaremo/web build
pnpm format:check
git diff --check origin/main
  • 定向测试:2 个文件、12 项通过;类型检查和生产构建通过。转正式待审前再次执行定向测试和 web 类型检查,均通过;此轮仅补充范围文档,产品代码与此前双账号和浏览器验收版本一致。
  • 格式检查 exit 0、无错误;全仓检查有 71 条警告,其中本次移植 CSS 保留 27 条 noDescendingSpecificity 警告。构建也仍有 chunk 大小及混合动态/静态导入提示。
  • 使用隔离的本地 D1/R2 和两个测试账号实际验收:共享项目可见、匿名拒绝访问、业务负责人不能编辑他人主记录、成员可记录自己的进展和上传附件、另一成员可读取有权限的资料、不能编辑他人进展。
  • 浏览器实际验收:原生登录/退出、必填错误提示、编辑一次打开及刷新保存、筛选返回、附件选择/上传/预览、中英文切换、明暗主题、390px 移动端无横向溢出,以及原 /projects 入口独立可用。
  • 已补充并注册 tests/e2e/team-projects.spec.ts 的登录守卫和导航回归用例;按 AGENTS.md 的 opt-in 规则,未运行仓库 Playwright E2E 套件,也未运行 pnpm verify。

GitHub Actions 当前存在 action_required 运行状态,需要维护者处理后才会得到远端检查结果;不将本地通过等同于远端 CI 已通过。

升级说明

不需要 D1 migration、Access policy 调整或新增 Cloudflare 资源;本 PR 不部署任何站点。维护者审查合并后,仍需按自己的发布流程部署,才会出现在已部署实例中。

当前边界:

  • 保持 FlareMo 原有的记录所有权/团队权限,不引入团队成员共同编辑任意记录的权限模型。
  • 工作台完整文案目前覆盖中文和英文,其余宿主语言使用英文工作台文案。
  • 项目记录仍是团队 memo,原始协议元数据可能在普通 memo 视图中可见。
  • 未迁移原独立 demo 的实际业务数据,也未验证或更改 flaremo.kosx.ai 的生产配置。

@Jasper-Wei1
Jasper-Wei1 marked this pull request as draft September 28, 2026 15:41
@Jasper-Wei1
Jasper-Wei1 marked this pull request as ready for review September 29, 2026 01:48
@realchendahuang
realchendahuang merged commit 1f7b392 into realchendahuang:main Sep 29, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants