@lark-apaas/coding-template-nestjs-react-fullstack 0.1.54 → 0.1.55-alpha.20261030035108

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 (36) hide show
  1. package/package.json +1 -1
  2. package/template/client/src/components/business-ui/README.md +10 -0
  3. package/template/client/src/components/business-ui/api/user-profiles/queries.ts +1 -7
  4. package/template/client/src/components/business-ui/comment/README.md +139 -0
  5. package/template/client/src/components/business-ui/comment/app-source.ts +175 -0
  6. package/template/client/src/components/business-ui/comment/ccm-document-source.ts +252 -0
  7. package/template/client/src/components/business-ui/comment/comment-content.tsx +235 -0
  8. package/template/client/src/components/business-ui/comment/comment-input.tsx +191 -0
  9. package/template/client/src/components/business-ui/comment/comment-provider.tsx +40 -0
  10. package/template/client/src/components/business-ui/comment/content.ts +329 -0
  11. package/template/client/src/components/business-ui/comment/document-icon.tsx +104 -0
  12. package/template/client/src/components/business-ui/comment/document-icons.ts +19 -0
  13. package/template/client/src/components/business-ui/comment/dom-editor.ts +581 -0
  14. package/template/client/src/components/business-ui/comment/editor.tsx +496 -0
  15. package/template/client/src/components/business-ui/comment/entity-store.ts +97 -0
  16. package/template/client/src/components/business-ui/comment/image-attachments.tsx +374 -0
  17. package/template/client/src/components/business-ui/comment/mention-appearance.ts +35 -0
  18. package/template/client/src/components/business-ui/comment/mention-provider.tsx +73 -0
  19. package/template/client/src/components/business-ui/comment/mention-suggestions.tsx +312 -0
  20. package/template/client/src/components/business-ui/comment/types.ts +154 -0
  21. package/template/client/src/components/business-ui/comment/use-mention-search.ts +107 -0
  22. package/template/client/src/components/business-ui/user-display/user-display.tsx +0 -13
  23. package/template/client/src/components/business-ui/user-profile/user-profile.tsx +146 -397
  24. package/template/client/src/components/business-ui/user-select/user-pill.tsx +0 -13
  25. package/template/client/src/hooks/use-example.ts +45 -36
  26. package/template/client/src/pages/ExamplePage/ExamplePage.tsx +7 -8
  27. package/template/client/src/tailwind-theme.css +5 -6
  28. package/template/eslint.config.js +0 -6
  29. package/template/package-lock.json +94 -73
  30. package/template/package.json +5 -4
  31. package/template/server/modules/hello/hello.controller.ts +4 -8
  32. package/template/server/modules/hello/hello.service.ts +3 -5
  33. package/template/shared/api.interface.ts +1 -8
  34. package/template/client/src/components/business-ui/user-profile/lark-card-pool.ts +0 -217
  35. package/template/client/src/lib/api-error.ts +0 -36
  36. package/template/server/modules/hello/hello.dto.ts +0 -21
@@ -1,43 +1,52 @@
1
- // /* 模板代码 仅作示例 */
2
- // import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
3
- // import { toast } from 'sonner';
1
+ // import { useState, useEffect } from 'react';
4
2
  // import { axiosForBackend } from '@lark-apaas/client-toolkit/utils/getAxiosForBackend';
5
- // import { getApiErrorMessage } from '@/lib/api-error';
6
-
7
- // // 接口的请求 / 响应类型先写在 shared/api.interface.ts,再从 @shared/api.interface 导入
8
- // interface RecordItem {
9
- // id: string;
10
- // title?: string;
11
- // type?: string;
12
- // creator?: string;
13
- // speakDate?: string;
14
- // }
3
+ // import { logger } from '@lark-apaas/client-toolkit/logger';
15
4
 
16
- // interface RecordListParams {
17
- // limit?: number;
18
- // type?: string; // 筛选选「全部」时不传
5
+ // interface RecordData {
6
+ // title?: string,
7
+ // type?: string,
8
+ // creator?: string,
9
+ // speakDate?: string,
10
+ // record: any;
11
+ // loading: boolean;
12
+ // error?: string;
19
13
  // }
20
14
 
21
- // // 读:useQuery,状态用返回的 isLoading / isError / error,不手写 loading/error state
22
- // export function useRecordList(params: RecordListParams) {
23
- // return useQuery({
24
- // queryKey: ['records', params],
25
- // queryFn: () =>
26
- // axiosForBackend
27
- // .get<RecordItem[]>('/api/hello/test', { params })
28
- // .then((r) => r.data),
15
+ // export function useRecordData() {
16
+ // const [data, setData] = useState<RecordData>({
17
+ // record: {},
18
+ // loading: true,
19
+ // error: null,
29
20
  // });
30
- // }
31
21
 
32
- // // 写:useMutation 必须 retry: false(避免重复提交),成功后刷新相关查询
33
- // // method 和 path 必须与后端 controller 一致(此处假设后端有 POST /api/hello)
34
- // export function useCreateRecord() {
35
- // const queryClient = useQueryClient();
36
- // return useMutation({
37
- // mutationFn: (body: Omit<RecordItem, 'id'>) =>
38
- // axiosForBackend.post<RecordItem>('/api/hello', body).then((r) => r.data),
39
- // retry: false,
40
- // onSuccess: () => queryClient.invalidateQueries({ queryKey: ['records'] }),
41
- // onError: (error) => toast.error(getApiErrorMessage(error, '保存失败,请稍后重试')),
42
- // });
22
+ // useEffect(() => {
23
+ // fetchRecordData();
24
+ // }, []);
25
+
26
+ // const fetchRecordData = async () => {
27
+ // try {
28
+ // setData(prev => ({ ...prev, loading: true, error: null }));
29
+
30
+ // // 使用axios实例获取数据
31
+ // const response = await axiosForBackend.get('/api/hello');
32
+
33
+ // // 提取响应数据中的 data 字段
34
+ // const record = response.data.data;
35
+
36
+ // setData({
37
+ // record,
38
+ // loading: false,
39
+ // error: null,
40
+ // });
41
+ // } catch (error) {
42
+ // logger.error('获取数据失败', error);
43
+ // setData(prev => ({
44
+ // ...prev,
45
+ // loading: false,
46
+ // error: '获取数据失败,请稍后重试',
47
+ // }));
48
+ // }
49
+ // };
50
+
51
+ // return { ...data, refetch: fetchRecordData };
43
52
  // }
@@ -3,14 +3,13 @@
3
3
  // import { Button } from '@/components/ui/button';
4
4
  // import { RefreshCw, TrendingUp, PieChart, Clock } from 'lucide-react';
5
5
  // import { Link } from 'react-router-dom';
6
- // import { useRecordList } from '@/hooks/use-example';
7
- // import { getApiErrorMessage } from '@/lib/api-error';
6
+ // import { useRecordData } from '@/hooks/use-example';
8
7
 
9
8
  // export default function ExamplePage() {
10
- // const { data: records, isLoading, isError, error, refetch } = useRecordList({ limit: 5 });
9
+ // const { record, loading, error, refetch } = useRecordData();
11
10
  // const [dimension, setDimension] = useState<'month' | 'quarter' | 'year'>('month');
12
11
 
13
- // if (isLoading) {
12
+ // if (loading) {
14
13
  // return (
15
14
  // <div className="flex items-center justify-center h-64">
16
15
  // <div className="text-muted-foreground">加载中...</div>
@@ -18,11 +17,11 @@
18
17
  // );
19
18
  // }
20
19
 
21
- // if (isError) {
20
+ // if (error) {
22
21
  // return (
23
22
  // <div className="flex flex-col items-center justify-center h-64 space-y-4">
24
- // <div className="text-destructive">{getApiErrorMessage(error, '获取数据失败,请稍后重试')}</div>
25
- // <Button onClick={() => refetch()} variant="outline" size="sm">
23
+ // <div className="text-destructive">{error}</div>
24
+ // <Button onClick={refetch} variant="outline" size="sm">
26
25
  // <RefreshCw className="h-4 w-4 mr-2" />
27
26
  // 重试
28
27
  // </Button>
@@ -32,7 +31,7 @@
32
31
 
33
32
  // return (
34
33
  // <div className="space-y-6">
35
- // {/* 页面内容,records 可能为空,渲染前检查 */}
34
+ // {/* 页面内容 */}
36
35
  // </div>
37
36
  // );
38
37
  // }
@@ -213,12 +213,11 @@
213
213
  inset: -1px;
214
214
  }
215
215
 
216
- /* Does not work on elements with overflow:hidden!
217
- * Wrap in :where() to zero out specificity so Tailwind position utilities (absolute/fixed/sticky) can override */
218
- :where(.hover-elevate:not(.no-default-hover-elevate)),
219
- :where(.active-elevate:not(.no-default-active-elevate)),
220
- :where(.hover-elevate-2:not(.no-default-hover-elevate)),
221
- :where(.active-elevate-2:not(.no-default-active-elevate)) {
216
+ /* Does not work on elements with overflow:hidden! */
217
+ .hover-elevate:not(.no-default-hover-elevate),
218
+ .active-elevate:not(.no-default-active-elevate),
219
+ .hover-elevate-2:not(.no-default-hover-elevate),
220
+ .active-elevate-2:not(.no-default-active-elevate) {
222
221
  position: relative;
223
222
  z-index: 0;
224
223
  }
@@ -8,12 +8,6 @@ module.exports = tseslint.config(
8
8
  'dist-server',
9
9
  'node_modules',
10
10
  'source_package',
11
- 'coverage/**',
12
- 'logs/**',
13
- 'tmp/**',
14
- 'temp/**',
15
- '.playwright-cli/**',
16
- '.agent/**',
17
11
  'client/src/api/gen',
18
12
  '**/*.d.ts',
19
13
  '**/*.js.map',
@@ -8,7 +8,7 @@
8
8
  "name": "fullstack-nestjs-template",
9
9
  "version": "2.3.0",
10
10
  "dependencies": {
11
- "@lark-apaas/fullstack-nestjs-core": "^1.1.70",
11
+ "@lark-apaas/fullstack-nestjs-core": "^1.1.66",
12
12
  "@nestjs/axios": "^4.0.1",
13
13
  "@nestjs/cache-manager": "^3.1.3",
14
14
  "@nestjs/common": "^10.4.20",
@@ -31,9 +31,10 @@
31
31
  "tslib": "^2.8.1"
32
32
  },
33
33
  "devDependencies": {
34
+ "@floating-ui/dom": "1.7.4",
34
35
  "@hookform/resolvers": "^5.2.2",
35
- "@lark-apaas/client-toolkit": "^1.2.76",
36
- "@lark-apaas/coding-preset-vite-react": "^1.0.26",
36
+ "@lark-apaas/client-toolkit": "^1.2.74",
37
+ "@lark-apaas/coding-preset-vite-react": "^1.0.25",
37
38
  "@lark-apaas/fullstack-presets": "^1.1.25",
38
39
  "@nestjs/cli": "^10.4.9",
39
40
  "@radix-ui/react-accordion": "^1.2.12",
@@ -1078,14 +1079,14 @@
1078
1079
  }
1079
1080
  },
1080
1081
  "node_modules/@floating-ui/dom": {
1081
- "version": "1.8.0",
1082
- "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.8.0.tgz",
1083
- "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==",
1082
+ "version": "1.7.4",
1083
+ "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.4.tgz",
1084
+ "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
1084
1085
  "dev": true,
1085
1086
  "license": "MIT",
1086
1087
  "dependencies": {
1087
- "@floating-ui/core": "^1.8.0",
1088
- "@floating-ui/utils": "^0.2.12"
1088
+ "@floating-ui/core": "^1.7.3",
1089
+ "@floating-ui/utils": "^0.2.10"
1089
1090
  }
1090
1091
  },
1091
1092
  "node_modules/@floating-ui/react-dom": {
@@ -1102,6 +1103,17 @@
1102
1103
  "react-dom": ">=16.8.0"
1103
1104
  }
1104
1105
  },
1106
+ "node_modules/@floating-ui/react-dom/node_modules/@floating-ui/dom": {
1107
+ "version": "1.8.0",
1108
+ "resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.8.0.tgz",
1109
+ "integrity": "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==",
1110
+ "dev": true,
1111
+ "license": "MIT",
1112
+ "dependencies": {
1113
+ "@floating-ui/core": "^1.8.0",
1114
+ "@floating-ui/utils": "^0.2.12"
1115
+ }
1116
+ },
1105
1117
  "node_modules/@floating-ui/utils": {
1106
1118
  "version": "0.2.12",
1107
1119
  "resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.12.tgz",
@@ -1110,9 +1122,9 @@
1110
1122
  "license": "MIT"
1111
1123
  },
1112
1124
  "node_modules/@grpc/grpc-js": {
1113
- "version": "1.14.6",
1114
- "resolved": "https://registry.npmmirror.com/@grpc/grpc-js/-/grpc-js-1.14.6.tgz",
1115
- "integrity": "sha512-SgC/B3/VZ8lTyOZ4Cwk6f1skWhmkNAaVfiX90qd5u1rRXGKk1//8FTUEN9GvOUq7rfWIqAYkA3CoyumYVpOS6g==",
1125
+ "version": "1.14.4",
1126
+ "resolved": "https://registry.npmmirror.com/@grpc/grpc-js/-/grpc-js-1.14.4.tgz",
1127
+ "integrity": "sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==",
1116
1128
  "license": "Apache-2.0",
1117
1129
  "dependencies": {
1118
1130
  "@grpc/proto-loader": "^0.8.0",
@@ -1546,9 +1558,9 @@
1546
1558
  }
1547
1559
  },
1548
1560
  "node_modules/@lark-apaas/cache-service": {
1549
- "version": "0.1.3",
1550
- "resolved": "https://registry.npmmirror.com/@lark-apaas/cache-service/-/cache-service-0.1.3.tgz",
1551
- "integrity": "sha512-PG6h0IixK6J1aMUOu8g5vR2Zgis7qq2TBv1XxA/tGvwcxaE23ytLCpQq7+cwcSLtXFji9O82iOaAkfoe4bpRWQ==",
1561
+ "version": "0.1.2",
1562
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/cache-service/-/cache-service-0.1.2.tgz",
1563
+ "integrity": "sha512-0n24sTo1QyH/8lHs8GUcM/E+zeDau2d5Wqga8QY0A/VbjxctCtmDc8SwN1Zl8mioLNalF3QotnBsNWnOHuOw/A==",
1552
1564
  "license": "MIT",
1553
1565
  "dependencies": {
1554
1566
  "@keyv/redis": "^5.1.6",
@@ -1562,8 +1574,8 @@
1562
1574
  },
1563
1575
  "peerDependencies": {
1564
1576
  "@lark-apaas/nestjs-common": "^0.1.9",
1565
- "@lark-apaas/nestjs-logger": "^1.0.19",
1566
- "@lark-apaas/nestjs-observable": "^0.0.13",
1577
+ "@lark-apaas/nestjs-logger": "^1.0.18",
1578
+ "@lark-apaas/nestjs-observable": "^0.0.12",
1567
1579
  "@nestjs/common": "^10.0.0",
1568
1580
  "@nestjs/core": "^10.0.0"
1569
1581
  }
@@ -1579,9 +1591,9 @@
1579
1591
  }
1580
1592
  },
1581
1593
  "node_modules/@lark-apaas/client-toolkit": {
1582
- "version": "1.2.76",
1583
- "resolved": "https://registry.npmmirror.com/@lark-apaas/client-toolkit/-/client-toolkit-1.2.76.tgz",
1584
- "integrity": "sha512-fLy76Om47vuxUjQvME7GzAOeXycfozi1SqG6HqfgZErUqjBdCmEAkZfD50S39Zhp2FMpeCpkt+Of93S12+gbDQ==",
1594
+ "version": "1.2.74",
1595
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/client-toolkit/-/client-toolkit-1.2.74.tgz",
1596
+ "integrity": "sha512-130dhn1soBcAH/QuJNzn98Y0olakEouHBJ44xW1S6/kX2oqA4kYupLkDJJ9/TyzvA4P1uiqx0P8GUmUyg9+y8g==",
1585
1597
  "dev": true,
1586
1598
  "dependencies": {
1587
1599
  "@ant-design/colors": "^7.2.1",
@@ -1589,7 +1601,7 @@
1589
1601
  "@lark-apaas/aily-web-sdk": "^0.0.12",
1590
1602
  "@lark-apaas/auth-sdk": "^0.1.5",
1591
1603
  "@lark-apaas/client-capability": "^0.1.7",
1592
- "@lark-apaas/dataloom": "^0.1.6",
1604
+ "@lark-apaas/dataloom": "^0.1.5",
1593
1605
  "@lark-apaas/internal-slardar": "^0.0.3",
1594
1606
  "@lark-apaas/miaoda-inspector": "^1.0.25",
1595
1607
  "@lark-apaas/observable-web": "^1.0.6",
@@ -1634,9 +1646,9 @@
1634
1646
  "license": "MIT"
1635
1647
  },
1636
1648
  "node_modules/@lark-apaas/coding-preset-vite-react": {
1637
- "version": "1.0.26",
1638
- "resolved": "https://registry.npmmirror.com/@lark-apaas/coding-preset-vite-react/-/coding-preset-vite-react-1.0.26.tgz",
1639
- "integrity": "sha512-IEVsLC5E851G0WxEfuGJfWDcPkfR6+elrsKbZrVKmQp+i6BPC7LdFaVG7FC41UygmlOZz6gBeRjNPEj9WgBXCg==",
1649
+ "version": "1.0.25",
1650
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/coding-preset-vite-react/-/coding-preset-vite-react-1.0.25.tgz",
1651
+ "integrity": "sha512-pvYryPeK+/uXlGgSZTPyydVVNVbbYYQNN6hCu/6GXaj8/McFEd1MfYcjehAuxDO4C1LLFEi3korlbSDjpbGZJg==",
1640
1652
  "dev": true,
1641
1653
  "license": "MIT",
1642
1654
  "dependencies": {
@@ -1679,9 +1691,9 @@
1679
1691
  }
1680
1692
  },
1681
1693
  "node_modules/@lark-apaas/dataloom": {
1682
- "version": "0.1.6",
1683
- "resolved": "https://registry.npmmirror.com/@lark-apaas/dataloom/-/dataloom-0.1.6.tgz",
1684
- "integrity": "sha512-NaMLYODTYlp4ziH1memTuEnARQhlbwMBm+MaWYT2Ue/3nf729i13hjkvxdmMTJq2qyWAnAhgEZvJ4Sccy+rmEQ==",
1694
+ "version": "0.1.5",
1695
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/dataloom/-/dataloom-0.1.5.tgz",
1696
+ "integrity": "sha512-pcVZeO7QtxjzcV1SXQtUSPHO88/f1rhc3Dp/ubXVHV92W+T65Z9Adlyh3f+OdGGMhhn2+hIUnYLsLyS9gS1vhA==",
1685
1697
  "dev": true,
1686
1698
  "dependencies": {
1687
1699
  "@lark-apaas/internal-slardar": "^0.0.3"
@@ -1697,23 +1709,23 @@
1697
1709
  }
1698
1710
  },
1699
1711
  "node_modules/@lark-apaas/fullstack-nestjs-core": {
1700
- "version": "1.1.70",
1701
- "resolved": "https://registry.npmmirror.com/@lark-apaas/fullstack-nestjs-core/-/fullstack-nestjs-core-1.1.70.tgz",
1702
- "integrity": "sha512-W3aHeHB8XH3DUmoSGHUEyJz5U+zGdXWDCK7ewNp/FSeUE0iZDF3A7lUYIgr4AEIbQsRj1CVfkbblqo1kxXrFlg==",
1712
+ "version": "1.1.66",
1713
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/fullstack-nestjs-core/-/fullstack-nestjs-core-1.1.66.tgz",
1714
+ "integrity": "sha512-TeC/W6q3StOulDo5q8AmzmQCGarR3WKknYc1ZWs0xuptBddDX4w6KfZvLIdr9/Bs9Y0sOW5bEf71WL8o1vXr4g==",
1703
1715
  "license": "MIT",
1704
1716
  "dependencies": {
1705
- "@lark-apaas/cache-service": "^0.1.3",
1717
+ "@lark-apaas/cache-service": "^0.1.2",
1706
1718
  "@lark-apaas/file-service": "^0.1.2",
1707
- "@lark-apaas/http-client": "^0.1.9",
1719
+ "@lark-apaas/http-client": "^0.1.7",
1708
1720
  "@lark-apaas/nestjs-authnpaas": "^1.0.9",
1709
1721
  "@lark-apaas/nestjs-authzpaas": "^0.1.16",
1710
1722
  "@lark-apaas/nestjs-capability": "^0.1.14",
1711
1723
  "@lark-apaas/nestjs-common": "^0.1.9",
1712
- "@lark-apaas/nestjs-datapaas": "^1.0.23",
1713
- "@lark-apaas/nestjs-http-forwarder": "^0.1.4",
1714
- "@lark-apaas/nestjs-logger": "^1.0.19",
1724
+ "@lark-apaas/nestjs-datapaas": "^1.0.21",
1725
+ "@lark-apaas/nestjs-http-forwarder": "^0.1.3",
1726
+ "@lark-apaas/nestjs-logger": "^1.0.18",
1715
1727
  "@lark-apaas/nestjs-mcp": "^0.1.2",
1716
- "@lark-apaas/nestjs-observable": "^0.0.13",
1728
+ "@lark-apaas/nestjs-observable": "^0.0.12",
1717
1729
  "@lark-apaas/nestjs-openapi-devtools": "^1.0.10",
1718
1730
  "@lark-apaas/nestjs-trigger": "^0.0.3",
1719
1731
  "@nestjs/axios": "^4.0.1",
@@ -1773,9 +1785,9 @@
1773
1785
  }
1774
1786
  },
1775
1787
  "node_modules/@lark-apaas/http-client": {
1776
- "version": "0.1.9",
1777
- "resolved": "https://registry.npmmirror.com/@lark-apaas/http-client/-/http-client-0.1.9.tgz",
1778
- "integrity": "sha512-mcxd4skrQgMu6AYuy2TFe9Vvx9OSjAi3quONYLSEFq+LXe1IHaGkveuM0XlXBPxku5/pM1ryfIFP6fRImveQ2A==",
1788
+ "version": "0.1.7",
1789
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/http-client/-/http-client-0.1.7.tgz",
1790
+ "integrity": "sha512-ihaV4zzMWFTkG/M++Zx88yQ0kRrEWPbI25PtHku3sjGjY9RboNN3onv1lZ8M7kdKSvswU+JjBlBomrIEzbsk5Q==",
1779
1791
  "license": "MIT",
1780
1792
  "engines": {
1781
1793
  "node": ">=18.0.0"
@@ -1887,9 +1899,9 @@
1887
1899
  }
1888
1900
  },
1889
1901
  "node_modules/@lark-apaas/nestjs-datapaas": {
1890
- "version": "1.0.23",
1891
- "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-datapaas/-/nestjs-datapaas-1.0.23.tgz",
1892
- "integrity": "sha512-7xCye2jg5O0qiw+l6L4j9HfrN5dbBcUTlJ1LhniX4RHi9Ds7tZlhLhsO+nqZrWoK9GXDc0jdZ61E7EMwHduJ4w==",
1902
+ "version": "1.0.22",
1903
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-datapaas/-/nestjs-datapaas-1.0.22.tgz",
1904
+ "integrity": "sha512-UTdYnZGVpVTv5iB9HEiUJTyFmTvEX+QJd/qlJK2CsnyF2MS8YQhyWTSlJZ375DcBpxSngFBhkRfZXHNs1OFp0w==",
1893
1905
  "license": "MIT",
1894
1906
  "dependencies": {
1895
1907
  "@types/pg": "^8.10.9",
@@ -1901,16 +1913,16 @@
1901
1913
  },
1902
1914
  "peerDependencies": {
1903
1915
  "@lark-apaas/nestjs-common": "^0.1.9",
1904
- "@lark-apaas/nestjs-observable": "^0.0.13",
1916
+ "@lark-apaas/nestjs-observable": "^0.0.12",
1905
1917
  "@nestjs/common": "^10.0.0",
1906
1918
  "@nestjs/core": "^10.0.0",
1907
1919
  "drizzle-orm": "0.44.6"
1908
1920
  }
1909
1921
  },
1910
1922
  "node_modules/@lark-apaas/nestjs-http-forwarder": {
1911
- "version": "0.1.4",
1912
- "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-http-forwarder/-/nestjs-http-forwarder-0.1.4.tgz",
1913
- "integrity": "sha512-AOWaeHrZvXRsK/F+2KkEPDJYbNjeuFc2OqhWEWm7u+KSuDE2iQ0dgNm1fTCvf9tkqrLNWEczqDhsP+CNmKndEQ==",
1923
+ "version": "0.1.3",
1924
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-http-forwarder/-/nestjs-http-forwarder-0.1.3.tgz",
1925
+ "integrity": "sha512-mhgTN0M1B0DdalZ5iJkccivqfvXA2CX1487YmbT27ywqXi36ZCMLhl6jm4OaqSzKXf5lacrpadOjkW0v/6N0ag==",
1914
1926
  "license": "MIT",
1915
1927
  "dependencies": {
1916
1928
  "@lark-apaas/nestjs-common": "^0.1.9",
@@ -1926,13 +1938,13 @@
1926
1938
  }
1927
1939
  },
1928
1940
  "node_modules/@lark-apaas/nestjs-logger": {
1929
- "version": "1.0.19",
1930
- "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-logger/-/nestjs-logger-1.0.19.tgz",
1931
- "integrity": "sha512-AGuEd0NiUS1TEywHV8TeG+KBZ0QoMbVuCi6exjIzIsHoSsGiy5fImAt5LV1osAG/OHYrdDWy1zYGZBVhUNYAaw==",
1941
+ "version": "1.0.18",
1942
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-logger/-/nestjs-logger-1.0.18.tgz",
1943
+ "integrity": "sha512-RjucJd+TmACoNfTFw20/ppAT3gaztm3qZagPDHEZabiZxg8UpF1twbmN/VLXTF/fgpyoRFS09CMxa7nfFnrT2A==",
1932
1944
  "license": "MIT",
1933
1945
  "dependencies": {
1934
1946
  "@lark-apaas/nestjs-common": "^0.1.9",
1935
- "@lark-apaas/nestjs-observable": "^0.0.13",
1947
+ "@lark-apaas/nestjs-observable": "^0.0.12",
1936
1948
  "pino": "^10.0.0",
1937
1949
  "rotating-file-stream": "^3.2.9"
1938
1950
  },
@@ -1965,13 +1977,13 @@
1965
1977
  }
1966
1978
  },
1967
1979
  "node_modules/@lark-apaas/nestjs-observable": {
1968
- "version": "0.0.13",
1969
- "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-observable/-/nestjs-observable-0.0.13.tgz",
1970
- "integrity": "sha512-HzrPsE1QdNRqk2PxArOazRJWkJCP5Y6IMnhrJWVCnQoPCyDewUpBAoU+15eqSgaXYOONrDiU3Dm9RfCdYt3w8A==",
1980
+ "version": "0.0.12",
1981
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/nestjs-observable/-/nestjs-observable-0.0.12.tgz",
1982
+ "integrity": "sha512-hAeP8llTThH//3yo4RQL6VhsX5D7L8DE8nWlt6xJf3VoxTwB5vZCOdI0em1vENmbROmxRMskphyS2H1wRpqcDw==",
1971
1983
  "license": "MIT",
1972
1984
  "dependencies": {
1973
1985
  "@lark-apaas/nestjs-common": "^0.1.9",
1974
- "@lark-apaas/observable": "^1.0.7"
1986
+ "@lark-apaas/observable": "^1.0.6"
1975
1987
  },
1976
1988
  "peerDependencies": {
1977
1989
  "@nestjs/common": "^10.4.20",
@@ -2011,9 +2023,9 @@
2011
2023
  }
2012
2024
  },
2013
2025
  "node_modules/@lark-apaas/observable": {
2014
- "version": "1.0.7",
2015
- "resolved": "https://registry.npmmirror.com/@lark-apaas/observable/-/observable-1.0.7.tgz",
2016
- "integrity": "sha512-PcUdzLmDTQ7VcP3mcN1IijT68BSVkvGD300DVOhuzCX3d0kPihAtR0khTacRoaiwPlUQdFhhtctKB3KRhKx2+g==",
2026
+ "version": "1.0.6",
2027
+ "resolved": "https://registry.npmmirror.com/@lark-apaas/observable/-/observable-1.0.6.tgz",
2028
+ "integrity": "sha512-zMtTdWXEKjhpaC9M0mnv3uP68R+UAwNdctApmpzPhhOaNPjDGSYdvsQtMEMdr8/+tlETx+7OuXN47sYj2lmKAQ==",
2017
2029
  "license": "MIT",
2018
2030
  "dependencies": {
2019
2031
  "@opentelemetry/api": "^1.9.0",
@@ -10999,9 +11011,9 @@
10999
11011
  }
11000
11012
  },
11001
11013
  "node_modules/cjs-module-lexer": {
11002
- "version": "2.3.0",
11003
- "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-2.3.0.tgz",
11004
- "integrity": "sha512-lmNyBzi6iYiqyrExTctfmjd8tInx+dHu9PBomTfH5RXS53c27JMFJgzNv5TyAnm3PgGf+MLy0+Ws41/HlVxdKQ==",
11014
+ "version": "2.2.1",
11015
+ "resolved": "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-2.2.1.tgz",
11016
+ "integrity": "sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==",
11005
11017
  "license": "MIT"
11006
11018
  },
11007
11019
  "node_modules/class-transformer": {
@@ -18600,9 +18612,9 @@
18600
18612
  }
18601
18613
  },
18602
18614
  "node_modules/pino": {
18603
- "version": "10.4.0",
18604
- "resolved": "https://registry.npmmirror.com/pino/-/pino-10.4.0.tgz",
18605
- "integrity": "sha512-bk1ZMTwG/Vymx+zPoa28MhNzucFvXJWp3csrSuxuHPSMeUettaCoQ5Jvg07mtC4JGNpcfTwz41oVCnNgBK9+vA==",
18615
+ "version": "10.3.1",
18616
+ "resolved": "https://registry.npmmirror.com/pino/-/pino-10.3.1.tgz",
18617
+ "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==",
18606
18618
  "license": "MIT",
18607
18619
  "dependencies": {
18608
18620
  "@pinojs/redact": "^0.4.0",
@@ -18612,7 +18624,7 @@
18612
18624
  "pino-std-serializers": "^7.0.0",
18613
18625
  "process-warning": "^5.0.0",
18614
18626
  "quick-format-unescaped": "^4.0.3",
18615
- "real-require": "^1.0.0",
18627
+ "real-require": "^0.2.0",
18616
18628
  "safe-stable-stringify": "^2.3.1",
18617
18629
  "sonic-boom": "^4.0.1",
18618
18630
  "thread-stream": "^4.0.0"
@@ -18964,9 +18976,9 @@
18964
18976
  }
18965
18977
  },
18966
18978
  "node_modules/process-warning": {
18967
- "version": "5.1.1",
18968
- "resolved": "https://registry.npmmirror.com/process-warning/-/process-warning-5.1.1.tgz",
18969
- "integrity": "sha512-oCkNVj4OKnKEcocVBcDfiIugN1/cE6rgfT3nCtzeqZPA8+rIxMaQ0xXzIkGP8Gj2qUaP1UR7uhJ1VD8lUCpzCg==",
18979
+ "version": "5.1.0",
18980
+ "resolved": "https://registry.npmmirror.com/process-warning/-/process-warning-5.1.0.tgz",
18981
+ "integrity": "sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw==",
18970
18982
  "funding": [
18971
18983
  {
18972
18984
  "type": "github",
@@ -19931,10 +19943,13 @@
19931
19943
  }
19932
19944
  },
19933
19945
  "node_modules/real-require": {
19934
- "version": "1.0.0",
19935
- "resolved": "https://registry.npmmirror.com/real-require/-/real-require-1.0.0.tgz",
19936
- "integrity": "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==",
19937
- "license": "MIT"
19946
+ "version": "0.2.0",
19947
+ "resolved": "https://registry.npmmirror.com/real-require/-/real-require-0.2.0.tgz",
19948
+ "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==",
19949
+ "license": "MIT",
19950
+ "engines": {
19951
+ "node": ">= 12.13.0"
19952
+ }
19938
19953
  },
19939
19954
  "node_modules/recharts": {
19940
19955
  "version": "2.15.4",
@@ -22011,6 +22026,12 @@
22011
22026
  "node": ">=20"
22012
22027
  }
22013
22028
  },
22029
+ "node_modules/thread-stream/node_modules/real-require": {
22030
+ "version": "1.0.0",
22031
+ "resolved": "https://registry.npmmirror.com/real-require/-/real-require-1.0.0.tgz",
22032
+ "integrity": "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==",
22033
+ "license": "MIT"
22034
+ },
22014
22035
  "node_modules/throttle-debounce": {
22015
22036
  "version": "5.0.2",
22016
22037
  "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
@@ -22463,9 +22484,9 @@
22463
22484
  }
22464
22485
  },
22465
22486
  "node_modules/undici": {
22466
- "version": "7.30.1",
22467
- "resolved": "https://registry.npmmirror.com/undici/-/undici-7.30.1.tgz",
22468
- "integrity": "sha512-03KrMbjIFDWQR5RNPrSw3bd1r12JpyFQl9/yxjUbJtqkjmllqC5lFjZh6ujeuJCKr8EOQvRW872Oy/az+nLYxg==",
22487
+ "version": "7.29.0",
22488
+ "resolved": "https://registry.npmmirror.com/undici/-/undici-7.29.0.tgz",
22489
+ "integrity": "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==",
22469
22490
  "license": "MIT",
22470
22491
  "engines": {
22471
22492
  "node": ">=20.18.1"
@@ -28,7 +28,7 @@
28
28
  "upgrade": "npx -y @lark-apaas/fullstack-cli sync --disable-gen-openapi"
29
29
  },
30
30
  "dependencies": {
31
- "@lark-apaas/fullstack-nestjs-core": "^1.1.70",
31
+ "@lark-apaas/fullstack-nestjs-core": "^1.1.66",
32
32
  "@nestjs/axios": "^4.0.1",
33
33
  "@nestjs/cache-manager": "^3.1.3",
34
34
  "@nestjs/common": "^10.4.20",
@@ -52,8 +52,8 @@
52
52
  },
53
53
  "devDependencies": {
54
54
  "@hookform/resolvers": "^5.2.2",
55
- "@lark-apaas/client-toolkit": "^1.2.76",
56
- "@lark-apaas/coding-preset-vite-react": "^1.0.26",
55
+ "@lark-apaas/client-toolkit": "^1.2.74",
56
+ "@lark-apaas/coding-preset-vite-react": "^1.0.25",
57
57
  "@lark-apaas/fullstack-presets": "^1.1.25",
58
58
  "@nestjs/cli": "^10.4.9",
59
59
  "@radix-ui/react-accordion": "^1.2.12",
@@ -133,7 +133,8 @@
133
133
  "uuid": "11.0.5",
134
134
  "vaul": "^1.1.2",
135
135
  "vite": "^8",
136
- "zod": "^4.3.6"
136
+ "zod": "^4.3.6",
137
+ "@floating-ui/dom": "1.7.4"
137
138
  },
138
139
  "overrides": {
139
140
  "dayjs": "^1.11.15",
@@ -1,20 +1,16 @@
1
1
  // /* 模板代码 仅作示例 */
2
- // import { Controller, Get, Query, Req } from '@nestjs/common';
2
+ // import { Controller, Get, Post, Put, Delete, Body, Param, Query, Req, ParseIntPipe } from '@nestjs/common';
3
3
  // import type { Request } from 'express';
4
- // import { NeedLogin } from '@lark-apaas/fullstack-nestjs-core';
5
4
  // import { HelloService } from './hello.service';
6
- // import { HelloListQueryDto } from './hello.dto';
7
5
 
8
- // // 整个 controller 都需要登录:在类上写一次 @NeedLogin()
9
6
  // @Controller('api/hello')
10
- // @NeedLogin()
11
7
  // export class HelloController {
12
8
  // constructor(private readonly helloService: HelloService) {}
13
9
 
14
- // // 列表 / 筛选接口:用 @Query() 绑定 DTO,不逐个 @Query('xxx') + parseInt
15
10
  // @Get('test')
16
- // async test(@Req() req: Request, @Query() query: HelloListQueryDto) {
11
+ // async test(@Req() req: Request, @Query('limit') limit?: string) {
17
12
  // const { userId } = req.userContext;
18
- // return this.helloService.test(userId, query.limit ?? 5, query.type);
13
+ // const limitNum = limit ? parseInt(limit) : 5;
14
+ // return this.helloService.test(userId, limitNum);
19
15
  // }
20
16
  // }
@@ -2,7 +2,7 @@
2
2
  // import { Injectable, Inject, Logger } from '@nestjs/common';
3
3
  // import { DRIZZLE_DATABASE, type PostgresJsDatabase } from '@lark-apaas/fullstack-nestjs-core';
4
4
  // import { record } from '@server/database/schema';
5
- // import { eq, and, desc } from 'drizzle-orm';
5
+ // import { eq, and, count, desc, sql, gte, lte, or } from 'drizzle-orm';
6
6
 
7
7
  // @Injectable()
8
8
  // export class HelloService {
@@ -10,14 +10,12 @@
10
10
 
11
11
  // constructor(@Inject(DRIZZLE_DATABASE) private readonly db: PostgresJsDatabase) {}
12
12
 
13
- // async test(userId: string, limit: number = 5, type?: string) {
13
+ // async test(userId: string, limit: number = 5) {
14
14
  // try {
15
- // const conditions = [eq(record.userProfile, userId)];
16
- // if (type) conditions.push(eq(record.type, type));
17
15
  // const results = await this.db
18
16
  // .select()
19
17
  // .from(record)
20
- // .where(and(...conditions))
18
+ // .where(eq(record.userProfile, userId))
21
19
  // .orderBy(desc(record.speakDate))
22
20
  // .limit(limit);
23
21
 
@@ -1,8 +1 @@
1
- /* 前后端共享的类型写在这里 */
2
-
3
- // 固定取值(状态、类型等)在这里定义一次,前后端都从这里导入,不另写取值数组或守卫:
4
- // export const RECORD_TYPES = ['meeting', 'memo'] as const;
5
- // export type RecordType = (typeof RECORD_TYPES)[number];
6
- // export const isRecordType = (v: string): v is RecordType =>
7
- // (RECORD_TYPES as readonly string[]).includes(v);
8
- // export const RECORD_TYPE_LABELS: Record<RecordType, string> = { meeting: '会议', memo: '备忘' };
1
+ /* 前后端共享的类型写在这里 */