From 429636f3e80d351b41f01001d5d5de9ad175927f Mon Sep 17 00:00:00 2001
From: Nelson <1475262689@qq.com>
Date: Fri, 31 Jul 2026 16:07:18 +0800
Subject: [PATCH] feat: add class share drafts
---
.../apps/admin-web/src/App.vue | 21 +++-
.../apps/admin-web/src/types/api.ts | 13 ++
.../alembic/versions/0017_share_drafts.py | 51 ++++++++
.../apps/backend/app/api/admin_records.py | 12 +-
.../apps/backend/app/api/chat.py | 30 +++++
.../apps/backend/app/models/__init__.py | 3 +-
.../apps/backend/app/models/growth.py | 18 +++
.../app/services/share_draft_service.py | 113 ++++++++++++++++++
.../apps/backend/tests/test_share_drafts.py | 64 ++++++++++
.../apps/user-client/src/App.vue | 54 ++++++++-
.../src/components/SessionQuota.vue | 11 ++
.../apps/user-client/src/services/api.ts | 4 +
.../apps/user-client/src/styles.css | 5 +-
.../apps/user-client/src/types/api.ts | 12 ++
.../docs/qianwen_product_todo.md | 4 +
15 files changed, 410 insertions(+), 5 deletions(-)
create mode 100644 ai_knowledge_base_v2/apps/backend/alembic/versions/0017_share_drafts.py
create mode 100644 ai_knowledge_base_v2/apps/backend/app/services/share_draft_service.py
create mode 100644 ai_knowledge_base_v2/apps/backend/tests/test_share_drafts.py
diff --git a/ai_knowledge_base_v2/apps/admin-web/src/App.vue b/ai_knowledge_base_v2/apps/admin-web/src/App.vue
index b1eb82e..327322e 100644
--- a/ai_knowledge_base_v2/apps/admin-web/src/App.vue
+++ b/ai_knowledge_base_v2/apps/admin-web/src/App.vue
@@ -1603,7 +1603,7 @@ function formatRecordDateTime(value: string, boundary: "start" | "end") {
{{ draft.content }}
+ 这只是分享草稿,系统不会自动发送到任何群。请删掉不想公开的隐私内容,并按自己的真实状态修改后再复制。
+ +确定退出当前账号吗?
diff --git a/ai_knowledge_base_v2/apps/user-client/src/components/SessionQuota.vue b/ai_knowledge_base_v2/apps/user-client/src/components/SessionQuota.vue index e99decd..e9c1693 100644 --- a/ai_knowledge_base_v2/apps/user-client/src/components/SessionQuota.vue +++ b/ai_knowledge_base_v2/apps/user-client/src/components/SessionQuota.vue @@ -10,12 +10,14 @@ const props = defineProps<{ entitlement?: UserEntitlementSummary | null; finishing?: boolean; generatingHelpCard?: boolean; + generatingShareDraft?: boolean; }>(); defineEmits<{ finishTopic: []; openProfile: []; generateHelpCard: []; + generateShareDraft: []; }>(); const hasEntitlement = computed(() => Boolean(props.entitlement)); @@ -54,6 +56,15 @@ const limitText = computed(() => displayLimit.value === null ? "不限" : String > {{ generatingHelpCard ? '生成中' : '求助卡' }} + {{ displayUsed }}/{{ limitText }} diff --git a/ai_knowledge_base_v2/apps/user-client/src/services/api.ts b/ai_knowledge_base_v2/apps/user-client/src/services/api.ts index 16f5cd8..6f02a45 100644 --- a/ai_knowledge_base_v2/apps/user-client/src/services/api.ts +++ b/ai_knowledge_base_v2/apps/user-client/src/services/api.ts @@ -6,6 +6,7 @@ import type { FinishTopicResult, GrowthProfileResult, LoginResult, + ShareDraft, TeacherHelpCard, UserProfile, } from "../types/api"; @@ -90,6 +91,9 @@ export const api = { generateHelpCard: (sessionId: number) => request