@liujitcn/kratos-taro-app-system 0.0.78 → 0.0.80

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 (40) hide show
  1. package/README.md +1 -1
  2. package/dist/build.mjs +2 -2
  3. package/dist/module.mjs +54 -6
  4. package/package.json +3 -3
  5. package/src/api/base/v1/ai_knowledge.ts +25 -0
  6. package/src/locales/en-US.json +13 -1
  7. package/src/locales/ja-JP.json +13 -1
  8. package/src/locales/zh-CN.json +13 -1
  9. package/src/locales/zh-TW.json +13 -1
  10. package/src/pages.ts +2 -2
  11. package/src/rpc/base/v1/ai_knowledge.ts +33 -0
  12. package/src/rpc/base/v1/ai_message.ts +1 -1
  13. package/src/rpc/base/v1/ai_provider.ts +1 -1
  14. package/src/rpc/base/v1/ai_search.ts +1 -1
  15. package/src/rpc/base/v1/ai_session.ts +1 -1
  16. package/src/rpc/base/v1/ai_tool.ts +1 -1
  17. package/src/rpc/base/v1/notification.ts +1 -1
  18. package/src/rpc/google/protobuf/empty.ts +1 -1
  19. package/src/rpc/google/protobuf/timestamp.ts +1 -1
  20. package/src/views/pages/my/my.scss +28 -109
  21. package/src/views/pages/my/my.tsx +62 -49
  22. package/src/views/pagesMember/ai/components/Composer.tsx +52 -3
  23. package/src/views/pagesMember/ai/components/KnowledgePicker.tsx +58 -0
  24. package/src/views/pagesMember/ai/components/SessionDrawer.tsx +8 -5
  25. package/src/views/pagesMember/ai/components/WelcomePanel.tsx +7 -4
  26. package/src/views/pagesMember/ai/components/composer.scss +28 -23
  27. package/src/views/pagesMember/ai/components/knowledge-picker.scss +139 -0
  28. package/src/views/pagesMember/ai/components/model-picker.scss +24 -18
  29. package/src/views/pagesMember/ai/components/session-drawer.scss +44 -22
  30. package/src/views/pagesMember/ai/components/welcome-panel.scss +28 -17
  31. package/src/views/pagesMember/ai/index.scss +35 -72
  32. package/src/views/pagesMember/ai/index.tsx +47 -14
  33. package/src/views/pagesMember/message/detail.tsx +43 -25
  34. package/src/views/pagesMember/message/index.tsx +107 -98
  35. package/src/views/pagesMember/message/message.scss +78 -179
  36. package/src/views/pagesMember/profile/profile.scss +43 -99
  37. package/src/views/pagesMember/profile/profile.tsx +68 -48
  38. package/src/views/pagesMember/settings/components/PasswordVerifyDialog.scss +14 -13
  39. package/src/views/pagesMember/settings/settings.scss +27 -68
  40. package/src/views/pagesMember/settings/settings.tsx +161 -36
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
 
16
16
  ## AI 助手
17
17
 
18
- AI 页面支持会话创建与切换、历史会话搜索、消息加载、附件上传、复制、删除、再生成、工具提示和快捷入口。Provider 与模型通过独立的 `AiModelService` 选项接口加载。H5 使用 Fetch SSE,微信小程序使用 chunked 请求,两端共用增量 SSE 解析器和相同事件契约。
18
+ AI 页面支持会话创建与切换、历史会话搜索、消息加载、附件上传、复制、删除、再生成、工具提示和快捷入口。Provider 与模型通过 `AiModelService` 加载,知识库通过 `AiKnowledgeService` 加载并可多选,发送消息时携带所选知识库编号。H5 使用 Fetch SSE,微信小程序使用 chunked 请求,两端共用增量 SSE 解析器和相同事件契约。
19
19
 
20
20
  请求统一封装在 `src/api`,RPC 类型由 backend Buf 模板生成。页面不能直接写 `Taro.request`,也不能手工修改 `src/rpc`。
21
21
 
package/dist/build.mjs CHANGED
@@ -12,7 +12,7 @@ var systemPages = {
12
12
  navigationBarTitleText: ""
13
13
  }
14
14
  },
15
- "pagesMember/settings/settings": { style: { navigationBarTitleText: "" } },
15
+ "pagesMember/settings/settings": { style: { navigationStyle: "custom", navigationBarTitleText: "" } },
16
16
  "pagesMember/ai/index": {
17
17
  style: {
18
18
  navigationStyle: "custom",
@@ -32,7 +32,7 @@ var systemPages = {
32
32
  navigationBarTitleText: ""
33
33
  }
34
34
  },
35
- "pagesMember/message/detail": { style: { navigationBarTitleText: "" } }
35
+ "pagesMember/message/detail": { style: { navigationStyle: "custom", navigationBarTitleText: "" } }
36
36
  };
37
37
 
38
38
  // src/build.ts
package/dist/module.mjs CHANGED
@@ -10,7 +10,7 @@ var systemPages = {
10
10
  navigationBarTitleText: ""
11
11
  }
12
12
  },
13
- "pagesMember/settings/settings": { style: { navigationBarTitleText: "" } },
13
+ "pagesMember/settings/settings": { style: { navigationStyle: "custom", navigationBarTitleText: "" } },
14
14
  "pagesMember/ai/index": {
15
15
  style: {
16
16
  navigationStyle: "custom",
@@ -30,7 +30,7 @@ var systemPages = {
30
30
  navigationBarTitleText: ""
31
31
  }
32
32
  },
33
- "pagesMember/message/detail": { style: { navigationBarTitleText: "" } }
33
+ "pagesMember/message/detail": { style: { navigationStyle: "custom", navigationBarTitleText: "" } }
34
34
  };
35
35
 
36
36
  // src/locales/zh-CN.json
@@ -136,6 +136,9 @@ var zh_CN_default = {
136
136
  "system.settings.authorization": "\u6388\u6743\u7BA1\u7406",
137
137
  "system.settings.contact": "\u8054\u7CFB\u6211\u4EEC",
138
138
  "system.settings.feedback": "\u95EE\u9898\u53CD\u9988",
139
+ "system.settings.section_appearance": "\u5916\u89C2",
140
+ "system.settings.section_security": "\u8D26\u6237\u5B89\u5168",
141
+ "system.settings.section_more": "\u66F4\u591A \xB7 \u5C0F\u7A0B\u5E8F\u7AEF",
139
142
  "system.settings.go_ask": "\u53BB\u63D0\u95EE",
140
143
  "system.settings.logout_confirm": "\u662F\u5426\u9000\u51FA\u767B\u5F55\uFF1F",
141
144
  "system.settings.logout_failed": "\u9000\u51FA\u767B\u5F55\u5931\u8D25",
@@ -170,7 +173,16 @@ var zh_CN_default = {
170
173
  "system.ai.model.load_failed": "\u52A0\u8F7D\u4F9B\u5E94\u5546\u548C\u6A21\u578B\u5931\u8D25",
171
174
  "system.ai.model.title": "\u9009\u62E9\u6A21\u578B",
172
175
  "system.ai.model.provider_model_count": "{providers} \u4E2A\u4F9B\u5E94\u5546 \xB7 {models} \u4E2A\u6A21\u578B",
173
- "system.ai.model.empty": "\u6682\u65E0\u53EF\u9009\u6A21\u578B"
176
+ "system.ai.model.empty": "\u6682\u65E0\u53EF\u9009\u6A21\u578B",
177
+ "system.ai.knowledge.title": "\u77E5\u8BC6\u5E93",
178
+ "system.ai.knowledge.selected_count": "\u5DF2\u9009 {count} \u4E2A\u77E5\u8BC6\u5E93",
179
+ "system.ai.knowledge.doc_count": "{count} \u7BC7\u6587\u6863",
180
+ "system.ai.knowledge.select_hint": "\u52FE\u9009\u8981\u6CE8\u5165\u4E0A\u4E0B\u6587\u7684\u77E5\u8BC6\u5E93",
181
+ "system.ai.knowledge.empty": "\u6682\u65E0\u77E5\u8BC6\u5E93",
182
+ "system.settings.theme": "\u4E3B\u9898\u5916\u89C2",
183
+ "system.settings.theme_auto": "\u8DDF\u968F\u7CFB\u7EDF",
184
+ "system.settings.theme_dark": "\u6697\u9ED1",
185
+ "system.settings.theme_light": "\u660E\u4EAE"
174
186
  };
175
187
 
176
188
  // src/locales/en-US.json
@@ -276,6 +288,9 @@ var en_US_default = {
276
288
  "system.settings.authorization": "Authorization settings",
277
289
  "system.settings.contact": "Contact us",
278
290
  "system.settings.feedback": "Feedback",
291
+ "system.settings.section_appearance": "Appearance",
292
+ "system.settings.section_security": "Account security",
293
+ "system.settings.section_more": "More \xB7 Mini Program",
279
294
  "system.settings.go_ask": "Ask now",
280
295
  "system.settings.logout_confirm": "Log out now?",
281
296
  "system.settings.logout_failed": "Logout failed",
@@ -310,7 +325,16 @@ var en_US_default = {
310
325
  "system.ai.model.load_failed": "Failed to load providers and models",
311
326
  "system.ai.model.title": "Select Model",
312
327
  "system.ai.model.provider_model_count": "{providers} providers \xB7 {models} models",
313
- "system.ai.model.empty": "No models available"
328
+ "system.ai.model.empty": "No models available",
329
+ "system.ai.knowledge.title": "Knowledge Base",
330
+ "system.ai.knowledge.selected_count": "{count} knowledge base(s) selected",
331
+ "system.ai.knowledge.doc_count": "{count} doc(s)",
332
+ "system.ai.knowledge.select_hint": "Select knowledge bases to inject into context",
333
+ "system.ai.knowledge.empty": "No knowledge base available",
334
+ "system.settings.theme": "Theme Appearance",
335
+ "system.settings.theme_auto": "Follow System",
336
+ "system.settings.theme_dark": "Dark",
337
+ "system.settings.theme_light": "Light"
314
338
  };
315
339
 
316
340
  // src/locales/ja-JP.json
@@ -416,6 +440,9 @@ var ja_JP_default = {
416
440
  "system.settings.authorization": "\u8A8D\u53EF\u7BA1\u7406",
417
441
  "system.settings.contact": "\u304A\u554F\u3044\u5408\u308F\u305B",
418
442
  "system.settings.feedback": "\u554F\u984C\u306E\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF",
443
+ "system.settings.section_appearance": "\u5916\u89B3",
444
+ "system.settings.section_security": "\u30A2\u30AB\u30A6\u30F3\u30C8\u30BB\u30AD\u30E5\u30EA\u30C6\u30A3",
445
+ "system.settings.section_more": "\u305D\u306E\u4ED6\u30FB\u30DF\u30CB\u30D7\u30ED\u30B0\u30E9\u30E0",
419
446
  "system.settings.go_ask": "\u8CEA\u554F\u3057\u3066\u307F\u3088\u3046",
420
447
  "system.settings.logout_confirm": "\u30ED\u30B0\u30A2\u30A6\u30C8\u3057\u307E\u3059\u304B?",
421
448
  "system.settings.logout_failed": "\u30ED\u30B0\u30A2\u30A6\u30C8\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
@@ -450,7 +477,16 @@ var ja_JP_default = {
450
477
  "system.ai.model.load_failed": "\u30D7\u30ED\u30D0\u30A4\u30C0\u30FC\u3068\u30E2\u30C7\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F",
451
478
  "system.ai.model.title": "\u30E2\u30C7\u30EB\u3092\u9078\u629E",
452
479
  "system.ai.model.provider_model_count": "{providers} \u30D7\u30ED\u30D0\u30A4\u30C0\u30FC \xB7 {models} \u30E2\u30C7\u30EB",
453
- "system.ai.model.empty": "\u9078\u629E\u53EF\u80FD\u306A\u30E2\u30C7\u30EB\u304C\u3042\u308A\u307E\u305B\u3093"
480
+ "system.ai.model.empty": "\u9078\u629E\u53EF\u80FD\u306A\u30E2\u30C7\u30EB\u304C\u3042\u308A\u307E\u305B\u3093",
481
+ "system.ai.knowledge.title": "\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9",
482
+ "system.ai.knowledge.selected_count": "{count} \u4EF6\u306E\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u3092\u9078\u629E\u4E2D",
483
+ "system.ai.knowledge.doc_count": "{count} \u4EF6\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8",
484
+ "system.ai.knowledge.select_hint": "\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u306B\u6CE8\u5165\u3059\u308B\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u3092\u9078\u629E",
485
+ "system.ai.knowledge.empty": "\u5229\u7528\u53EF\u80FD\u306A\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u304C\u3042\u308A\u307E\u305B\u3093",
486
+ "system.settings.theme": "\u30C6\u30FC\u30DE\u5916\u89B3",
487
+ "system.settings.theme_auto": "\u30B7\u30B9\u30C6\u30E0\u306B\u5F93\u3046",
488
+ "system.settings.theme_dark": "\u30C0\u30FC\u30AF",
489
+ "system.settings.theme_light": "\u30E9\u30A4\u30C8"
454
490
  };
455
491
 
456
492
  // src/locales/zh-TW.json
@@ -556,6 +592,9 @@ var zh_TW_default = {
556
592
  "system.settings.authorization": "\u6388\u6B0A\u7BA1\u7406",
557
593
  "system.settings.contact": "\u806F\u7D61\u6211\u5011",
558
594
  "system.settings.feedback": "\u554F\u984C\u53CD\u994B",
595
+ "system.settings.section_appearance": "\u5916\u89C0",
596
+ "system.settings.section_security": "\u5E33\u6236\u5B89\u5168",
597
+ "system.settings.section_more": "\u66F4\u591A\u30FB\u5C0F\u7A0B\u5F0F\u7AEF",
559
598
  "system.settings.go_ask": "\u53BB\u63D0\u554F",
560
599
  "system.settings.logout_confirm": "\u662F\u5426\u9000\u51FA\u767B\u5165\uFF1F",
561
600
  "system.settings.logout_failed": "\u9000\u51FA\u767B\u5165\u5931\u6557",
@@ -590,7 +629,16 @@ var zh_TW_default = {
590
629
  "system.ai.model.load_failed": "\u8F09\u5165\u4F9B\u61C9\u5546\u8207\u6A21\u578B\u5931\u6557",
591
630
  "system.ai.model.title": "\u9078\u64C7\u6A21\u578B",
592
631
  "system.ai.model.provider_model_count": "{providers} \u500B\u4F9B\u61C9\u5546 \xB7 {models} \u500B\u6A21\u578B",
593
- "system.ai.model.empty": "\u66AB\u7121\u53EF\u9078\u6A21\u578B"
632
+ "system.ai.model.empty": "\u66AB\u7121\u53EF\u9078\u6A21\u578B",
633
+ "system.ai.knowledge.title": "\u77E5\u8B58\u5EAB",
634
+ "system.ai.knowledge.selected_count": "\u5DF2\u9078 {count} \u500B\u77E5\u8B58\u5EAB",
635
+ "system.ai.knowledge.doc_count": "{count} \u7BC7\u6587\u4EF6",
636
+ "system.ai.knowledge.select_hint": "\u52FE\u9078\u8981\u6CE8\u5165\u4E0A\u4E0B\u6587\u7684\u77E5\u8B58\u5EAB",
637
+ "system.ai.knowledge.empty": "\u66AB\u7121\u77E5\u8B58\u5EAB",
638
+ "system.settings.theme": "\u4E3B\u984C\u5916\u89C0",
639
+ "system.settings.theme_auto": "\u8DDF\u96A8\u7CFB\u7D71",
640
+ "system.settings.theme_dark": "\u6697\u9ED1",
641
+ "system.settings.theme_light": "\u660E\u4EAE"
594
642
  };
595
643
 
596
644
  // src/locales/generated.ts
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "type": "git",
8
8
  "url": "git@github.com:liujitcn/kratos-admin.git"
9
9
  },
10
- "version": "0.0.78",
10
+ "version": "0.0.80",
11
11
  "type": "module",
12
12
  "files": [
13
13
  "dist",
@@ -38,8 +38,8 @@
38
38
  "@tarojs/components": "4.2.1",
39
39
  "@tarojs/taro": "4.2.1",
40
40
  "react": "18.3.1",
41
- "@liujitcn/kratos-taro-app-core": "^0.0.78",
42
- "@liujitcn/kratos-taro-app-ui": "^0.0.78"
41
+ "@liujitcn/kratos-taro-app-core": "^0.0.80",
42
+ "@liujitcn/kratos-taro-app-ui": "^0.0.80"
43
43
  },
44
44
  "scripts": {
45
45
  "build": "pnpm run build:entries && pnpm pack --pack-destination ../../../dist/npm",
@@ -0,0 +1,25 @@
1
+ import { http } from '@liujitcn/kratos-taro-app-core/utils/http'
2
+ import type {
3
+ AiKnowledgeService,
4
+ ListAiKnowledgeOptionsRequest,
5
+ ListAiKnowledgeOptionsResponse,
6
+ } from '../../../rpc/base/v1/ai_knowledge'
7
+
8
+ const AI_KNOWLEDGE_OPTIONS_URL = '/v1/base/ai/knowledge/options'
9
+
10
+ /** AI 知识库选项服务。 */
11
+ export class AiKnowledgeServiceImpl implements AiKnowledgeService {
12
+ /** 查询可用的 AI 知识库选项。 */
13
+ ListAiKnowledgeOptions(
14
+ request: ListAiKnowledgeOptionsRequest,
15
+ ): Promise<ListAiKnowledgeOptionsResponse> {
16
+ return http<ListAiKnowledgeOptionsResponse>({
17
+ url: AI_KNOWLEDGE_OPTIONS_URL,
18
+ method: 'GET',
19
+ authMode: 'required',
20
+ data: request,
21
+ })
22
+ }
23
+ }
24
+
25
+ export const defAiKnowledgeService = new AiKnowledgeServiceImpl()
@@ -100,6 +100,9 @@
100
100
  "system.settings.authorization": "Authorization settings",
101
101
  "system.settings.contact": "Contact us",
102
102
  "system.settings.feedback": "Feedback",
103
+ "system.settings.section_appearance": "Appearance",
104
+ "system.settings.section_security": "Account security",
105
+ "system.settings.section_more": "More · Mini Program",
103
106
  "system.settings.go_ask": "Ask now",
104
107
  "system.settings.logout_confirm": "Log out now?",
105
108
  "system.settings.logout_failed": "Logout failed",
@@ -134,5 +137,14 @@
134
137
  "system.ai.model.load_failed": "Failed to load providers and models",
135
138
  "system.ai.model.title": "Select Model",
136
139
  "system.ai.model.provider_model_count": "{providers} providers · {models} models",
137
- "system.ai.model.empty": "No models available"
140
+ "system.ai.model.empty": "No models available",
141
+ "system.ai.knowledge.title": "Knowledge Base",
142
+ "system.ai.knowledge.selected_count": "{count} knowledge base(s) selected",
143
+ "system.ai.knowledge.doc_count": "{count} doc(s)",
144
+ "system.ai.knowledge.select_hint": "Select knowledge bases to inject into context",
145
+ "system.ai.knowledge.empty": "No knowledge base available",
146
+ "system.settings.theme": "Theme Appearance",
147
+ "system.settings.theme_auto": "Follow System",
148
+ "system.settings.theme_dark": "Dark",
149
+ "system.settings.theme_light": "Light"
138
150
  }
@@ -100,6 +100,9 @@
100
100
  "system.settings.authorization": "認可管理",
101
101
  "system.settings.contact": "お問い合わせ",
102
102
  "system.settings.feedback": "問題のフィードバック",
103
+ "system.settings.section_appearance": "外観",
104
+ "system.settings.section_security": "アカウントセキュリティ",
105
+ "system.settings.section_more": "その他・ミニプログラム",
103
106
  "system.settings.go_ask": "質問してみよう",
104
107
  "system.settings.logout_confirm": "ログアウトしますか?",
105
108
  "system.settings.logout_failed": "ログアウトに失敗しました",
@@ -134,5 +137,14 @@
134
137
  "system.ai.model.load_failed": "プロバイダーとモデルを読み込めませんでした",
135
138
  "system.ai.model.title": "モデルを選択",
136
139
  "system.ai.model.provider_model_count": "{providers} プロバイダー · {models} モデル",
137
- "system.ai.model.empty": "選択可能なモデルがありません"
140
+ "system.ai.model.empty": "選択可能なモデルがありません",
141
+ "system.ai.knowledge.title": "ナレッジベース",
142
+ "system.ai.knowledge.selected_count": "{count} 件のナレッジベースを選択中",
143
+ "system.ai.knowledge.doc_count": "{count} 件のドキュメント",
144
+ "system.ai.knowledge.select_hint": "コンテキストに注入するナレッジベースを選択",
145
+ "system.ai.knowledge.empty": "利用可能なナレッジベースがありません",
146
+ "system.settings.theme": "テーマ外観",
147
+ "system.settings.theme_auto": "システムに従う",
148
+ "system.settings.theme_dark": "ダーク",
149
+ "system.settings.theme_light": "ライト"
138
150
  }
@@ -100,6 +100,9 @@
100
100
  "system.settings.authorization": "授权管理",
101
101
  "system.settings.contact": "联系我们",
102
102
  "system.settings.feedback": "问题反馈",
103
+ "system.settings.section_appearance": "外观",
104
+ "system.settings.section_security": "账户安全",
105
+ "system.settings.section_more": "更多 · 小程序端",
103
106
  "system.settings.go_ask": "去提问",
104
107
  "system.settings.logout_confirm": "是否退出登录?",
105
108
  "system.settings.logout_failed": "退出登录失败",
@@ -134,5 +137,14 @@
134
137
  "system.ai.model.load_failed": "加载供应商和模型失败",
135
138
  "system.ai.model.title": "选择模型",
136
139
  "system.ai.model.provider_model_count": "{providers} 个供应商 · {models} 个模型",
137
- "system.ai.model.empty": "暂无可选模型"
140
+ "system.ai.model.empty": "暂无可选模型",
141
+ "system.ai.knowledge.title": "知识库",
142
+ "system.ai.knowledge.selected_count": "已选 {count} 个知识库",
143
+ "system.ai.knowledge.doc_count": "{count} 篇文档",
144
+ "system.ai.knowledge.select_hint": "勾选要注入上下文的知识库",
145
+ "system.ai.knowledge.empty": "暂无知识库",
146
+ "system.settings.theme": "主题外观",
147
+ "system.settings.theme_auto": "跟随系统",
148
+ "system.settings.theme_dark": "暗黑",
149
+ "system.settings.theme_light": "明亮"
138
150
  }
@@ -100,6 +100,9 @@
100
100
  "system.settings.authorization": "授權管理",
101
101
  "system.settings.contact": "聯絡我們",
102
102
  "system.settings.feedback": "問題反饋",
103
+ "system.settings.section_appearance": "外觀",
104
+ "system.settings.section_security": "帳戶安全",
105
+ "system.settings.section_more": "更多・小程式端",
103
106
  "system.settings.go_ask": "去提問",
104
107
  "system.settings.logout_confirm": "是否退出登入?",
105
108
  "system.settings.logout_failed": "退出登入失敗",
@@ -134,5 +137,14 @@
134
137
  "system.ai.model.load_failed": "載入供應商與模型失敗",
135
138
  "system.ai.model.title": "選擇模型",
136
139
  "system.ai.model.provider_model_count": "{providers} 個供應商 · {models} 個模型",
137
- "system.ai.model.empty": "暫無可選模型"
140
+ "system.ai.model.empty": "暫無可選模型",
141
+ "system.ai.knowledge.title": "知識庫",
142
+ "system.ai.knowledge.selected_count": "已選 {count} 個知識庫",
143
+ "system.ai.knowledge.doc_count": "{count} 篇文件",
144
+ "system.ai.knowledge.select_hint": "勾選要注入上下文的知識庫",
145
+ "system.ai.knowledge.empty": "暫無知識庫",
146
+ "system.settings.theme": "主題外觀",
147
+ "system.settings.theme_auto": "跟隨系統",
148
+ "system.settings.theme_dark": "暗黑",
149
+ "system.settings.theme_light": "明亮"
138
150
  }
package/src/pages.ts CHANGED
@@ -9,7 +9,7 @@ export const systemPages: Record<string, KratosTaroPageConfig> = {
9
9
  navigationBarTitleText: '',
10
10
  },
11
11
  },
12
- 'pagesMember/settings/settings': { style: { navigationBarTitleText: '' } },
12
+ 'pagesMember/settings/settings': { style: { navigationStyle: 'custom', navigationBarTitleText: '' } },
13
13
  'pagesMember/ai/index': {
14
14
  style: {
15
15
  navigationStyle: 'custom',
@@ -29,5 +29,5 @@ export const systemPages: Record<string, KratosTaroPageConfig> = {
29
29
  navigationBarTitleText: '',
30
30
  },
31
31
  },
32
- 'pagesMember/message/detail': { style: { navigationBarTitleText: '' } },
32
+ 'pagesMember/message/detail': { style: { navigationStyle: 'custom', navigationBarTitleText: '' } },
33
33
  }
@@ -0,0 +1,33 @@
1
+ // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
+ // versions:
3
+ // protoc-gen-ts_proto v2.7.7
4
+ // protoc unknown
5
+ // source: base/v1/ai_knowledge.proto
6
+
7
+ /* eslint-disable */
8
+
9
+ /** AI知识库选项查询请求。 */
10
+ export interface ListAiKnowledgeOptionsRequest {
11
+ }
12
+
13
+ /** AI知识库选项查询响应。 */
14
+ export interface ListAiKnowledgeOptionsResponse {
15
+ /** 知识库选项列表 */
16
+ options: AiKnowledgeOption[];
17
+ }
18
+
19
+ /** AI知识库选项。 */
20
+ export interface AiKnowledgeOption {
21
+ /** 知识库ID */
22
+ id: number;
23
+ /** 知识库名称 */
24
+ name: string;
25
+ /** 已就绪文档数,不含处理失败 */
26
+ doc_count: number;
27
+ }
28
+
29
+ /** AI 知识库选项查询服务。 */
30
+ export interface AiKnowledgeService {
31
+ /** 查询可用的AI知识库选项。 */
32
+ ListAiKnowledgeOptions(request: ListAiKnowledgeOptionsRequest): Promise<ListAiKnowledgeOptionsResponse>;
33
+ }
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/ai_message.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/ai_provider.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/ai_search.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/ai_session.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/ai_tool.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: base/v1/notification.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: google/protobuf/empty.proto
6
6
 
@@ -1,6 +1,6 @@
1
1
  // Code generated by protoc-gen-ts_proto. DO NOT EDIT.
2
2
  // versions:
3
- // protoc-gen-ts_proto v2.11.8
3
+ // protoc-gen-ts_proto v2.7.7
4
4
  // protoc unknown
5
5
  // source: google/protobuf/timestamp.proto
6
6
 
@@ -1,134 +1,53 @@
1
- .my-viewport {
2
- background-color: #f7f7f8;
3
- background-repeat: no-repeat;
4
- background-size: 100% auto;
5
- }
6
-
7
- .my-profile {
8
- position: relative;
9
- margin-top: 30px;
10
- }
11
-
12
- .my-profile--weapp {
13
- padding-top: 44PX;
1
+ page {
2
+ height: 100%;
3
+ overflow: hidden;
4
+ background-color: #eef3f8;
14
5
  }
15
6
 
16
- .my-overview {
17
- display: flex;
18
- height: 120px;
19
- padding: 0 36px;
20
- color: #fff;
7
+ .my-viewport {
8
+ height: 100vh;
9
+ background: var(--kratos-bg-gradient);
21
10
  }
22
11
 
23
- .my-avatar {
24
- width: 120px;
25
- height: 120px;
26
- border-radius: 50%;
27
- background-color: #eee;
12
+ .my-content {
13
+ padding: calc(env(safe-area-inset-top) + 24px) 32px calc(40px + env(safe-area-inset-bottom));
28
14
  }
29
15
 
30
- .my-avatar--gray {
31
- filter: grayscale(100%);
16
+ .my-viewport--weapp .my-content {
17
+ /* 44PX 是系统导航栏高度,88px 按设计稿转换为 44 物理像素。 */
18
+ padding-top: calc(44PX + 88px);
32
19
  }
33
20
 
34
- .my-meta {
21
+ .my-stack {
35
22
  display: flex;
36
23
  flex-direction: column;
37
- justify-content: center;
38
- align-items: flex-start;
39
- padding: 16px 0;
40
- margin-left: 20px;
41
- line-height: 30px;
24
+ gap: 24px;
25
+ margin-top: 16px;
42
26
  }
43
27
 
44
- .my-nickname {
45
- max-width: 180px;
46
- overflow: hidden;
47
- margin-bottom: 16px;
48
- font-size: 30px;
49
- text-overflow: ellipsis;
50
- white-space: nowrap;
28
+ .my-gear {
29
+ width: 34px;
30
+ height: 34px;
51
31
  }
52
32
 
53
- .my-extra {
54
- display: flex;
55
- font-size: 20px;
56
- }
57
-
58
- .my-tips {
59
- font-size: 22px;
60
- }
61
-
62
- .my-update {
63
- padding: 3px 10px 1px;
64
- margin-right: 10px;
65
- border: 1px solid rgba(255, 255, 255, 0.8);
66
- border-radius: 30px;
67
- color: rgba(255, 255, 255, 0.8);
68
- }
69
-
70
- .my-settings {
71
- position: absolute;
72
- right: 40px;
73
- bottom: 0;
74
- color: #fff;
75
- font-size: 30px;
33
+ /* k-pfx 仅定义 flex 排布,卡片内边距交由页面控制 */
34
+ .my-profile {
35
+ padding: 36px 30px;
76
36
  }
77
37
 
78
- .my-ai-entry {
79
- position: relative;
80
- z-index: 99;
38
+ .my-pfx-main {
81
39
  display: flex;
82
40
  align-items: center;
83
- margin: 20px 20px 0;
84
- padding: 26px 24px;
85
- border-radius: 10px;
86
- background-color: #fff;
87
- box-shadow: 0 4px 6px rgba(240, 240, 240, 0.6);
41
+ gap: 24px;
42
+ min-width: 0;
88
43
  }
89
44
 
90
- .my-ai-entry__icon {
91
- flex-shrink: 0;
92
- width: 92px;
93
- height: 92px;
94
- border-radius: 24px;
95
- color: #fff;
96
- font-size: 28px;
97
- font-weight: 700;
98
- line-height: 92px;
99
- text-align: center;
100
- background-color: #27ba9b;
45
+ .my-pfx-meta {
46
+ min-width: 0;
101
47
  }
102
48
 
103
- .my-ai-entry__content {
49
+ /* k-aix 中部文案占位伸展 */
50
+ .my-aix-copy {
104
51
  flex: 1;
105
52
  min-width: 0;
106
- margin-left: 18px;
107
- }
108
-
109
- .my-ai-entry__title {
110
- color: #1e1e1e;
111
- font-size: 30px;
112
- font-weight: 600;
113
- line-height: 40px;
114
- }
115
-
116
- .my-ai-entry__desc {
117
- overflow: hidden;
118
- margin-top: 8px;
119
- color: #747f7c;
120
- font-size: 24px;
121
- line-height: 32px;
122
- text-overflow: ellipsis;
123
- white-space: nowrap;
124
- }
125
-
126
- .my-ai-entry__action {
127
- flex-shrink: 0;
128
- margin-left: 16px;
129
- padding: 10px 18px;
130
- border-radius: 999px;
131
- color: #16806d;
132
- font-size: 24px;
133
- background-color: #e8f8f4;
134
53
  }