@allbluecn/web-app 0.19.4 → 0.20.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.
- package/LICENSE +661 -0
- package/package.json +35 -37
- package/public/fonts/Trap-font/Trap-Black.otf +0 -0
- package/public/fonts/Trap-font/Trap-Bold.otf +0 -0
- package/public/fonts/Trap-font/Trap-ExtraBold.otf +0 -0
- package/public/fonts/Trap-font/Trap-Light.otf +0 -0
- package/public/fonts/Trap-font/Trap-Medium.otf +0 -0
- package/public/fonts/Trap-font/Trap-Regular.otf +0 -0
- package/public/fonts/Trap-font/Trap-SemiBold.otf +0 -0
- package/public/fonts/buttersans-Rounded.otf +0 -0
- package/src/components/bug/__tests__/board-subgroups.test.tsx +1 -1
- package/src/components/bug/__tests__/board-view.test.tsx +1 -1
- package/src/components/bug/__tests__/comment-reactions.test.tsx +1 -1
- package/src/components/bug/__tests__/create-bug-dialog.test.tsx +2 -2
- package/src/components/bug/__tests__/filters-compat.test.tsx +1 -1
- package/src/components/bug/__tests__/fix-request-race.test.tsx +1 -1
- package/src/components/bug/__tests__/peek-modes.test.tsx +1 -1
- package/src/components/bug/__tests__/use-paged-bug-groups.test.tsx +1 -1
- package/src/components/bug/__tests__/view-type.test.tsx +1 -1
- package/src/components/bug/bug-list-view.tsx +2 -2
- package/src/components/bug/bug-toolbar.tsx +1 -1
- package/src/components/bug/create-bug-dialog.tsx +3 -3
- package/src/components/bug/detail/__tests__/activity-timeline.test.tsx +1 -1
- package/src/components/bug/detail/__tests__/bug-detail-collab.test.tsx +1 -1
- package/src/components/bug/detail/__tests__/repro-report-card.test.tsx +1 -1
- package/src/components/bug/detail/activity-tabs.tsx +1 -1
- package/src/components/bug/detail/activity-timeline.tsx +1 -1
- package/src/components/bug/detail/bug-detail-body.tsx +3 -3
- package/src/components/bug/detail/comment-input.tsx +1 -1
- package/src/components/bug/detail/comment-item.tsx +1 -1
- package/src/components/bug/detail/comment-reactions.tsx +1 -1
- package/src/components/bug/detail/comment-thread.tsx +1 -1
- package/src/components/bug/detail/props-section.tsx +2 -2
- package/src/components/bug/detail/repro-report-card.tsx +1 -1
- package/src/components/bug/detail/reproduce-steps-view.tsx +1 -1
- package/src/components/bug/display/use-paged-bug-groups.ts +2 -2
- package/src/components/bug/filters/field-configs.tsx +1 -1
- package/src/components/bug/inline-editors/assignee-editor.tsx +1 -1
- package/src/components/bug/peek-panel.tsx +2 -2
- package/src/components/bug/reproduce-steps-editor.tsx +1 -1
- package/src/components/bug/story-bugs-panel.tsx +2 -1
- package/src/components/bug/views/board-view.tsx +2 -2
- package/src/components/bug/views/bug-list/batch-toolbar.tsx +1 -1
- package/src/components/bug/views/bug-list/group.tsx +1 -1
- package/src/components/bug/views/bug-list/index.tsx +1 -1
- package/src/components/bug/views/bug-list/inline-bug-creator.tsx +1 -1
- package/src/components/bug/views/bug-list/row.tsx +2 -2
- package/src/components/bug/views/create-view-dialog.tsx +1 -1
- package/src/components/iteration/iteration-progress-bar.tsx +2 -2
- package/src/components/knowledge/public/legal-compliance-editor.tsx +1 -1
- package/src/components/layout/sidebar-03/nav-knowledge.tsx +1 -1
- package/src/components/layout/sidebar-03/nav-workspace.tsx +1 -1
- package/src/components/shared-kit/list-kit/kanban/__tests__/instance-key.test.ts +1 -1
- package/src/components/story/__tests__/constants.test.ts +1 -1
- package/src/components/story/__tests__/dependency-type-badge.test.ts +1 -1
- package/src/components/story/__tests__/peek-panel-patch-sync.test.tsx +1 -1
- package/src/components/story/__tests__/story-list-view-peek-sync.test.tsx +1 -1
- package/src/components/story/ai/story-ai-panel.tsx +1 -1
- package/src/components/story/ai/story-ai-preview-list.tsx +2 -2
- package/src/components/story/columns.tsx +2 -2
- package/src/components/story/create-story-dialog.tsx +4 -4
- package/src/components/story/detail/__tests__/activity-timeline.test.tsx +1 -1
- package/src/components/story/detail/__tests__/associated-attachments-panel.test.tsx +1 -1
- package/src/components/story/detail/__tests__/story-collab.test.tsx +1 -1
- package/src/components/story/detail/activity-tabs.tsx +1 -1
- package/src/components/story/detail/activity-timeline.tsx +2 -2
- package/src/components/story/detail/comment-input.tsx +1 -1
- package/src/components/story/detail/comment-item.tsx +1 -1
- package/src/components/story/detail/comment-thread.tsx +1 -1
- package/src/components/story/detail/reaction-bar.tsx +1 -1
- package/src/components/story/detail/story-detail-body.tsx +4 -4
- package/src/components/story/detail/story-detail-toolbar/associated-attachments-panel.tsx +2 -2
- package/src/components/story/detail/story-detail-toolbar/children.tsx +1 -1
- package/src/components/story/detail/story-detail-toolbar/dependency-panel.tsx +3 -3
- package/src/components/story/detail/story-detail-toolbar/index.tsx +8 -8
- package/src/components/story/detail/story-detail-toolbar/related-test-cases.tsx +2 -2
- package/src/components/story/detail/story-properties.tsx +2 -2
- package/src/components/story/display/__tests__/flatten-story-groups.test.ts +1 -1
- package/src/components/story/display/__tests__/group-fields.test.ts +1 -1
- package/src/components/story/display/__tests__/group-resolver.test.ts +2 -2
- package/src/components/story/display/__tests__/order-resolver.test.ts +1 -1
- package/src/components/story/display/__tests__/use-grouped-stories.test.ts +1 -1
- package/src/components/story/display/__tests__/use-paged-story-groups.test.ts +1 -1
- package/src/components/story/display/flatten-story-groups.ts +1 -1
- package/src/components/story/display/group-fields.ts +2 -2
- package/src/components/story/display/group-resolver.tsx +2 -2
- package/src/components/story/display/order-resolver.ts +2 -2
- package/src/components/story/display/types.ts +1 -1
- package/src/components/story/display/use-grouped-stories.ts +1 -1
- package/src/components/story/display/use-paged-story-groups.ts +2 -2
- package/src/components/story/entity-overlay.ts +24 -0
- package/src/components/story/filters/field-configs.tsx +2 -2
- package/src/components/story/inline-editors/assignee-editor.tsx +1 -1
- package/src/components/story/inline-editors/dependency-type-select.tsx +1 -1
- package/src/components/story/inline-editors/parent-story-editor.tsx +2 -2
- package/src/components/story/inline-editors/priority-editor.tsx +2 -2
- package/src/components/story/inline-editors/state-editor.tsx +2 -2
- package/src/components/story/inline-editors/story-select-dialog.tsx +2 -2
- package/src/components/story/peek-panel.tsx +3 -3
- package/src/components/story/priority-icon.tsx +2 -2
- package/src/components/story/relations/__tests__/attachment-manage-dialog.test.tsx +1 -1
- package/src/components/story/relations/__tests__/design-select-dialog.test.tsx +1 -1
- package/src/components/story/relations/__tests__/knowledge-select-dialog.test.tsx +1 -1
- package/src/components/story/relations/__tests__/link-manage-dialog.test.tsx +1 -1
- package/src/components/story/relations/attachment-manage-dialog.tsx +4 -4
- package/src/components/story/relations/design-select-dialog.tsx +2 -2
- package/src/components/story/relations/knowledge-select-dialog.tsx +2 -2
- package/src/components/story/relations/link-manage-dialog.tsx +2 -2
- package/src/components/story/relations/story-ref-row.tsx +3 -3
- package/src/components/story/story-list-table.tsx +1 -1
- package/src/components/story/story-list-view.tsx +1 -1
- package/src/components/story/story-toolbar.tsx +1 -1
- package/src/components/story/views/__tests__/calendar-view.test.tsx +1 -1
- package/src/components/story/views/__tests__/kanban-drop-subgroup.test.ts +1 -1
- package/src/components/story/views/__tests__/kanban-peek-sync.test.tsx +2 -2
- package/src/components/story/views/__tests__/kanban-view-membership-sync.test.tsx +1 -1
- package/src/components/story/views/__tests__/timeline-view.test.tsx +1 -1
- package/src/components/story/views/calendar/__tests__/mappers.test.ts +1 -1
- package/src/components/story/views/calendar/mappers.ts +1 -1
- package/src/components/story/views/calendar-view.tsx +1 -1
- package/src/components/story/views/create-view-dialog.tsx +1 -1
- package/src/components/story/views/kanban-view.tsx +2 -2
- package/src/components/story/views/story-list/batch-preview-dialog.tsx +2 -2
- package/src/components/story/views/story-list/batch-toolbar.tsx +2 -2
- package/src/components/story/views/story-list/group.tsx +2 -2
- package/src/components/story/views/story-list/index.tsx +2 -2
- package/src/components/story/views/story-list/inline-story-creator.tsx +2 -2
- package/src/components/story/views/story-list/row.tsx +2 -2
- package/src/components/story/views/story-list/use-flat-rows.ts +1 -1
- package/src/components/story/views/timeline/__tests__/mappers.test.ts +2 -2
- package/src/components/story/views/timeline/mappers.ts +2 -2
- package/src/components/story/views/timeline/use-date-commit.ts +1 -1
- package/src/components/story/views/timeline-view.tsx +2 -2
- package/src/components/testcase/__tests__/case-row.test.tsx +1 -1
- package/src/components/testcase/__tests__/create-dialog-scope.test.tsx +1 -1
- package/src/components/testcase/__tests__/display-options.test.tsx +1 -1
- package/src/components/testcase/__tests__/export-entry.test.tsx +1 -1
- package/src/components/testcase/__tests__/list-view.test.tsx +1 -1
- package/src/components/testcase/__tests__/step-editor.test.tsx +1 -1
- package/src/components/testcase/__tests__/toolbar.test.tsx +1 -1
- package/src/components/testcase/create-testcase-dialog.tsx +1 -1
- package/src/components/testcase/detail/case-detail-body.tsx +1 -1
- package/src/components/testcase/detail/properties.tsx +1 -1
- package/src/components/testcase/display/display-dropdown.tsx +2 -2
- package/src/components/testcase/display/use-testcase-display-options.ts +1 -1
- package/src/components/testcase/filters/field-configs.tsx +1 -1
- package/src/components/testcase/inline-editors/assignee-editor.tsx +1 -1
- package/src/components/testcase/list/case-row.tsx +1 -1
- package/src/components/testcase/list/grouped-list.tsx +1 -1
- package/src/components/testcase/list-view.tsx +2 -2
- package/src/components/testcase/runs/convert-bug-button.tsx +2 -2
- package/src/components/testcase/testcase-toolbar.tsx +2 -2
- package/src/components/testcase/views/batch-toolbar.tsx +1 -1
- package/src/components/testcase/views/board-view.tsx +2 -2
- package/src/lib/changelog/sdk-versions.ts +2 -2
- package/src/lib/collections/knowledge/knowledge-bases-collection.ts +2 -1
- package/src/lib/collections/query-keys.ts +18 -0
- package/src/lib/collections/reference/users-brief-collection.ts +2 -1
- package/src/lib/collections/reference/workspaces-collection.ts +2 -1
- package/src/lib/story/__tests__/activity-grouper.test.ts +1 -1
- package/src/lib/story/activity-grouper.ts +1 -1
- package/src/paraglide/.gitignore +3 -0
- package/src/paraglide/.prettierignore +3 -0
- package/src/paraglide/README.md +162 -0
- package/src/paraglide/messages/_index.js +88192 -0
- package/src/paraglide/messages/en.js +28230 -0
- package/src/paraglide/messages/zh.js +28228 -0
- package/src/paraglide/messages.js +4 -0
- package/src/paraglide/registry.js +46 -0
- package/src/paraglide/runtime.js +2311 -0
- package/src/paraglide/server.js +294 -0
- package/src/routes/_nav/bugs/$bugId/route.lazy.tsx +2 -2
- package/src/routes/_nav/projects/$projectId/iterations/$iterationId/route.lazy.tsx +1 -1
- package/src/routes/_nav/route.tsx +1 -2
- package/src/routes/_nav/stories/$storyId/route.lazy.tsx +2 -2
- package/src/routes/_nav/stories/$storyId/route.tsx +1 -1
- package/src/routes/api/design/prototype/__tests__/route.test.ts +4 -1
- package/src/server/__tests__/task-executor.test.ts +7 -0
- package/src/server/serverFns/__tests__/legal-code-canonical.test.ts +169 -0
- package/src/server/serverFns/__tests__/story-tree.test.ts +0 -1
- package/src/server/serverFns/__tests__/update-bug-guard.test.ts +1 -1
- package/src/server/serverFns/bug/__tests__/bug-comments.test.ts +1 -1
- package/src/server/serverFns/bug/__tests__/bug-groups.test.ts +1 -1
- package/src/server/serverFns/bug/bug-activities.ts +2 -2
- package/src/server/serverFns/bug/bug-comments.ts +3 -3
- package/src/server/serverFns/bug/bug-crud/detail-select.ts +1 -1
- package/src/server/serverFns/bug/bug-crud/detail.ts +2 -2
- package/src/server/serverFns/bug/bug-crud.ts +1 -1
- package/src/server/serverFns/bug/bug-group-query.ts +1 -1
- package/src/server/serverFns/bug/bug-groups.ts +2 -2
- package/src/server/serverFns/bug/bug-story-utils.ts +1 -1
- package/src/server/serverFns/iteration/iteration-crud.ts +1 -1
- package/src/server/serverFns/knowledge/public/legal/create.ts +3 -0
- package/src/server/serverFns/knowledge/public/legal/update.ts +8 -8
- package/src/server/serverFns/story/link-preview.ts +3 -2
- package/src/server/serverFns/story/story-children.ts +1 -1
- package/src/server/serverFns/story/story-comments.ts +1 -1
- package/src/server/serverFns/story/story-crud/bulk.ts +1 -1
- package/src/server/serverFns/story/story-crud.ts +1 -1
- package/src/server/serverFns/story/story-dependencies.ts +1 -1
- package/src/server/serverFns/story/story-groups.ts +1 -1
- package/src/server/serverFns/testcase/__tests__/testcase-groups.test.ts +1 -1
- package/src/server/serverFns/testcase/testcase-board.ts +1 -1
- package/src/server/serverFns/testcase/testcase-crud.ts +1 -1
- package/src/server/serverFns/testcase/testcase-display-options.ts +1 -1
- package/src/server/serverFns/testcase/testcase-filter-views.ts +1 -1
- package/src/server/serverFns/testcase/types.ts +1 -1
- package/src/server/story/types.ts +2 -2
- package/src/shared/bug/__tests__/constants.test.ts +1 -1
- package/src/{components → shared}/bug/types.ts +4 -3
- package/src/{components → shared}/story/constants.ts +1 -1
- package/src/{components → shared}/story/types.ts +1 -7
- /package/src/{components/testcase/display → shared/testcase}/field-configs.ts +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@allbluecn/web-app",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"license": "AGPL-3.0-or-later",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -57,42 +57,11 @@
|
|
|
57
57
|
"publishConfig": {
|
|
58
58
|
"access": "public"
|
|
59
59
|
},
|
|
60
|
-
"packageManager": "pnpm@12.4.1",
|
|
61
|
-
"scripts": {
|
|
62
|
-
"dev": "vite --port 3000",
|
|
63
|
-
"build": "vite build",
|
|
64
|
-
"start": "vite preview",
|
|
65
|
-
"build:cf": "DEPLOY_TARGET=cloudflare vite build",
|
|
66
|
-
"deploy:cf": "pnpm build:cf && node ../../scripts/check-cf-worker-size.mjs . dist/server/wrangler.json && wrangler deploy -c dist/server/wrangler.json",
|
|
67
|
-
"preview:cf": "pnpm build:cf && wrangler dev -c dist/server/wrangler.json --test-scheduled --port 8787",
|
|
68
|
-
"prelint": "node scripts/check-no-use-client.mjs",
|
|
69
|
-
"lint": "eslint",
|
|
70
|
-
"test": "vitest",
|
|
71
|
-
"test:ui": "vitest --ui",
|
|
72
|
-
"test:run": "vitest run --project unit --project integration",
|
|
73
|
-
"pretest:coverage": "pnpm assemble",
|
|
74
|
-
"test:coverage": "vitest run --project unit --project integration --coverage.enabled",
|
|
75
|
-
"setup": "pnpm --filter @allbluecn/database generate && pnpm --filter @allbluecn/database migrate:dev",
|
|
76
|
-
"check:features": "tsx scripts/check-feature-keys.ts",
|
|
77
|
-
"check:no-use-client": "node scripts/check-no-use-client.mjs",
|
|
78
|
-
"assemble": "TSX_TSCONFIG_PATH=apps/web/tsconfig.json pnpm -w exec tsx packages/kernel/src/bin.ts --profile oss --assemble --app-dir apps/web",
|
|
79
|
-
"predev": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
80
|
-
"prebuild": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
81
|
-
"pretest": "pnpm assemble",
|
|
82
|
-
"pretest:run": "pnpm assemble",
|
|
83
|
-
"prepublishOnly": "node scripts/check-sdk-versions.mjs",
|
|
84
|
-
"typecheck": "node scripts/i18n/compile.mjs && tsc --noEmit",
|
|
85
|
-
"test:unit": "vitest run --project unit",
|
|
86
|
-
"test:visual": "vitest run --project vrt",
|
|
87
|
-
"test:bench": "vitest bench --project \"integration (bench)\"",
|
|
88
|
-
"perf:ttft": "node ../../scripts/perf/ttft-probe.mjs",
|
|
89
|
-
"security:zap": "bash ../../scripts/security/zap-local.sh"
|
|
90
|
-
},
|
|
91
60
|
"dependencies": {
|
|
92
61
|
"@ag-ui/core": "1.0.0",
|
|
93
|
-
"@allbluecn/collab-core": "
|
|
94
|
-
"@allbluecn/database": "
|
|
95
|
-
"@allbluecn/kernel": "
|
|
62
|
+
"@allbluecn/collab-core": "0.2.0",
|
|
63
|
+
"@allbluecn/database": "0.10.0",
|
|
64
|
+
"@allbluecn/kernel": "0.10.2",
|
|
96
65
|
"@ariakit/react": "^0.4.28",
|
|
97
66
|
"@auth/core": "^0.41.2",
|
|
98
67
|
"@auth/prisma-adapter": "^2.11.2",
|
|
@@ -317,7 +286,7 @@
|
|
|
317
286
|
"typescript": "~6.0.3",
|
|
318
287
|
"typescript-eslint": "^8.72.0",
|
|
319
288
|
"vite": "^8.3.3",
|
|
320
|
-
"vitest": "
|
|
289
|
+
"vitest": "^5.0.5",
|
|
321
290
|
"vitest-browser-react": "2.3.0",
|
|
322
291
|
"wrangler": "^4.99.0",
|
|
323
292
|
"y-protocols": "1.0.7"
|
|
@@ -328,5 +297,34 @@
|
|
|
328
297
|
},
|
|
329
298
|
"optionalDependencies": {
|
|
330
299
|
"@tauri-apps/api": "^2.11.1"
|
|
300
|
+
},
|
|
301
|
+
"scripts": {
|
|
302
|
+
"dev": "vite --port 3000",
|
|
303
|
+
"build": "vite build",
|
|
304
|
+
"start": "vite preview",
|
|
305
|
+
"build:cf": "DEPLOY_TARGET=cloudflare vite build",
|
|
306
|
+
"deploy:cf": "pnpm build:cf && node ../../scripts/check-cf-worker-size.mjs . dist/server/wrangler.json && wrangler deploy -c dist/server/wrangler.json",
|
|
307
|
+
"preview:cf": "pnpm build:cf && wrangler dev -c dist/server/wrangler.json --test-scheduled --port 8787",
|
|
308
|
+
"prelint": "node scripts/check-no-use-client.mjs",
|
|
309
|
+
"lint": "eslint",
|
|
310
|
+
"test": "vitest",
|
|
311
|
+
"test:ui": "vitest --ui",
|
|
312
|
+
"test:run": "vitest run --project unit --project integration",
|
|
313
|
+
"pretest:coverage": "pnpm assemble",
|
|
314
|
+
"test:coverage": "vitest run --project unit --project integration --coverage.enabled",
|
|
315
|
+
"setup": "pnpm --filter @allbluecn/database generate && pnpm --filter @allbluecn/database migrate:dev",
|
|
316
|
+
"check:features": "tsx scripts/check-feature-keys.ts",
|
|
317
|
+
"check:no-use-client": "node scripts/check-no-use-client.mjs",
|
|
318
|
+
"assemble": "TSX_TSCONFIG_PATH=apps/web/tsconfig.json pnpm -w exec tsx packages/kernel/src/bin.ts --profile oss --assemble --app-dir apps/web",
|
|
319
|
+
"predev": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
320
|
+
"prebuild": "pnpm assemble && node scripts/check-sdk-versions.mjs",
|
|
321
|
+
"pretest": "pnpm assemble",
|
|
322
|
+
"pretest:run": "pnpm assemble",
|
|
323
|
+
"typecheck": "node scripts/i18n/compile.mjs && tsc --noEmit",
|
|
324
|
+
"test:unit": "vitest run --project unit",
|
|
325
|
+
"test:visual": "vitest run --project vrt",
|
|
326
|
+
"test:bench": "vitest bench --project \"integration (bench)\"",
|
|
327
|
+
"perf:ttft": "node ../../scripts/perf/ttft-probe.mjs",
|
|
328
|
+
"security:zap": "bash ../../scripts/security/zap-local.sh"
|
|
331
329
|
}
|
|
332
|
-
}
|
|
330
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
toGroupFieldPatch,
|
|
65
65
|
} from "../views/board-view";
|
|
66
66
|
import type { BugBoardViewProps } from "../views/board-view";
|
|
67
|
-
import type { BugListItem } from "
|
|
67
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
68
68
|
|
|
69
69
|
afterEach(() => {
|
|
70
70
|
cleanup();
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
toGroupFieldPatch,
|
|
59
59
|
} from "../views/board-view";
|
|
60
60
|
import type { BugBoardViewProps } from "../views/board-view";
|
|
61
|
-
import type { BugListItem } from "
|
|
61
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
62
62
|
import { STATE_COLOR } from "@/shared/bug/constants";
|
|
63
63
|
|
|
64
64
|
afterEach(() => {
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
// 的 JSX 调用保证(本仓 tsc + 本测试共同锁住组件存在性)。
|
|
28
28
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
29
29
|
import { act, cleanup, fireEvent, render, screen, within } from "@testing-library/react";
|
|
30
|
-
import type { ReactionGroup } from "@/
|
|
30
|
+
import type { ReactionGroup } from "@/shared/story/types";
|
|
31
31
|
|
|
32
32
|
// ---------------------------------------------------------------------------
|
|
33
33
|
// mock(vi.mock 提升:真实 serverFn / toast / emoji-picker-react 均不参与)
|
|
@@ -55,8 +55,8 @@ vi.mock("@/components/tiptap/notion-like", () => ({
|
|
|
55
55
|
|
|
56
56
|
import { CreateBugDialog } from "../create-bug-dialog";
|
|
57
57
|
import { ReproduceStepsEditor } from "../reproduce-steps-editor";
|
|
58
|
-
import type { ReproduceSteps } from "
|
|
59
|
-
import type { UserBrief } from "@/
|
|
58
|
+
import type { ReproduceSteps } from "@/shared/bug/types";
|
|
59
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
60
60
|
|
|
61
61
|
const USERS: UserBrief[] = [
|
|
62
62
|
{ id: "u1", username: "alice", email: "a@test.dev", avatarConfig: null, bgShape: null, bgColor: null },
|
|
@@ -26,7 +26,7 @@ import { describe, it, expect, afterEach } from "vitest";
|
|
|
26
26
|
import { render, screen, cleanup } from "@testing-library/react";
|
|
27
27
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
28
28
|
import { AppliedFilters, BugFilterToggle, type FilterCondition } from "../filters";
|
|
29
|
-
import type { UserBrief } from "@/
|
|
29
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
30
30
|
|
|
31
31
|
const FIXTURE: FilterCondition[] = [
|
|
32
32
|
{ id: "bfc_1", property: "title", operator: "contains", value: "超时" },
|
|
@@ -102,7 +102,7 @@ vi.mock("@/components/tiptap/notion-like", () => ({
|
|
|
102
102
|
import { BugDetailBody } from "../detail/bug-detail-body";
|
|
103
103
|
import { BugPanelHeader } from "../bug-panel-header";
|
|
104
104
|
import { BugBatchToolbar } from "../views/bug-list/batch-toolbar";
|
|
105
|
-
import type { BugDetail } from "
|
|
105
|
+
import type { BugDetail } from "@/shared/bug/types";
|
|
106
106
|
|
|
107
107
|
const bugRow = (over: Partial<BugDetail> = {}): BugDetail => ({
|
|
108
108
|
id: "bg-1",
|
|
@@ -104,7 +104,7 @@ vi.mock("@tanstack/react-virtual", async (importOriginal) => {
|
|
|
104
104
|
|
|
105
105
|
import { BugPeekPanel } from "../peek-panel";
|
|
106
106
|
import { BugListView } from "../bug-list-view";
|
|
107
|
-
import type { BugDetail } from "
|
|
107
|
+
import type { BugDetail } from "@/shared/bug/types";
|
|
108
108
|
import { PEEK_DOCK_SLOT_ID } from "@/lib/peek-dock";
|
|
109
109
|
|
|
110
110
|
const baseBug: BugDetail = {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
19
19
|
import { renderHook, waitFor, act, render, screen, fireEvent, cleanup } from "@testing-library/react";
|
|
20
|
-
import type { BugListItem } from "
|
|
20
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
21
21
|
import { DEFAULT_BUG_DISPLAY_OPTIONS } from "@/shared/bug/display-types";
|
|
22
22
|
import type { PagedBugsArgs } from "../display/use-paged-bug-groups";
|
|
23
23
|
|
|
@@ -81,7 +81,7 @@ import { BugListView } from "../bug-list-view";
|
|
|
81
81
|
import { isBugView } from "../views/view-types";
|
|
82
82
|
import { BugListRow } from "../views/bug-list/row";
|
|
83
83
|
import { BugBoardView } from "../views/board-view";
|
|
84
|
-
import type { BugListItem } from "
|
|
84
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
85
85
|
import type { ReorderEntry } from "@/components/shared-kit/list-kit/kanban/drop-commit";
|
|
86
86
|
|
|
87
87
|
afterEach(() => {
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
deleteBugViewFn,
|
|
32
32
|
reorderBugsFn,
|
|
33
33
|
} from "@/server/serverFns/bug";
|
|
34
|
-
import type { UserBrief } from "@/
|
|
34
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
35
35
|
import { usePagedBugGroups, type PagedBugGroupNode } from "./display/use-paged-bug-groups";
|
|
36
36
|
import { useBugDisplayOptions } from "./display/use-bug-display-options";
|
|
37
37
|
import type { BugGroupKey } from "@/shared/bug/display-types";
|
|
@@ -42,7 +42,7 @@ import type { ReorderEntry } from "@/components/shared-kit/list-kit/kanban/drop-
|
|
|
42
42
|
import { manualOrderSwitchPatch } from "@/components/shared-kit/list-kit/kanban/manual-order";
|
|
43
43
|
// 纯函数跨层复用(bug-group-query 运行时零服务端依赖,use-paged-bug-groups 同款先例)
|
|
44
44
|
import { BUG_STATE_GROUP_KEYS, BUG_SEVERITY_GROUP_KEYS } from "@/server/serverFns/bug/bug-group-query";
|
|
45
|
-
import type { BugListItem } from "
|
|
45
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
46
46
|
import { CreateBugDialog } from "./create-bug-dialog";
|
|
47
47
|
import { BugPeekPanel } from "./peek-panel";
|
|
48
48
|
import { CreateViewDialog, type CreateViewDialogPayload } from "./views/create-view-dialog";
|
|
@@ -58,7 +58,7 @@ import { BugViewSwitcher } from "./views/view-switcher";
|
|
|
58
58
|
import { ViewSelectorButton } from "./views/view-selector-button";
|
|
59
59
|
import type { BugView, BugViewModel } from "./views/view-types";
|
|
60
60
|
import type { BugDisplayOptions } from "@/shared/bug/display-types";
|
|
61
|
-
import type { UserBrief } from "@/
|
|
61
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
62
62
|
import { m } from "@/paraglide/messages.js";
|
|
63
63
|
import { getLocale } from "@/paraglide/runtime.js";
|
|
64
64
|
import { useToolbarSearch } from "@/hooks/use-toolbar-search";
|
|
@@ -27,11 +27,11 @@ import { toast } from "@/components/ui/toast";
|
|
|
27
27
|
import { createBugFn } from "@/server/serverFns/bug";
|
|
28
28
|
import { ensureBuiltinProjectFn } from "@/server/serverFns/project";
|
|
29
29
|
import type { BugState, BugSeverity, BugSource } from "@/shared/bug/constants";
|
|
30
|
-
import type { UserBrief } from "@/
|
|
31
|
-
import { serializeStoryDescription } from "@/
|
|
30
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
31
|
+
import { serializeStoryDescription } from "@/shared/story/types";
|
|
32
32
|
import { StateEditor, SeverityEditor, AssigneeEditor, LabelsEditor } from "./inline-editors";
|
|
33
33
|
import { ReproduceStepsEditor } from "./reproduce-steps-editor";
|
|
34
|
-
import type { BugListItem, ReproduceSteps } from "
|
|
34
|
+
import type { BugListItem, ReproduceSteps } from "@/shared/bug/types";
|
|
35
35
|
import { NotionDocEditor } from "@/components/tiptap/notion-like";
|
|
36
36
|
import { errorMessage } from "@/lib/toast-error";
|
|
37
37
|
import { m } from "@/paraglide/messages.js";
|
|
@@ -26,7 +26,7 @@ import { describe, it, expect, afterEach, vi } from "vitest";
|
|
|
26
26
|
import { render, cleanup } from "@testing-library/react";
|
|
27
27
|
import { m } from "@/paraglide/messages.js";
|
|
28
28
|
import { ACTIVITY_LABEL, STATE_LABEL } from "@/shared/bug/constants";
|
|
29
|
-
import type { BugActivityItem, BugCommentWithReplies } from "
|
|
29
|
+
import type { BugActivityItem, BugCommentWithReplies } from "@/shared/bug/types";
|
|
30
30
|
|
|
31
31
|
vi.mock("@/server/serverFns/bug", () => ({
|
|
32
32
|
listBugActivitiesFn: vi.fn().mockResolvedValue({ items: [], nextCursor: null }),
|
|
@@ -113,7 +113,7 @@ vi.mock("@/components/tiptap/notion-like", () => ({
|
|
|
113
113
|
}));
|
|
114
114
|
|
|
115
115
|
import { BugDetailBody } from "../bug-detail-body";
|
|
116
|
-
import type { BugDetail } from "
|
|
116
|
+
import type { BugDetail } from "@/shared/bug/types";
|
|
117
117
|
|
|
118
118
|
const U = "u-1";
|
|
119
119
|
|
|
@@ -46,7 +46,7 @@ vi.mock("@/components/knowledge/public/markdown-view", () => ({
|
|
|
46
46
|
|
|
47
47
|
import { ReproReportCard } from "../repro-report-card";
|
|
48
48
|
import type { ReproRunItem } from "@/server/serverFns/bug/bug-repro";
|
|
49
|
-
import type { BugDetail } from "
|
|
49
|
+
import type { BugDetail } from "@/shared/bug/types";
|
|
50
50
|
|
|
51
51
|
const T0 = new Date("2026-01-01T00:00:00Z");
|
|
52
52
|
|
|
@@ -24,7 +24,7 @@ import { Button } from "@/components/ui/button";
|
|
|
24
24
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
25
25
|
import { listBugActivitiesFn, listCommentsFn } from "@/server/serverFns/bug";
|
|
26
26
|
import { errorMessage } from "@/lib/toast-error";
|
|
27
|
-
import type { BugActivityItem, BugCommentWithReplies } from "
|
|
27
|
+
import type { BugActivityItem, BugCommentWithReplies } from "@/shared/bug/types";
|
|
28
28
|
import { ActivityTimeline } from "./activity-timeline";
|
|
29
29
|
import { CommentThread } from "./comment-thread";
|
|
30
30
|
import { m } from "@/paraglide/messages.js";
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
import { ArrowRight, Bot, Dot, Sparkles } from "lucide-react";
|
|
22
22
|
import { UserAvatar } from "@/components/shared-kit";
|
|
23
23
|
import { ACTIVITY_LABEL, SEVERITY_LABEL, STATE_LABEL, type BugState, type BugSeverity } from "@/shared/bug/constants";
|
|
24
|
-
import type { BugActivityItem } from "
|
|
24
|
+
import type { BugActivityItem } from "@/shared/bug/types";
|
|
25
25
|
import { m } from "@/paraglide/messages.js";
|
|
26
26
|
import { formatTimestamp } from "@/lib/datetime";
|
|
27
27
|
|
|
@@ -37,9 +37,9 @@ import { toast } from "@/components/ui/toast";
|
|
|
37
37
|
import { requestBugFixFn, updateBugFn } from "@/server/serverFns/bug";
|
|
38
38
|
import { formatTimestamp } from "@/lib/datetime";
|
|
39
39
|
import { SOURCE_LABEL } from "@/shared/bug/constants";
|
|
40
|
-
import type { BugDetail, BugStoryBrief, ReproduceSteps } from "
|
|
41
|
-
import type { UserBrief } from "@/
|
|
42
|
-
import { parseStoryDescription } from "@/
|
|
40
|
+
import type { BugDetail, BugStoryBrief, ReproduceSteps } from "@/shared/bug/types";
|
|
41
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
42
|
+
import { parseStoryDescription } from "@/shared/story/types";
|
|
43
43
|
import { buildRoomName } from "@allbluecn/collab-core/rooms";
|
|
44
44
|
import { useSession } from "@/components/shared-kit/auth/auth-client";
|
|
45
45
|
import { useCollabDoc } from "@/lib/collab/use-collab-doc";
|
|
@@ -23,7 +23,7 @@ import { Textarea } from "@/components/ui/textarea";
|
|
|
23
23
|
import { createCommentFn } from "@/server/serverFns/bug";
|
|
24
24
|
import { toast } from "@/components/ui/toast";
|
|
25
25
|
import { errorMessage } from "@/lib/toast-error";
|
|
26
|
-
import type { BugCommentWithReplies } from "
|
|
26
|
+
import type { BugCommentWithReplies } from "@/shared/bug/types";
|
|
27
27
|
import { m } from "@/paraglide/messages.js";
|
|
28
28
|
|
|
29
29
|
interface CommentInputProps {
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import { deleteCommentFn, updateCommentFn } from "@/server/serverFns/bug";
|
|
34
34
|
import { toast } from "@/components/ui/toast";
|
|
35
35
|
import { errorMessage } from "@/lib/toast-error";
|
|
36
|
-
import type { BugCommentWithReplies } from "
|
|
36
|
+
import type { BugCommentWithReplies } from "@/shared/bug/types";
|
|
37
37
|
import { formatRelative } from "./activity-timeline";
|
|
38
38
|
import { CommentInput } from "./comment-input";
|
|
39
39
|
import { CommentReactions } from "./comment-reactions";
|
|
@@ -28,7 +28,7 @@ import { EmojiPicker } from "@/components/shared-kit/comments/emoji-picker";
|
|
|
28
28
|
import { toast } from "@/components/ui/toast";
|
|
29
29
|
import { toggleBugCommentReactionFn } from "@/server/serverFns/bug";
|
|
30
30
|
import { errorMessage } from "@/lib/toast-error";
|
|
31
|
-
import type { ReactionGroup } from "@/
|
|
31
|
+
import type { ReactionGroup } from "@/shared/story/types";
|
|
32
32
|
import { m } from "@/paraglide/messages.js";
|
|
33
33
|
|
|
34
34
|
/** hover 快捷回应(常用 3 个;完整选择走 picker) */
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
// parentId 组装为多级回复树,本组件只负责渲染 + 回调透传,不再二次建树。
|
|
20
20
|
import { CommentItem } from "./comment-item";
|
|
21
21
|
import { CommentInput } from "./comment-input";
|
|
22
|
-
import type { BugCommentWithReplies } from "
|
|
22
|
+
import type { BugCommentWithReplies } from "@/shared/bug/types";
|
|
23
23
|
import { m } from "@/paraglide/messages.js";
|
|
24
24
|
|
|
25
25
|
interface CommentThreadProps {
|
|
@@ -26,8 +26,8 @@ import { updateBugFn, linkBugToStoryFn, unlinkBugFromStoryFn } from "@/server/se
|
|
|
26
26
|
import { searchStoriesFn } from "@/server/serverFns/story";
|
|
27
27
|
import { useDebouncedValue, SEARCH_DEBOUNCE_MS } from "@/lib/pacer";
|
|
28
28
|
import type { BugState, BugSeverity } from "@/shared/bug/constants";
|
|
29
|
-
import type { BugDetail, BugStoryBrief } from "
|
|
30
|
-
import type { UserBrief } from "@/
|
|
29
|
+
import type { BugDetail, BugStoryBrief } from "@/shared/bug/types";
|
|
30
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
31
31
|
import type { PropsSectionCollabProps } from "./bug-detail-body";
|
|
32
32
|
import { StateEditor, SeverityEditor, AssigneeEditor, LabelsEditor } from "../inline-editors";
|
|
33
33
|
import { m } from "@/paraglide/messages.js";
|
|
@@ -48,7 +48,7 @@ import { REPRO_VERDICT_COLOR, REPRO_VERDICT_LABEL, type BugReproVerdict } from "
|
|
|
48
48
|
import { MarkdownView } from "@/components/knowledge/public/markdown-view";
|
|
49
49
|
import { formatRelative } from "./activity-timeline";
|
|
50
50
|
import { m } from "@/paraglide/messages.js";
|
|
51
|
-
import type { BugDetail } from "
|
|
51
|
+
import type { BugDetail } from "@/shared/bug/types";
|
|
52
52
|
import { toastError, errorMessage } from "@/lib/toast-error";
|
|
53
53
|
|
|
54
54
|
/** confidence 0-1 → 整数百分比(越界钳制,防脏数据渲染 -3% / 140%) */
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// 复现步骤只读视图(规格 §5.4 第 4 分区):结构化步骤列表 + 整体预期/实际对照。
|
|
19
19
|
// SDK 上报无 reproduceSteps 字段时显示「待补充」引导(编辑器接入在后续任务)。
|
|
20
20
|
import { ListOrdered } from "lucide-react";
|
|
21
|
-
import type { ReproduceSteps } from "
|
|
21
|
+
import type { ReproduceSteps } from "@/shared/bug/types";
|
|
22
22
|
import { m } from "@/paraglide/messages.js";
|
|
23
23
|
|
|
24
24
|
interface ReproduceStepsViewProps {
|
|
@@ -29,8 +29,8 @@ import {
|
|
|
29
29
|
// 纯函数跨层复用(任务 4 复审核实运行时零服务端依赖):组内全序比较与 story 客户端
|
|
30
30
|
// compareByOrder 同构,直接引用单一实现避免双份漂移。
|
|
31
31
|
import { compareBugsByOrderKey } from "@/server/serverFns/bug/bug-group-query";
|
|
32
|
-
import type { BugListItem } from "
|
|
33
|
-
import type { UserBrief } from "@/
|
|
32
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
33
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
34
34
|
import type { FilterCondition } from "../filters";
|
|
35
35
|
import { serializeFilters } from "../filters";
|
|
36
36
|
import { BUG_STATES, BUG_SEVERITIES, type BugState, type BugSeverity } from "@/shared/bug/constants";
|
|
@@ -70,7 +70,7 @@ import type {
|
|
|
70
70
|
FilterFieldType,
|
|
71
71
|
} from "@/components/shared-kit/list-kit/filters/types";
|
|
72
72
|
import { cn } from "@/lib/utils";
|
|
73
|
-
import type { UserBrief } from "@/
|
|
73
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
74
74
|
|
|
75
75
|
export { serializeFilters, deserializeFilters, OPERATOR_LABELS, generateConditionId } from "@/components/shared-kit/list-kit/filters";
|
|
76
76
|
export type { FilterOperator, FilterFieldType };
|
|
@@ -20,7 +20,7 @@ import { CircleUser, Search, Check } from "lucide-react";
|
|
|
20
20
|
import { Input } from "@/components/ui/input";
|
|
21
21
|
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
|
|
22
22
|
import { UserAvatar } from "@/components/shared-kit";
|
|
23
|
-
import type { UserBrief } from "@/
|
|
23
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
24
24
|
import { cn } from "@/lib/utils";
|
|
25
25
|
import { InlineTrigger } from "./inline-trigger";
|
|
26
26
|
import { m } from "@/paraglide/messages.js";
|
|
@@ -31,8 +31,8 @@ import { getBugDetailFn, getBugNeighborsFn } from "@/server/serverFns/bug";
|
|
|
31
31
|
import { formatTimestamp } from "@/lib/datetime";
|
|
32
32
|
import { errorMessage } from "@/lib/toast-error";
|
|
33
33
|
import type { BugPatch } from "./display/use-paged-bug-groups";
|
|
34
|
-
import type { BugDetail } from "
|
|
35
|
-
import type { UserBrief } from "@/
|
|
34
|
+
import type { BugDetail } from "@/shared/bug/types";
|
|
35
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
36
36
|
import { BugDetailBody } from "./detail/bug-detail-body";
|
|
37
37
|
import { BugPanelHeader } from "./bug-panel-header";
|
|
38
38
|
import type { PeekMode } from "@/components/shared-kit/peek/peek-mode";
|
|
@@ -19,7 +19,7 @@ import { Plus, Trash2 } from "lucide-react";
|
|
|
19
19
|
import { Button } from "@/components/ui/button";
|
|
20
20
|
import { Input } from "@/components/ui/input";
|
|
21
21
|
import { Textarea } from "@/components/ui/textarea";
|
|
22
|
-
import type { ReproduceSteps, ReproduceStep } from "
|
|
22
|
+
import type { ReproduceSteps, ReproduceStep } from "@/shared/bug/types";
|
|
23
23
|
import { m } from "@/paraglide/messages.js";
|
|
24
24
|
|
|
25
25
|
interface ReproduceStepsEditorProps {
|
|
@@ -55,7 +55,8 @@ import {
|
|
|
55
55
|
} from "@/components/bug/views/bug-list/group-select";
|
|
56
56
|
import { BUG_STATES, BUG_SEVERITIES, BUG_STATE_RANK, type BugState, type BugSeverity } from "@/shared/bug/constants";
|
|
57
57
|
import { UserAvatar } from "@/components/shared-kit";
|
|
58
|
-
import type { UserBrief
|
|
58
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
59
|
+
import type { StoryEntityOverlay } from "@/components/story/entity-overlay";
|
|
59
60
|
import type { AvatarConfig } from "@allbluecn/kernel";
|
|
60
61
|
import { BugSelectDialog } from "@/components/bug/select-bug-dialog";
|
|
61
62
|
import { m } from "@/paraglide/messages.js";
|
|
@@ -50,8 +50,8 @@ import { memo, useCallback, useMemo } from "react";
|
|
|
50
50
|
import { Card, CardContent } from "@/components/ui/card";
|
|
51
51
|
import { UserAvatar } from "@/components/shared-kit";
|
|
52
52
|
import { updateBugFn } from "@/server/serverFns/bug";
|
|
53
|
-
import type { BugListItem } from "
|
|
54
|
-
import type { UserBrief } from "@/
|
|
53
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
54
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
55
55
|
import type { BugPatch } from "../display/use-paged-bug-groups";
|
|
56
56
|
import type { BugDisplayProperty, BugGroupKey } from "@/shared/bug/display-types";
|
|
57
57
|
import { BUG_GROUP_DISPLAY_ORDER } from "@/shared/bug/display-types";
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
AssigneeEditor,
|
|
35
35
|
LabelsEditor,
|
|
36
36
|
} from "../../inline-editors";
|
|
37
|
-
import type { UserBrief } from "@/
|
|
37
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
38
38
|
import type { BugPatch } from "../../display/use-paged-bug-groups";
|
|
39
39
|
import { m } from "@/paraglide/messages.js";
|
|
40
40
|
|
|
@@ -19,7 +19,7 @@ import { memo, useEffect } from "react";
|
|
|
19
19
|
import { ChevronDown, ChevronRight, Plus, Loader2, ChevronsDown } from "lucide-react";
|
|
20
20
|
import { Button } from "@/components/ui/button";
|
|
21
21
|
import { Checkbox } from "@/components/ui/checkbox";
|
|
22
|
-
import type { UserBrief } from "@/
|
|
22
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
23
23
|
import { BUG_STATES, BUG_SEVERITIES, type BugState, type BugSeverity } from "@/shared/bug/constants";
|
|
24
24
|
import type { BugGroupKey } from "@/shared/bug/display-types";
|
|
25
25
|
import type { BugGroupNode } from "../../display/use-paged-bug-groups";
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
bulkUpdateBugsFn,
|
|
24
24
|
} from "@/server/serverFns/bug";
|
|
25
25
|
import { toast } from "@/components/ui/toast";
|
|
26
|
-
import type { UserBrief } from "@/
|
|
26
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
27
27
|
import type { BugDisplayOptions, BugDisplayProperty } from "@/shared/bug/display-types";
|
|
28
28
|
import type { BugGroupNode, BugPatch, PagedBugGroupNode } from "../../display/use-paged-bug-groups";
|
|
29
29
|
import { BugGroupHeader, BugGroupTailRow } from "./group";
|
|
@@ -21,7 +21,7 @@ import { createBugFn } from "@/server/serverFns/bug";
|
|
|
21
21
|
import { toast } from "@/components/ui/toast";
|
|
22
22
|
import { Input } from "@/components/ui/input";
|
|
23
23
|
import { Button } from "@/components/ui/button";
|
|
24
|
-
import type { UserBrief } from "@/
|
|
24
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
25
25
|
import type { BugState, BugSeverity } from "@/shared/bug/constants";
|
|
26
26
|
import { StateEditor, SeverityEditor, AssigneeEditor, LabelsEditor } from "../../inline-editors";
|
|
27
27
|
import { m } from "@/paraglide/messages.js";
|
|
@@ -22,10 +22,10 @@ import { Checkbox } from "@/components/ui/checkbox";
|
|
|
22
22
|
import { Input } from "@/components/ui/input";
|
|
23
23
|
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
|
|
24
24
|
import { updateBugFn } from "@/server/serverFns/bug";
|
|
25
|
-
import type { BugListItem } from "
|
|
25
|
+
import type { BugListItem } from "@/shared/bug/types";
|
|
26
26
|
import type { BugState, BugSeverity } from "@/shared/bug/constants";
|
|
27
27
|
import { SOURCE_LABEL, SOURCE_COLOR } from "@/shared/bug/constants";
|
|
28
|
-
import type { UserBrief } from "@/
|
|
28
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
29
29
|
import type { BugDisplayProperty } from "@/shared/bug/display-types";
|
|
30
30
|
import type { BugPatch } from "../../display/use-paged-bug-groups";
|
|
31
31
|
import { StateEditor, SeverityEditor, AssigneeEditor, DateEditor, LabelsEditor } from "../../inline-editors";
|
|
@@ -33,7 +33,7 @@ import { Button } from "@/components/ui/button";
|
|
|
33
33
|
import { Input } from "@/components/ui/input";
|
|
34
34
|
import { LucideIconPicker } from "@/components/shared-kit/icons/lucide-icon-picker";
|
|
35
35
|
import { BugFilterRow, type FilterCondition } from "../filters";
|
|
36
|
-
import type { UserBrief } from "@/
|
|
36
|
+
import type { UserBrief } from "@/shared/story/types";
|
|
37
37
|
import { m } from "@/paraglide/messages.js";
|
|
38
38
|
|
|
39
39
|
export interface CreateViewDialogPayload {
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
//
|
|
15
15
|
// You should have received a copy of the GNU Affero General Public License
|
|
16
16
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
-
import { STATE_COLOR } from "@/
|
|
18
|
-
import type { StoryState } from "@/
|
|
17
|
+
import { STATE_COLOR } from "@/shared/story/constants";
|
|
18
|
+
import type { StoryState } from "@/shared/story/constants";
|
|
19
19
|
import { m } from "@/paraglide/messages.js";
|
|
20
20
|
|
|
21
21
|
const ORDER: StoryState[] = ["backlog", "todo", "in_progress", "done", "cancelled"];
|
|
@@ -87,7 +87,7 @@ function toDateStr(d: unknown): string {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
function mapRecordToProperties(record: LegalOrComplianceDetail, type: EditorType): PropertyValues {
|
|
90
|
-
//
|
|
90
|
+
// legal 的 code 已持久化(S7,detail 整行返回直接带出);compliance 仍无列,空串展示
|
|
91
91
|
if (type === 'legal') {
|
|
92
92
|
const r = record as LegalDetail & { code?: string }
|
|
93
93
|
return {
|
|
@@ -70,7 +70,7 @@ import { cn } from "@/lib/utils";
|
|
|
70
70
|
import { isParentActive } from "@/lib/sidebar-utils";
|
|
71
71
|
import { useEffect, useState } from "react";
|
|
72
72
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
73
|
-
import { KNOWLEDGE_BASES_QUERY_KEY } from "@/lib/collections/
|
|
73
|
+
import { KNOWLEDGE_BASES_QUERY_KEY } from "@/lib/collections/query-keys";
|
|
74
74
|
import {
|
|
75
75
|
listKnowledgeFn,
|
|
76
76
|
toggleKnowledgePinFn,
|
|
@@ -31,7 +31,7 @@ import { cn } from "@/lib/utils";
|
|
|
31
31
|
import { isParentActive } from "@/lib/sidebar-utils";
|
|
32
32
|
import { LucideIconByName } from "@/components/shared-kit/icons/lucide-icon-picker/lucide-icon-by-name";
|
|
33
33
|
import { CreateWorkspaceDialog } from "@/components/workspace/dialogs/create-workspace-dialog";
|
|
34
|
-
import { WORKSPACES_QUERY_KEY } from "@/lib/collections/
|
|
34
|
+
import { WORKSPACES_QUERY_KEY } from "@/lib/collections/query-keys";
|
|
35
35
|
import {
|
|
36
36
|
listPinnedWorkspacesBriefFn,
|
|
37
37
|
toggleWorkspacePinFn,
|
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
itemKey,
|
|
24
24
|
storyIdFromInstanceKey,
|
|
25
25
|
} from "../instance-key";
|
|
26
|
-
import type { StoryListItem } from "
|
|
26
|
+
import type { StoryListItem } from "@/shared/story/types";
|
|
27
27
|
|
|
28
28
|
function story(id: string): StoryListItem {
|
|
29
29
|
return { id } as StoryListItem;
|