Commit bc9d5ca2 by renyizhao

充值协议

parent 31afbc56
......@@ -29,24 +29,124 @@
<!-- 安全使用承诺弹窗 -->
<el-dialog
title="安全使用承诺"
title="面向科创园区的普惠算力公共服务平台服务协议"
v-model="safetyDialog.visible"
width="500px"
width="720px"
append-to-body
:align-center="true"
:close-on-click-modal="false"
>
<div class="safety-content">
<h4>合规使用告知</h4>
<div class="safety-text">
<p>1. 本平台仅提供大模型API调用服务,不得用于任何违法违规用途。</p>
<p>2. 使用本服务即表示您承诺遵守当地法律法规,不得利用本服务从事违规违法活动。</p>
<p>3. 您承诺不会使用本服务进行网络攻击、恶意爬虫、欺诈或其他有害行为。</p>
<p>4. 如发现违规使用行为,平台有权立即终止服务并追究相关责任。</p>
<p>5. 请妥善保管您的API Key,因个人保管不当导致的损失由用户自行承担。</p>
<p>本协议由以下双方于充值确认之日签署:</p>
<p>甲方:{{ userNickname }}</p>
<p>乙方:面向科创园区的普惠算力公共服务平台</p>
<p>欢迎您使用面向科创园区的普惠算力公共服务平台(以下简称"普惠平台")算力服务。请您在注册、充值或使用本平台服务前,仔细阅读本《面向科创园区的普惠算力公共服务平台服务协议》(以下简称"本协议")的全部内容。您点击"同意"或实际使用本平台服务,即视为您已充分阅读、理解并接受本协议的全部条款,本协议即构成对双方具有法律约束力的文件。</p>
<p>甲乙双方本着平等自愿、诚实信用的原则,就甲方向乙方采购普惠平台相关服务事宜,经友好协商,达成如下协议,以资共同遵守。</p>
<p><strong>第一条 定义与解释</strong></p>
<p>1.1 除非本协议另有约定,下列词语具有如下含义:</p>
<p>(1)普惠平台:指乙方运营的以园区新型公共算力基础设施为载体,提供基础算力服务与AI增值服务的综合性算力服务平台。</p>
<p>(2)算力服务:指乙方通过平台向甲方提供的各类算力相关服务,包括但不限于大模型词元(Token)服务、高性能算力服务、AIGC智能内容创作服务、云存储/网络配套增值服务及平台整体授权合作服务。</p>
<p>(3)词元(Token):指大模型处理文本的基本单位,模型推理服务按实际消耗的词元数量进行计费。</p>
<p>(4)账户余额:指甲方在平台账户中充值后剩余的可用于消费的资金金额。</p>
<p>(5)服务订单:指甲方通过平台下单并确认的具体服务需求,包括服务类型、规格、数量、期限等内容。</p>
<p>1.2 本协议中的标题仅为阅读方便而设,不影响本协议任何条款的含义或解释。</p>
<p><strong>第二条 服务内容</strong></p>
<p>2.1 服务范围</p>
<p>平台仅向用户提供商用及个人用途的算力服务(租赁、销售等)。算力仅作为平台内部算力服务的计价单位,不具备法定货币、虚拟货币、金融理财、投资升值、炒作交易、兑换法币等任何功能。用户确认并同意,不会将算力用于任何违法违规或超出本协议约定的用途。乙方服务范围:</p>
<p>(1)大模型词元(Token)服务:乙方通过标准API接口统一对接智谱、豆包、通义千问、DeepSeek等国内主流闭源及开源大模型,采用自研AI网关实现统一API、统一计价、智能路由调度,向甲方提供涵盖文本大模型、视频生成模型、图像生成模型等模型推理词元服务。</p>
<p>(2)高性能算力服务:乙方向甲方提供裸金属服务器(含多型号GPU裸金属服务器)、小型工作站租赁或销售服务,以及文件存储、对象存储等配套服务。</p>
<p>(3)AIGC智能内容创作服务:乙方基于AI大模型能力,向甲方提供文本生成、图像生成、视频生成、语音合成等智能内容创作服务。</p>
<p>(4)云存储/网络等配套增值服务:乙方向甲方提供云存储、网络带宽、安全防护等配套增值服务,保障甲方算力业务的稳定运行。</p>
<p>(5)平台整体授权合作业务:乙方根据甲方需求,提供平台整体技术授权、定制化部署及运营支持等合作服务。</p>
<p>2.4 具体服务内容、规格、价格以甲方下单时平台展示的产品详情及服务订单为准。</p>
<p><strong>第三条 服务费用与充值</strong></p>
<p>3.1 计费方式</p>
<p>3.1.1 大模型词元(Token)服务采用按量计费方式,按甲方实际调用消耗的词元数量实时结算,具体单价以平台公示的各模型定价为准。</p>
<p>3.1.2 高性能算力服务按服务类型分别计费:</p>
<p>(1)裸金属服务器租赁服务按实际使用时长计费,具体单价以各型号服务器公示价格为准;</p>
<p>(2)小型工作站等终端产品按销售价格一次性计费,具体以产品公示价格为准;</p>
<p>(3)存储服务按实际使用容量和时长计费,具体单价以公示价格为准。</p>
<p>3.1.3 AIGC智能内容创作服务、云存储/网络配套增值服务及平台整体授权合作服务的计费方式,以具体服务订单约定为准。</p>
<p>3.2 充值规则</p>
<p>3.2.1 甲方使用平台服务前,需通过平台充值渠道向其账户充入资金。充值成功后,资金即时到账,可用于抵扣平台服务消费。</p>
<p>3.2.2 甲方确认:充值行为视为甲方同意本协议全部条款,充值资金一经到账,本协议即对双方产生法律约束力。</p>
<p>3.2.3 甲方账户余额不足以支付当前服务消费时,乙方有权暂停提供服务,直至甲方完成充值。</p>
<p>3.2.4 除法律规定或本协议另有约定外,甲方充值的资金不予退还。</p>
<p>3.3 发票</p>
<p>甲方如需开具发票,可向乙方提出申请;乙方在收到需求并核实消费金额后,按实际消费金额向甲方开具相应发票。开票类型、抬头及相关信息以甲方提交的申请为准。</p>
<p><strong>第四条 双方权利义务</strong></p>
<p>4.1 甲方权利义务</p>
<p>4.1.1 甲方有权按照本协议及服务订单约定使用乙方提供的算力服务。</p>
<p>4.1.2 甲方有权查询其账户余额、消费记录及服务使用情况。</p>
<p>4.1.3 甲方应按时足额支付服务费用,确保账户余额充足。</p>
<p>4.1.4 甲方应遵守国家法律法规及相关监管规定,不得利用乙方服务从事任何违法违规活动,包括但不限于:</p>
<p>(1)危害国家安全、泄露国家秘密、颠覆国家政权、破坏国家统一;</p>
<p>(2)制作、复制、发布、传播含有违法违规内容的信息;</p>
<p>(3)侵犯他人知识产权、商业秘密或其他合法权益;</p>
<p>(4)未经授权侵入他人计算机系统、窃取数据或从事其他网络攻击行为;</p>
<p>(5)利用大模型生成虚假信息、恶意内容或从事其他违反公序良俗的行为。</p>
<p>4.1.5 甲方应妥善保管其平台账号及密码,因甲方保管不善导致的账号被盗用、资金损失等后果,由甲方自行承担。</p>
<p>4.1.6 甲方应对其使用服务产生的所有行为及后果负责,因甲方使用服务不当造成的任何损失或第三方索赔,由甲方自行承担。</p>
<p>4.2 乙方权利义务</p>
<p>4.2.1 乙方应按照本协议及服务订单约定向甲方提供相应的算力服务。</p>
<p>4.2.2 乙方应保障平台系统的稳定运行,如因系统维护需暂停服务,应提前通过平台公告等方式通知甲方。</p>
<p>4.2.3 乙方有权按照本协议约定收取服务费用,并在甲方欠费时暂停服务。</p>
<p>4.2.4 乙方有权对甲方使用服务的行为进行监督,如发现甲方存在违法违规或违反本协议约定的行为,有权立即暂停或终止服务,并保留追究甲方法律责任的权利。</p>
<p>4.2.5 乙方应建立健全数据安全管理制度,采取必要的技术措施保障甲方数据安全。</p>
<p>4.2.6 乙方上游合作资源(包括但不限于大模型服务、算力资源等)发生调整时,有权相应调整平台服务内容及价格,但应提前通过平台公告等方式通知甲方。</p>
<p><strong>第五条 数据安全与隐私保护</strong></p>
<p>5.1 乙方应严格遵守相关法律法规,采取必要的技术和管理措施,保障甲方数据安全。</p>
<p>5.2 甲方确认并同意:因提供服务所需,乙方可能对甲方输入的提示词、生成内容及相关使用数据进行必要的处理,但不得用于与提供服务无关的其他用途。</p>
<p>5.3 乙方不得擅自向第三方披露甲方的个人信息、业务数据及使用记录,但下列情形除外:</p>
<p>(1)获得甲方明确同意的;</p>
<p>(2)为履行本协议所必需的;</p>
<p>(3)根据法律法规、监管要求或司法机关、行政机关的要求必须提供的;</p>
<p>(4)为保护乙方或第三方合法权益所必需的。</p>
<p>5.4 甲方应确保其输入平台的数据及内容不侵犯任何第三方的合法权益,不违反法律法规规定。因甲方数据或内容违法违规造成的任何后果,由甲方自行承担。</p>
<p><strong>第六条 知识产权</strong></p>
<p>6.1 乙方平台及相关技术、软件、文档等的知识产权归乙方或相关权利人所有,甲方不得擅自复制、修改、传播、出售或进行其他任何形式的侵权使用。</p>
<p>6.2 甲方使用AIGC智能内容创作服务生成的内容,其知识产权归属按照相关法律法规及具体服务规则确定。甲方应确保其使用生成内容的行为符合法律法规规定,不得侵犯任何第三方的合法权益。</p>
<p>6.3 甲方在使用服务过程中向乙方提供的反馈、建议等,乙方有权无偿使用,用于产品优化及服务改进。</p>
<p><strong>第七条 保密条款</strong></p>
<p>7.1 双方对在本协议履行过程中知悉的对方商业秘密、技术信息、经营信息及其他未公开信息负有保密义务,未经对方书面同意,不得向任何第三方披露。</p>
<p>7.2 本保密义务不因本协议的终止而终止,保密期限为自信息知悉之日起三年。</p>
<p>7.3 下列信息不属于保密信息:</p>
<p>(1)已公开的信息;</p>
<p>(2)接收方在披露前已合法知悉的信息;</p>
<p>(3)接收方从有权披露的第三方合法获得的信息;</p>
<p>(4)接收方独立开发的信息。</p>
<p><strong>第八条 违约责任</strong></p>
<p>8.1 任何一方违反本协议约定,应承担违约责任,赔偿对方因此遭受的直接经济损失。</p>
<p>8.2 甲方违反本协议第4.1.4条约定,从事违法违规活动的,乙方有权立即终止服务,扣除账户剩余资金,并保留追究甲方法律责任的权利。</p>
<p>8.3 因乙方原因导致服务中断或无法正常提供的,乙方应按实际中断时间相应延长服务期限或退还相应费用,但因不可抗力、甲方原因或第三方原因导致的除外。</p>
<p>8.4 因上游合作方原因导致服务内容、价格或可用性发生变化的,乙方不承担违约责任,但应及时通知甲方并协助甲方调整服务方案。</p>
<p><strong>第九条 不可抗力</strong></p>
<p>9.1 因不可抗力导致本协议无法履行或部分无法履行的,遭遇不可抗力一方应及时通知对方,并在合理期限内提供相关证明。双方应根据不可抗力的影响,协商决定部分履行、延期履行或解除协议,遭遇不可抗力一方不承担违约责任。</p>
<p>9.2 本协议所称不可抗力,是指不能预见、不能避免并不能克服的客观情况,包括但不限于自然灾害、战争、政府行为、网络基础设施故障、电力中断、上游服务商重大故障等。</p>
<p><strong>第十条 协议的变更与解除</strong></p>
<p>10.1 本协议的变更须经双方协商一致,并以书面形式确认。乙方有权根据业务发展需要调整本协议内容,调整后的协议将在平台公示,甲方继续使用服务视为同意调整后的协议。</p>
<p>10.2 有下列情形之一的,乙方有权单方解除本协议:</p>
<p>(1)甲方严重违反本协议约定,经乙方通知后仍未改正的;</p>
<p>(2)甲方利用服务从事违法违规活动的;</p>
<p>(3)甲方账户连续180天无任何活动且余额为零的;</p>
<p>(4)因不可抗力导致本协议无法继续履行的。</p>
<p>10.3 协议解除后,甲方应立即停止使用服务。除法律规定或本协议另有约定外,甲方账户剩余资金不予退还。</p>
<p><strong>第十一条 争议解决</strong></p>
<p>11.1 本协议的签订、履行、解释及争议解决均适用中华人民共和国法律。</p>
<p>11.2 因本协议引起的或与本协议有关的任何争议,双方应首先通过友好协商解决;协商不成的,任何一方均有权向乙方所在地有管辖权的人民法院提起诉讼。</p>
<p><strong>第十二条 其他条款</strong></p>
<p>12.1 本协议自甲方点击"同意"并完成充值之日起生效。</p>
<p>12.2 本协议未尽事宜,双方可另行协商并签订补充协议。补充协议与本协议具有同等法律效力。</p>
<p>12.3 如本协议中的任何条款被认定为无效或不可执行,不影响其他条款的效力。</p>
<p>12.4 乙方未行使或延迟行使本协议项下的任何权利,不构成对该权利的放弃。</p>
<p>12.5 甲方确认:在点击"同意"前,已仔细阅读并充分理解本协议全部条款,特别是涉及甲方权利义务限制、责任免除及争议解决的条款,乙方已对相关条款进行了充分提示和说明。</p>
<p>甲方(客户)确认:我已仔细阅读并完全同意本协议全部条款,自愿充值并使用平台服务。</p>
<p>乙方(平台运营方):面向科创园区的普惠算力公共服务平台</p>
<p>协议生效日期:{{ agreementDate }}</p>
</div>
<el-checkbox v-model="safetyDialog.checked" class="safety-checkbox">
我已阅读并同意以上安全使用条款,承诺合规使用
我已仔细阅读并完全同意以上协议全部条款
</el-checkbox>
</div>
<template #footer>
......@@ -80,8 +180,13 @@
import { getTokenInfo, getToken, createRecharge, getRecharge } from "@/api/console";
import { ElMessage, ElMessageBox } from "element-plus";
import QRCode from "qrcode";
import useUserStore from "@/store/modules/user";
const { proxy } = getCurrentInstance();
const userStore = useUserStore();
// 当前用户昵称(甲方),响应式取自 Pinia store
const userNickname = computed(() => userStore.name || "");
const loading = ref(false);
const hasToken = ref(false);
......@@ -91,6 +196,9 @@ const maskedKey = ref("");
const baseUrl = ref("");
const rechargeLoading = ref(false);
// 协议生效日期(打开弹窗时记录)
const agreementDate = ref("");
// 轮询相关
const queryInterval = ref(undefined);
const currentRechargeId = ref(undefined);
......@@ -168,13 +276,22 @@ function handleRecharge() {
}
// 若用户已同意过安全承诺,直接充值
if (hasSafetyAgreement()) {
doRecharge();
return;
}
// if (hasSafetyAgreement()) {
// doRecharge();
// return;
// }
// 重置勾选状态并弹出安全承诺弹窗
safetyDialog.value.checked = false;
// 记录打开弹窗时的日期作为协议生效日期
const now = new Date();
const yyyy = now.getFullYear();
const mm = String(now.getMonth() + 1).padStart(2, "0");
const dd = String(now.getDate()).padStart(2, "0");
const hh = String(now.getHours()).padStart(2, "0");
const mi = String(now.getMinutes()).padStart(2, "0");
const ss = String(now.getSeconds()).padStart(2, "0");
agreementDate.value = `${yyyy}-${mm}-${dd}`;
safetyDialog.value.visible = true;
}
......@@ -308,16 +425,46 @@ onUnmounted(() => {
.safety-text {
background: #f5f7fa;
padding: 16px;
padding: 14px 18px;
border-radius: 8px;
margin-bottom: 20px;
max-height: 500px;
overflow-y: auto;
// 之前用 word-break: keep-all 是为了防 <strong> 断行,真凶 .app-wrapper :after
// 已经用 :deep(*)::after 杀掉,这里恢复 CJK 自然断行
overflow-wrap: break-word;
white-space: normal;
p {
margin: 8px 0;
color: #606266;
font-size: 14px;
line-height: 1.6;
overflow-wrap: break-word;
white-space: normal;
// 优化 CJK 段落断行:避免"孤行 / 寡行"——例如
// "12.5 甲方确认..." 默认会在 "的条款," 处断行,pretty 让浏览器
// 在更协调的位置断
text-wrap: pretty;
}
// 协议里"第一条 / 第二条 ..."的强强调,显式声明行内 + 加粗 + 主题色
:deep(strong) {
display: inline;
font-weight: 700;
font-style: normal;
color: var(--el-color-primary);
}
}
// 局部覆盖全局 .app-wrapper :after 残留规则
// 该规则把 .app-wrapper 所有后代的 ::after 强制设成 display: table
// 会让 <strong> 标签触发意外换行
// 仅作用于 .safety-text 作用域,不影响其它页面
.safety-text :deep(*)::after {
content: none !important;
display: inline !important;
clear: none !important;
}
.safety-checkbox {
......
......@@ -149,11 +149,10 @@ function methodTagType(method?: string) {
font-size: 14px;
line-height: 1.8;
color: #303233;
// 显式声明,避免被父级 flex 布局影响行内元素的换行点
// CJK 文字允许在任意两个汉字之间断行(浏览器默认行为)
// 之前用 word-break: keep-all 是为了防 <strong> 断行,真凶 .app-wrapper :after
// 已经用 :deep(*)::after 杀掉,这里恢复 CJK 自然断行
white-space: normal;
// CJK 文本 keep-all:禁止在任意两个汉字之间断行,只允许在空格 / 标点处断行
// 配合 overflow-wrap 处理超长 URL / 英文单词
word-break: keep-all;
overflow-wrap: break-word;
}
......@@ -201,9 +200,8 @@ function methodTagType(method?: string) {
.paragraph {
margin: 6px 0;
color: #4a4f57;
// CJK 文字允许在任意两个汉字之间断行(浏览器默认行为)
white-space: normal;
// 关键:CJK 不在汉字之间断行,strong / code 不会变成"断行点"
word-break: keep-all;
overflow-wrap: break-word;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment