@nexttylabs/echo 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/app/(dashboard)/admin/feedback/[id]/edit/page.tsx +12 -6
  3. package/app/(dashboard)/admin/feedback/new/page.tsx +19 -17
  4. package/app/(dashboard)/admin/layout.tsx +16 -6
  5. package/app/(dashboard)/layout.tsx +4 -2
  6. package/app/(dashboard)/settings/api-keys/page.tsx +13 -3
  7. package/app/(dashboard)/settings/layout.tsx +25 -2
  8. package/app/(dashboard)/settings/organization/page.tsx +8 -9
  9. package/app/(public)/[organizationSlug]/roadmap/page.tsx +19 -1
  10. package/app/api/admin/backup/route.ts +22 -4
  11. package/app/api/auth/register/handler.ts +1 -2
  12. package/app/api/feedback/[id]/comments/[commentId]/route.ts +13 -4
  13. package/app/api/feedback/[id]/reclassify/route.ts +4 -4
  14. package/app/api/organizations/handler.ts +2 -4
  15. package/components/settings/settings-sidebar.tsx +4 -4
  16. package/hooks/use-organization.tsx +116 -0
  17. package/hooks/use-permissions.ts +24 -11
  18. package/lib/auth/config.ts +0 -7
  19. package/lib/auth/organization.ts +20 -0
  20. package/lib/auth/permissions.ts +10 -0
  21. package/lib/db/migrations/0000_needy_leech.sql +335 -0
  22. package/lib/db/migrations/meta/0000_snapshot.json +2186 -1
  23. package/lib/db/migrations/meta/_journal.json +2 -135
  24. package/lib/db/schema/auth.ts +0 -1
  25. package/lib/db/schema/index.ts +0 -1
  26. package/lib/portal/public-context.tsx +5 -0
  27. package/package.json +20 -1
  28. package/.changeset/README.md +0 -21
  29. package/.changeset/config.json +0 -11
  30. package/.changeset/cozy-ghosts-care.md +0 -5
  31. package/.changeset/sharp-lines-stand.md +0 -5
  32. package/.changeset/sour-doodles-eat.md +0 -5
  33. package/.changeset/tender-moose-shop.md +0 -5
  34. package/.github/pull_request_template.md +0 -13
  35. package/.github/workflows/ci.yml +0 -41
  36. package/.github/workflows/publish.yml +0 -44
  37. package/.github/workflows/release.yml +0 -73
  38. package/AGENTS.md +0 -92
  39. package/Dockerfile +0 -57
  40. package/Makefile +0 -77
  41. package/bun.lock +0 -2503
  42. package/components/portal/project-switcher.tsx +0 -20
  43. package/docker-compose.dev.yml +0 -26
  44. package/docker-compose.yml +0 -98
  45. package/docs/architecture.md +0 -259
  46. package/docs/component-inventory.md +0 -261
  47. package/docs/database-migrations.md +0 -76
  48. package/docs/development-guide.md +0 -209
  49. package/docs/e2e-user-flows.csv +0 -31
  50. package/docs/er-diagram-feedback.mmd +0 -138
  51. package/docs/er-diagram.mmd +0 -281
  52. package/docs/i18n-check-report.md +0 -296
  53. package/docs/index.md +0 -214
  54. package/docs/logic-chain.md +0 -94
  55. package/docs/plans/2026-01-02-database-migration-scripts.md +0 -496
  56. package/docs/plans/2026-01-02-user-login-design.md +0 -37
  57. package/docs/plans/2026-01-02-user-login.md +0 -437
  58. package/docs/plans/2026-01-02-user-registration-design.md +0 -47
  59. package/docs/plans/2026-01-02-user-registration.md +0 -628
  60. package/docs/plans/2026-01-03-roles-permissions-design.md +0 -20
  61. package/docs/plans/2026-01-03-roles-permissions.md +0 -266
  62. package/docs/plans/2026-01-05-authentication-middleware.md +0 -207
  63. package/docs/plans/2026-01-05-member-removal.md +0 -186
  64. package/docs/plans/2026-01-05-organization-creation.md +0 -374
  65. package/docs/plans/2026-01-05-rbac-middleware.md +0 -112
  66. package/docs/plans/2026-01-05-role-configuration.md +0 -441
  67. package/docs/plans/2026-01-06-file-upload-support.md +0 -804
  68. package/docs/plans/2026-01-06-permission-check-hook.md +0 -155
  69. package/docs/plans/2026-01-06-resource-ownership-check.md +0 -231
  70. package/docs/plans/2026-01-07-feedback-tracking-link.md +0 -459
  71. package/docs/plans/2026-01-09-logout-redirect-design.md +0 -52
  72. package/docs/plans/2026-01-09-phase2-3-plan.md +0 -654
  73. package/docs/plans/2026-01-09-portal-execution-plan.md +0 -408
  74. package/docs/plans/2026-01-09-project-delete-feature-design.md +0 -163
  75. package/docs/plans/2026-01-09-project-delete-implementation.md +0 -451
  76. package/docs/plans/2026-01-09-project-edit-delete-design.md +0 -52
  77. package/docs/plans/2026-01-09-settings-center-design.md +0 -114
  78. package/docs/plans/2026-01-09-settings-center.md +0 -948
  79. package/docs/plans/2026-01-10-organization-only-design.md +0 -66
  80. package/docs/plans/2026-01-10-organization-only-implementation.md +0 -433
  81. package/docs/plans/2026-01-10-portal-settings-restructure-plan.md +0 -18
  82. package/docs/plans/2026-01-10-project-settings-tabs-design-implementation.md +0 -296
  83. package/docs/plans/2026-01-14-e2e-playwright-feedback.md +0 -173
  84. package/docs/plans/2026-01-15-feedback-management-org-context-design.md +0 -82
  85. package/docs/plans/2026-01-15-feedback-management-org-context-implementation-plan.md +0 -521
  86. package/docs/plans/2026-01-16-admin-feedback-filters-design.md +0 -75
  87. package/docs/plans/2026-01-16-admin-feedback-filters-implementation.md +0 -293
  88. package/docs/plans/2026-01-16-admin-feedback-route-consolidation.md +0 -180
  89. package/docs/plans/2026-01-16-e2e-test-fixes.md +0 -158
  90. package/docs/plans/2026-01-17-admin-feedback-filters.md +0 -214
  91. package/docs/plans/2026-01-17-admin-feedback-improvements.md +0 -453
  92. package/docs/plans/2026-01-18-changesets-design.md +0 -40
  93. package/docs/product_changes.md +0 -37
  94. package/docs/project-overview.md +0 -159
  95. package/docs/project-scan-report.json +0 -104
  96. package/docs/route-role-visibility.md +0 -51
  97. package/docs/source-tree-analysis.md +0 -150
  98. package/docs/testing/delete-project-manual-tests.md +0 -18
  99. package/docs/user-story-tracking.md +0 -191
  100. package/eslint.config.mjs +0 -19
  101. package/lib/db/migrations/.gitkeep +0 -0
  102. package/lib/db/migrations/0000_cynical_gladiator.sql +0 -53
  103. package/lib/db/migrations/0001_wandering_sunfire.sql +0 -27
  104. package/lib/db/migrations/0002_shallow_speedball.sql +0 -1
  105. package/lib/db/migrations/0003_add_org_description.sql +0 -1
  106. package/lib/db/migrations/0003_boring_wild_pack.sql +0 -13
  107. package/lib/db/migrations/0004_windy_tyrannus.sql +0 -27
  108. package/lib/db/migrations/0005_perpetual_doorman.sql +0 -5
  109. package/lib/db/migrations/0006_aberrant_captain_midlands.sql +0 -13
  110. package/lib/db/migrations/0007_clever_captain_cross.sql +0 -14
  111. package/lib/db/migrations/0008_sparkling_pandemic.sql +0 -2
  112. package/lib/db/migrations/0009_happy_black_tom.sql +0 -29
  113. package/lib/db/migrations/0010_kind_junta.sql +0 -8
  114. package/lib/db/migrations/0011_mute_squadron_supreme.sql +0 -25
  115. package/lib/db/migrations/0012_giant_power_man.sql +0 -24
  116. package/lib/db/migrations/0013_damp_titanium_man.sql +0 -17
  117. package/lib/db/migrations/0014_blue_alice.sql +0 -18
  118. package/lib/db/migrations/0015_webhook_tables.sql +0 -41
  119. package/lib/db/migrations/0016_github_integration.sql +0 -30
  120. package/lib/db/migrations/0016_overjoyed_ghost_rider.sql +0 -22
  121. package/lib/db/migrations/0017_slimy_inhumans.sql +0 -6
  122. package/lib/db/migrations/0018_same_spitfire.sql +0 -1
  123. package/lib/db/migrations/0019_jittery_loners.sql +0 -16
  124. package/lib/db/migrations/0019_remove_projects_add_org_settings.sql +0 -14
  125. package/lib/db/migrations/meta/0001_snapshot.json +0 -553
  126. package/lib/db/migrations/meta/0002_snapshot.json +0 -560
  127. package/lib/db/migrations/meta/0003_snapshot.json +0 -650
  128. package/lib/db/migrations/meta/0004_snapshot.json +0 -852
  129. package/lib/db/migrations/meta/0005_snapshot.json +0 -900
  130. package/lib/db/migrations/meta/0006_snapshot.json +0 -1011
  131. package/lib/db/migrations/meta/0007_snapshot.json +0 -1125
  132. package/lib/db/migrations/meta/0008_snapshot.json +0 -1146
  133. package/lib/db/migrations/meta/0009_snapshot.json +0 -1386
  134. package/lib/db/migrations/meta/0010_snapshot.json +0 -1419
  135. package/lib/db/migrations/meta/0011_snapshot.json +0 -1615
  136. package/lib/db/migrations/meta/0012_snapshot.json +0 -1805
  137. package/lib/db/migrations/meta/0013_snapshot.json +0 -1948
  138. package/lib/db/migrations/meta/0014_snapshot.json +0 -2082
  139. package/lib/db/migrations/meta/0015_snapshot.json +0 -2476
  140. package/lib/db/migrations/meta/0016_snapshot.json +0 -2633
  141. package/lib/db/migrations/meta/0017_snapshot.json +0 -2680
  142. package/lib/db/migrations/meta/0018_snapshot.json +0 -2686
  143. package/lib/db/migrations/meta/0019_snapshot.json +0 -2741
  144. package/lib/db/schema/projects.ts +0 -145
  145. package/lib/db/schema/user-profiles.ts +0 -31
  146. package/lib/validations/projects.ts +0 -49
  147. package/next-env.d.ts +0 -6
  148. package/playwright.config.ts +0 -44
  149. package/proxy.test.ts +0 -131
  150. package/proxy.ts +0 -116
  151. package/scripts/backup-db.sh +0 -57
  152. package/scripts/backup-db.ts +0 -24
  153. package/scripts/generate-openapi.ts +0 -22
  154. package/scripts/migration-helper.ts +0 -39
  155. package/scripts/pre-deploy.ts +0 -75
  156. package/scripts/restore-db.sh +0 -60
  157. package/scripts/rollback.ts +0 -72
  158. package/scripts/seed-tags.ts +0 -48
  159. package/tests/api/feedback-bulk.test.ts +0 -47
  160. package/tests/api/feedback-by-id.test.ts +0 -67
  161. package/tests/api/feedback-comments-route-import.test.ts +0 -26
  162. package/tests/api/feedback-create.test.ts +0 -71
  163. package/tests/api/feedback-delete.test.ts +0 -160
  164. package/tests/api/feedback-filter.test.ts +0 -250
  165. package/tests/api/feedback-list.test.ts +0 -234
  166. package/tests/api/feedback-route-assignee-condition.test.ts +0 -32
  167. package/tests/api/feedback-similar.test.ts +0 -46
  168. package/tests/api/feedback-sort.test.ts +0 -261
  169. package/tests/api/feedback-status-enum.test.ts +0 -49
  170. package/tests/api/feedback-status-filter.test.ts +0 -117
  171. package/tests/api/feedback-submit-on-behalf.test.ts +0 -269
  172. package/tests/api/feedback.test.ts +0 -175
  173. package/tests/api/identify-jwt.test.ts +0 -25
  174. package/tests/api/invitation-accept.test.ts +0 -213
  175. package/tests/api/organization-invitations.test.ts +0 -186
  176. package/tests/api/organization-members-list.test.ts +0 -79
  177. package/tests/api/organization-members.test.ts +0 -340
  178. package/tests/api/organizations.test.ts +0 -149
  179. package/tests/api/register.test.ts +0 -112
  180. package/tests/api/upload.test.ts +0 -103
  181. package/tests/api/vote.test.ts +0 -82
  182. package/tests/app/admin-feedback-detail-page.test.tsx +0 -25
  183. package/tests/app/admin-feedback-list-page.test.tsx +0 -25
  184. package/tests/app/admin-feedback-new-page.test.tsx +0 -25
  185. package/tests/app/health-route-helpers.test.ts +0 -27
  186. package/tests/app/login-page.test.ts +0 -26
  187. package/tests/app/portal-page.test.ts +0 -29
  188. package/tests/app/project-portal-overview.test.tsx +0 -25
  189. package/tests/app/widget-page-import.test.ts +0 -25
  190. package/tests/components/create-post-dialog-defaults.test.ts +0 -43
  191. package/tests/components/feedback/duplicate-suggestions-inline.test.tsx +0 -27
  192. package/tests/components/feedback/embedded-feedback-form.test.tsx +0 -96
  193. package/tests/components/feedback/feedback-detail.test.tsx +0 -25
  194. package/tests/components/feedback/feedback-stats.test.tsx +0 -49
  195. package/tests/components/feedback-bulk-actions.test.tsx +0 -39
  196. package/tests/components/feedback-i18n-keys.test.ts +0 -70
  197. package/tests/components/feedback-list-controls-compile.test.ts +0 -25
  198. package/tests/components/feedback-list-controls.test.tsx +0 -204
  199. package/tests/components/feedback-list-item.test.tsx +0 -67
  200. package/tests/components/landing/hero.test.tsx +0 -46
  201. package/tests/components/layout/language-switcher.test.tsx +0 -25
  202. package/tests/components/layout/sidebar.test.tsx +0 -157
  203. package/tests/components/login-form.test.ts +0 -25
  204. package/tests/components/organization-form.test.ts +0 -32
  205. package/tests/components/organization-switcher.test.ts +0 -25
  206. package/tests/components/pagination.test.tsx +0 -43
  207. package/tests/components/portal-overview.test.tsx +0 -25
  208. package/tests/components/profile-form.test.tsx +0 -139
  209. package/tests/components/role-selector.test.ts +0 -31
  210. package/tests/components/status-chart.test.tsx +0 -90
  211. package/tests/e2e/auth.e2e.ts +0 -323
  212. package/tests/e2e/feedback-actions.e2e.ts +0 -471
  213. package/tests/e2e/feedback-attachment.e2e.ts +0 -168
  214. package/tests/e2e/feedback-customer.e2e.ts +0 -226
  215. package/tests/e2e/feedback-management.e2e.ts +0 -565
  216. package/tests/e2e/feedback-submit.e2e.ts +0 -133
  217. package/tests/e2e/feedback-view.e2e.ts +0 -297
  218. package/tests/e2e/fixtures/test-data.ts +0 -235
  219. package/tests/e2e/health-check.e2e.ts +0 -230
  220. package/tests/e2e/helpers/test-utils-helpers.test.ts +0 -43
  221. package/tests/e2e/helpers/test-utils.ts +0 -298
  222. package/tests/e2e/integration-placeholders.e2e.ts +0 -199
  223. package/tests/e2e/organization.e2e.ts +0 -292
  224. package/tests/e2e/permissions.e2e.ts +0 -424
  225. package/tests/e2e/project-widget.e2e.ts +0 -63
  226. package/tests/feedback/filters.test.ts +0 -29
  227. package/tests/hooks/use-permissions.test.ts +0 -52
  228. package/tests/lib/ai/classifier.test.ts +0 -104
  229. package/tests/lib/ai/duplicate-detector.test.ts +0 -234
  230. package/tests/lib/attachments-schema.test.ts +0 -30
  231. package/tests/lib/auth/session.test.ts +0 -49
  232. package/tests/lib/auth-client.test.ts +0 -37
  233. package/tests/lib/auth-config.test.ts +0 -26
  234. package/tests/lib/feedback-prefill.test.ts +0 -52
  235. package/tests/lib/feedback-processor.test.ts +0 -41
  236. package/tests/lib/feedback-schema.test.ts +0 -33
  237. package/tests/lib/file-validator.test.ts +0 -48
  238. package/tests/lib/get-feedback-by-id.test.ts +0 -37
  239. package/tests/lib/invitations.test.ts +0 -35
  240. package/tests/lib/login-schema.test.ts +0 -36
  241. package/tests/lib/org-context.test.ts +0 -95
  242. package/tests/lib/organization-access.test.ts +0 -44
  243. package/tests/lib/organization-member-role-schema.test.ts +0 -41
  244. package/tests/lib/permissions.test.ts +0 -88
  245. package/tests/lib/portal-analytics.test.ts +0 -25
  246. package/tests/lib/portal-contributors.test.ts +0 -25
  247. package/tests/lib/portal-copy.test.ts +0 -27
  248. package/tests/lib/portal-i18n.test.ts +0 -30
  249. package/tests/lib/portal-leaderboard-settings.test.ts +0 -25
  250. package/tests/lib/portal-modules.test.ts +0 -25
  251. package/tests/lib/portal-seo.test.ts +0 -25
  252. package/tests/lib/portal-sharing.test.ts +0 -25
  253. package/tests/lib/portal-sorting.test.ts +0 -25
  254. package/tests/lib/portal-theme.test.ts +0 -25
  255. package/tests/lib/rate-limit.test.ts +0 -142
  256. package/tests/lib/resolve-locale.test.ts +0 -34
  257. package/tests/lib/services/backup.test.ts +0 -145
  258. package/tests/lib/user-organizations.test.ts +0 -42
  259. package/tests/lib/user-role-schema.test.ts +0 -33
  260. package/tests/lib/user-schema.test.ts +0 -25
  261. package/tests/setup.ts +0 -74
  262. package/vercel.json +0 -4
package/docs/index.md DELETED
@@ -1,214 +0,0 @@
1
- # Project Documentation Index
2
-
3
- **Project:** Echo
4
- **Type:** Monolith Web Application
5
- **Primary Language:** TypeScript
6
- **Architecture:** Next.js App Router + React Server Components
7
- **Last Updated:** 2025-12-31
8
-
9
- ---
10
-
11
- ## Project Overview
12
-
13
- - **Type:** Monolith
14
- - **Primary Language:** TypeScript 5.x
15
- - **Primary Framework:** Next.js 16.1.1 + React 19.2.3
16
- - **Architecture Pattern:** App Router + React Server Components
17
- - **Package Manager:** Bun
18
-
19
- ---
20
-
21
- ## Quick Reference
22
-
23
- | 属性 | 值 |
24
- |------|-----|
25
- | **项目名称** | Echo |
26
- | **项目类型** | Web 应用 - 用户反馈系统 |
27
- | **主语言** | TypeScript 5.x (strict mode) |
28
- | **框架** | Next.js 16.1.1 + React 19.2.3 |
29
- | **入口点** | `app/page.tsx` |
30
- | **架构模式** | App Router + React Server Components |
31
-
32
- ---
33
-
34
- ## Generated Documentation
35
-
36
- ### Core Documentation
37
-
38
- - [Project Overview](./project-overview.md) - 项目概览和快速参考
39
- - [Architecture](./architecture.md) - 系统架构详细说明
40
- - [Source Tree Analysis](./source-tree-analysis.md) - 源代码树结构
41
- - [Component Inventory](./component-inventory.md) - 组件清单和使用指南
42
- - [Development Guide](./development-guide.md) - 开发设置和工作流程
43
-
44
- ---
45
-
46
- ## Existing Documentation
47
-
48
- - [README.md](../README.md) - Next.js 标准启动文档
49
- - [CLAUDE.md](../CLAUDE.md) - Claude Code 项目指令
50
-
51
- ---
52
-
53
- ## Technology Stack
54
-
55
- ### Core Framework
56
-
57
- | 技术 | 版本 | 用途 |
58
- |------|------|------|
59
- | Next.js | 16.1.1 | React 框架(App Router)|
60
- | React | 19.2.3 | UI 库(RSC enabled)|
61
- | TypeScript | 5.x | 类型系统(strict mode)|
62
-
63
- ### Styling & Components
64
-
65
- | 技术 | 版本 | 用途 |
66
- |------|------|------|
67
- | Tailwind CSS | 4.x | 实用优先的 CSS 框架 |
68
- | Shadcn/ui | 3.6.2 | 组件系统 |
69
- | Radix UI | 1.4.3 | 无障碍基础组件 |
70
- | Base UI | 1.0.0 | React 基础组件 |
71
- | Lucide React | 0.562.0 | 图标库 |
72
-
73
- ---
74
-
75
- ## Repository Structure
76
-
77
- ```
78
- echo/
79
- ├── app/ # Next.js App Router ⭐
80
- │ ├── layout.tsx # 根布局组件
81
- │ ├── page.tsx # 首页
82
- │ └── globals.css # 全局样式 + Tailwind 配置
83
- ├── components/ # React 组件 ⭐
84
- │ ├── ui/ # Shadcn/ui 基础组件(14 个)
85
- │ ├── component-example.tsx
86
- │ └── example.tsx
87
- ├── lib/ # 工具函数 ⭐
88
- │ └── utils.ts # cn() 函数等
89
- ├── docs/ # 项目文档
90
- ├── public/ # 静态资源
91
- ├── package.json # 项目配置 ⭐
92
- ├── tsconfig.json # TypeScript 配置 ⭐
93
- └── components.json # Shadcn/ui 配置 ⭐
94
- ```
95
-
96
- ---
97
-
98
- ## Import Aliases
99
-
100
- ```typescript
101
- @/components → components/
102
- @/lib → lib/
103
- @/components/ui → components/ui
104
- ```
105
-
106
- ---
107
-
108
- ## Getting Started
109
-
110
- ### Prerequisites
111
-
112
- - Bun (最新版)
113
- - Node.js 20.x
114
-
115
- ### Installation
116
-
117
- ```bash
118
- # 安装依赖
119
- bun install
120
-
121
- # 启动开发服务器
122
- bun dev
123
-
124
- # 访问 http://localhost:3000
125
- ```
126
-
127
- ### Available Scripts
128
-
129
- | 命令 | 说明 |
130
- |------|------|
131
- | `bun dev` | 启动开发服务器 |
132
- | `bun run build` | 生产构建 |
133
- | `bun start` | 启动生产服务器 |
134
- | `bun run lint` | 运行代码检查 |
135
-
136
- ---
137
-
138
- ## Component Library
139
-
140
- ### Shadcn/ui Components (14 个)
141
-
142
- **Form Components:** Input, Textarea, Label, Field, Input Group, Select, Combobox
143
- **Action Components:** Button, Dropdown Menu, Alert Dialog
144
- **Layout Components:** Card, Separator
145
- **Display Components:** Badge
146
-
147
- 详见:[Component Inventory](./component-inventory.md)
148
-
149
- ---
150
-
151
- ## Current Implementation Status
152
-
153
- ### ✅ 已实现
154
-
155
- - Next.js 项目结构
156
- - Shadcn/ui 组件库(14 个基础组件)
157
- - Tailwind CSS 主题配置
158
- - TypeScript 类型检查
159
- - ESLint 代码规范
160
-
161
- ### ❌ 未实现
162
-
163
- - API 路由
164
- - 数据库/数据模型
165
- - 状态管理
166
- - 用户认证
167
- - 测试套件
168
- - CI/CD 配置
169
-
170
- ---
171
-
172
- ## Architecture Notes
173
-
174
- - **路由系统:** Next.js App Router(文件系统路由)
175
- - **渲染模式:** React Server Components + Client Components
176
- - **样式方案:** Tailwind CSS v4(inline config)
177
- - **组件系统:** Shadcn/ui(Radix UI primitives)
178
- - **类型系统:** TypeScript 5.x(strict mode)
179
- - **色彩空间:** OKLCH(感知上均匀的颜色)
180
- - **暗黑模式:** 自定义实现(`.dark` class selector)
181
-
182
- ---
183
-
184
- ## Documentation for AI-Assisted Development
185
-
186
- 当使用 AI 辅助开发时,请参考以下文档:
187
-
188
- 1. **新功能规划** - 参考 [Architecture](./architecture.md) 了解系统设计
189
- 2. **组件开发** - 参考 [Component Inventory](./component-inventory.md) 了解可用组件
190
- 3. **代码规范** - 参考 [Development Guide](./development-guide.md) 了解开发流程
191
- 4. **项目结构** - 参考 [Source Tree Analysis](./source-tree-analysis.md) 了解代码组织
192
-
193
- ---
194
-
195
- ## Project Status
196
-
197
- **阶段:** 初始化/脚手架
198
- **最后更新:** 2025-12-31
199
-
200
- 项目处于早期开发阶段,已建立基础架构和开发环境。
201
-
202
- ---
203
-
204
- ## BMad Method Workflow
205
-
206
- 本项目使用 BMad Method 工作流进行规划。
207
-
208
- **工作流状态:** `_bmad-output/planning-artifacts/bmm-workflow-status.yaml`
209
-
210
- **下一步:** document-project → brainstorm-project → PRD
211
-
212
- ---
213
-
214
- *此文档由 BMad Document Project 工作流自动生成*
@@ -1,94 +0,0 @@
1
- # Echo Business Logic Chain
2
-
3
- ## Registration and Organization Bootstrap
4
- - Register user -> create organization -> add admin member -> create profile
5
- - Entry: app/api/auth/register/handler.ts
6
- - Models: user, organizations, organization_members, user_profiles
7
-
8
- ## Organization and Membership
9
- - Create organization (admin-only)
10
- - Manage members (remove, change role, keep at least one admin)
11
- - Invitations (admin-only, email invite, token expiry)
12
- - Entry: app/api/organizations/handler.ts
13
- - Entry: app/api/organizations/[orgId]/members/[memberId]/handler.ts
14
- - Entry: app/api/organizations/[orgId]/invitations/handler.ts
15
- - Models: organizations, organization_members, invitations
16
-
17
- ## Organization Settings (Portal/Widget)
18
- - Read/update portal config for organization
19
- - Widget config resolves from organization_settings with URL overrides
20
- - Entry: lib/services/portal-settings.ts
21
- - Entry: app/widget/[organizationId]/page.tsx
22
- - Models: organization_settings
23
-
24
- ## Feedback Lifecycle
25
- - Create feedback (validation, optional submit-on-behalf, auto-classify)
26
- - List feedback (filters, pagination, vote count)
27
- - Get feedback detail (attachments, votes, status history)
28
- - Update status (status_history append + notify)
29
- - Soft delete feedback
30
- - Entry: app/api/feedback/route.ts
31
- - Entry: app/api/feedback/handler.ts
32
- - Entry: app/api/feedback/[id]/route.ts
33
- - Entry: lib/feedback/get-feedback-by-id.ts
34
- - Models: feedback, status_history, attachments, votes
35
-
36
- ## Comments
37
- - Auth user comment (internal allowed for org members)
38
- - Guest comment (public only, guest token cookie)
39
- - Notify feedback submitter for public comments
40
- - Entry: app/api/feedback/[id]/comments/route.ts
41
- - Models: comments
42
-
43
- ## Votes
44
- - Vote add/remove with visitorId or userId
45
- - Entry: app/api/feedback/[id]/vote/route.ts
46
- - Models: votes
47
-
48
- ## Tags
49
- - Suggest tags from AI
50
- - Apply tags to feedback
51
- - Sync predefined tag into tags table
52
- - Entry: app/api/feedback/[id]/suggest-tags/route.ts
53
- - Entry: app/api/tags/sync/route.ts
54
- - Models: tags, feedback_tags
55
-
56
- ## AI Processing
57
- - Async classification, tag suggestions, duplicate detection
58
- - Persist ai_processing_results and duplicate_feedback
59
- - Update feedback processingStatus/processedAt
60
- - Entry: lib/workers/feedback-processor.ts
61
- - Entry: app/api/feedback/[id]/processing-status/route.ts
62
- - Models: ai_processing_results, duplicate_feedback, feedback
63
-
64
- ## Notifications
65
- - Status change -> notify submitter
66
- - Public comment -> notify submitter (except author)
67
- - Email delivery + notification status updates
68
- - Entry: lib/services/notifications/index.ts
69
- - Models: notifications, notification_preferences
70
-
71
- ## Webhooks
72
- - CRUD webhooks for organization
73
- - Event delivery with signature, retries, and webhook_events tracking
74
- - Entry: app/api/webhooks/route.ts
75
- - Entry: app/api/webhooks/[webhookId]/route.ts
76
- - Entry: lib/webhooks/sender.ts
77
- - Entry: lib/webhooks/retry.ts
78
- - Models: webhooks, webhook_events
79
-
80
- ## GitHub Integration
81
- - Configure integration and webhook secret
82
- - Sync feedback to GitHub issue
83
- - Sync issue state back to feedback status
84
- - Entry: app/api/integrations/github/route.ts
85
- - Entry: lib/services/github-sync.ts
86
- - Entry: app/api/webhooks/github/route.ts
87
- - Models: github_integrations, feedback
88
-
89
- ## API Keys
90
- - Create/list/toggle/delete API keys
91
- - Verify API key and attach org context
92
- - Entry: lib/services/api-keys.ts
93
- - Entry: lib/middleware/api-key.ts
94
- - Models: api_keys