提交 ab4da3a1 authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 8edfdb01
<script setup>
import VueMarkdown from 'vue-markdown-render'
defineProps({ source: { type: String, required: true } })
const options = {
html: true,
breaks: true,
}
</script>
<template>
<VueMarkdown :source="source" :options="options" class="markdown-body" />
</template>
<style lang="scss">
.markdown-body {
font-size: 14px;
line-height: 1;
color: #333;
// 标题样式 - 优化间距
h1,
h2,
h3,
h4,
h5,
h6 {
margin: 1.2em 0 0.6em 0;
font-weight: 600;
line-height: 1.3;
color: #2c3e50;
&:first-child {
margin-top: 0;
}
}
h1 {
font-size: 1.6em;
border-bottom: 2px solid #eaecef;
padding-bottom: 0.4em;
margin-top: 1.5em;
}
h2 {
font-size: 1.4em;
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
margin-top: 1.3em;
}
h3 {
font-size: 1.2em;
margin-top: 1.1em;
}
h4 {
font-size: 1.1em;
margin-top: 1em;
}
h5 {
font-size: 1.05em;
margin-top: 0.9em;
}
h6 {
font-size: 1em;
color: #6a737d;
margin-top: 0.8em;
}
// 段落和文字 - 优化间距
p {
margin: 0.8em 0;
line-height: 1.7;
}
// 强调文本
strong,
b {
font-weight: 600;
color: #2c3e50;
}
em,
i {
font-style: italic;
color: #5a6268;
}
// 链接
a {
color: #0366d6;
text-decoration: none;
&:hover {
text-decoration: underline;
color: #0550ae;
}
}
// 列表 - 优化间距和缩进
ul,
ol {
margin: 0.8em 0;
padding-left: 1.8em;
}
li {
margin: 0.3em 0;
line-height: 1.6;
p {
margin: 0.4em 0;
}
// 嵌套列表间距
ul,
ol {
margin: 0.4em 0;
}
}
// 代码块 - 优化内边距
// pre {
// background-color: #f6f8fa;
// border-radius: 6px;
// padding: 0.9em;
// margin: 0.9em 0;
// overflow: auto;
// border: 1px solid #e1e4e8;
// code {
// background: transparent;
// padding: 0;
// border: none;
// color: #24292e;
// font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;
// font-size: 0.9em;
// line-height: 1.5;
// }
// }
// 行内代码 - 优化内边距
// code {
// background-color: #f6f8fa;
// padding: 0.15em 0.3em;
// border-radius: 3px;
// font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', monospace;
// font-size: 0.88em;
// color: #e01e5a;
// border: 1px solid #e1e4e8;
// line-height: 1.4;
// }
// 引用块 - 优化内边距
blockquote {
margin: 0.9em 0;
padding: 0.6em 0.9em 0.6em 1em;
background-color: #f8f9fa;
border-left: 4px solid #dfe2e5;
color: #6a737d;
border-radius: 0 4px 4px 0;
p {
margin: 0.4em 0;
}
// 嵌套引用
blockquote {
margin: 0.6em 0;
padding: 0.4em 0.8em 0.4em 0.9em;
}
}
// 表格 - 优化单元格内边距
table {
width: 100%;
border-collapse: collapse;
margin: 0.9em 0;
font-size: 0.95em;
th,
td {
padding: 0.5em 0.8em;
border: 1px solid #dfe2e5;
line-height: 1.5;
}
th {
background-color: #f6f8fa;
font-weight: 600;
text-align: left;
}
tr:nth-child(even) {
background-color: #f6f8fa;
}
}
// 水平分割线 - 优化间距
hr {
height: 1px;
background-color: #e1e4e8;
border: none;
margin: 1.5em 0;
}
// 图片 - 优化外边距
img {
max-width: 100%;
height: auto;
border-radius: 4px;
border: 1px solid #e1e4e8;
margin: 0.8em 0;
}
// 任务列表 - 优化对齐
.contains-task-list {
list-style: none;
padding-left: 0;
margin: 0.8em 0;
li {
display: flex;
align-items: flex-start;
gap: 0.5em;
margin: 0.3em 0;
input[type='checkbox'] {
margin-top: 0.15em;
transform: scale(1.1);
}
}
}
// 相邻元素间距优化
* + h1,
* + h2,
* + h3 {
margin-top: 1.4em;
}
// 代码块后的内容间距
pre + * {
margin-top: 1em;
}
// 图片后的内容间距
img + * {
margin-top: 0.9em;
}
[data-streamdown='code-block'] {
background-color: #f6f3f4;
border: 1px solid #e5e5e5;
border-radius: 14px;
}
[data-streamdown='code-block-header'] {
padding: 12px;
border-bottom: 1px solid #e5e5e5;
display: flex;
align-items: center;
justify-content: space-between;
}
// [data-streamdown='code-actions'] {
// display: flex;
// align-items: center;
// justify-content: center;
// gap: 10px;
// button {
// border-radius: 4px;
// border: 0;
// padding: 4px;
// background-color: #ebe6e7;
// cursor: pointer;
// display: flex;
// align-items: center;
// justify-content: center;
// color: #333;
// svg {
// width: 14px;
// height: 14px;
// }
// span {
// display: none;
// }
// }
// }
[data-streamdown='code-body'] {
padding: 12px;
}
}
@media (prefers-color-scheme: dark) {
.markdown-body {
[data-streamdown='code-block-header'] {
color: #fff;
}
}
}
</style>
......@@ -50,6 +50,22 @@ watchEffect(() => {
defineEmits(['save'])
const firstLivePractice = computed(() => {
return props.detail.live_data.practices[0]
})
const firstLivePracticeRecord = computed(() => {
return props.detail.live_data.practice_records.find((item) => item.live_practice_id === firstLivePractice.value?.id)
})
const secondLivePractice = computed(() => {
return props.detail.live_data.practices[1]
})
const secondLivePracticeRecord = computed(() => {
return props.detail.live_data.practice_records.find((item) => item.live_practice_id === secondLivePractice.value?.id)
})
// 商品类别
const categoryTableOptions = {
columns: [
......@@ -304,7 +320,10 @@ const handleNext = () => {
v-model:comment="scoreDetails.practice_record1.comment"
@save="$emit('save')"
@next="handleNext">
<ScoreCardLive :data="detail.live_data.practice_records[0]" v-if="detail.live_data.practice_records[0]" />
<ScoreCardLive
:livePracticeId="firstLivePractice.id"
:recordId="firstLivePracticeRecord.id"
v-if="firstLivePracticeRecord" />
<el-empty v-else />
</ScoreCard>
</el-tab-pane>
......@@ -316,9 +335,9 @@ const handleNext = () => {
v-model:comment="scoreDetails.improvement_plan.comment"
@save="$emit('save')"
@next="handleNext">
<el-form label-position="top" v-if="detail.live_data.practice_records[0]?.improvement_plan">
<el-form label-position="top" v-if="firstLivePracticeRecord?.improvement_plan">
<el-form-item label="改进方案">
<div class="form-box" v-html="detail.live_data.practice_records[0]?.improvement_plan"></div>
<div class="form-box" v-html="firstLivePracticeRecord?.improvement_plan"></div>
</el-form-item>
</el-form>
<el-empty v-else />
......@@ -332,7 +351,10 @@ const handleNext = () => {
v-model:comment="scoreDetails.practice_record2.comment"
@save="$emit('save')"
@next="handleNext">
<ScoreCardLive :data="detail.live_data.practice_records[1]" v-if="detail.live_data.practice_records[1]" />
<ScoreCardLive
:livePracticeId="secondLivePractice.id"
:recordId="secondLivePracticeRecord.id"
v-if="secondLivePracticeRecord" />
<el-empty v-else />
</ScoreCard>
</el-tab-pane>
......
......@@ -62,29 +62,29 @@ const handleNext = () => {
<el-tab-pane label="创意策划方案" :name="1">
<ModuleCard :maxScore="20" :hasSaveButton="detail.status != '2'" @next="handleNext" @save="$emit('save')">
<ScoreCardSub
title="全媒体运营的主题(方向)描述(4分)"
:maxScore="4"
title="全媒体运营的主题(方向)描述(3分)"
:maxScore="3"
v-model:score="scoreDetails.plan_theme.score"
v-model:comment="scoreDetails.plan_theme.comment">
<div class="html-content" v-html="json.plan?.theme"></div>
</ScoreCardSub>
<ScoreCardSub
title="运营的渠道路径(5分)"
:maxScore="5"
title="运营的渠道路径(3分)"
:maxScore="3"
v-model:score="scoreDetails.plan_path.score"
v-model:comment="scoreDetails.plan_path.comment">
<div class="html-content" v-html="json.plan?.path"></div>
</ScoreCardSub>
<ScoreCardSub
title="运营的重点和难点(5分)"
:maxScore="5"
title="运营的重点和难点(4分)"
:maxScore="4"
v-model:score="scoreDetails.plan_difficulty.score"
v-model:comment="scoreDetails.plan_difficulty.comment">
<div class="html-content" v-html="json.plan?.path"></div>
<div class="html-content" v-html="json.plan?.difficulty"></div>
</ScoreCardSub>
<ScoreCardSub
title="运营策划框架方案(从媒介技术、加工匹配、传播、反馈等,要点式表述)(6分)"
:maxScore="6"
title="运营策划框架方案(从媒介技术、加工匹配、传播、反馈等,要点式表述)(10分)"
:maxScore="10"
v-model:score="scoreDetails.plan_framework.score"
v-model:comment="scoreDetails.plan_framework.comment">
<div class="html-content" v-html="json.plan?.framework"></div>
......@@ -92,7 +92,7 @@ const handleNext = () => {
</ModuleCard>
</el-tab-pane>
<el-tab-pane label="视听运营" :name="2">
<ModuleCard :maxScore="20" :hasSaveButton="detail.status != '2'" @next="handleNext" @save="$emit('save')">
<ModuleCard :maxScore="55" :hasSaveButton="detail.status != '2'" @next="handleNext" @save="$emit('save')">
<ScoreCardSub
title="综合稿件标题(5分)"
:maxScore="5"
......@@ -101,22 +101,22 @@ const handleNext = () => {
<div class="html-content" v-html="json.audiovisual?.title"></div>
</ScoreCardSub>
<ScoreCardSub
title="导语(5分)"
:maxScore="5"
title="导语(3分)"
:maxScore="3"
v-model:score="scoreDetails.audiovisual_intro.score"
v-model:comment="scoreDetails.audiovisual_intro.comment">
<div class="html-content" v-html="json.audiovisual?.intro"></div>
</ScoreCardSub>
<ScoreCardSub
title="正文报道文字(不少于200字)(5分)"
:maxScore="5"
title="正文报道文字(不少于200字)(7分)"
:maxScore="7"
v-model:score="scoreDetails.audiovisual_content.score"
v-model:comment="scoreDetails.audiovisual_content.comment">
<div class="html-content" v-html="json.audiovisual?.content"></div>
</ScoreCardSub>
<ScoreCardSub
title="主题活动(场景)现场照片(不少于2张)(10分)"
:maxScore="10"
title="主题活动(场景)现场照片(不少于2张)(5分)"
:maxScore="5"
v-model:score="scoreDetails.audiovisual_images.score"
v-model:comment="scoreDetails.audiovisual_images.comment">
<div class="html-content">
......@@ -128,8 +128,8 @@ const handleNext = () => {
</div>
</ScoreCardSub>
<ScoreCardSub
title="原创视频短片(不少于60秒)。该视频至少包括:字幕、音乐或音效、一段同期声采访(或现场声)等要素。(30分)"
:maxScore="30"
title="原创视频短片(不少于60秒)。该视频至少包括:字幕、音乐或音效、一段同期声采访(或现场声)等要素。(35分)"
:maxScore="35"
v-model:score="scoreDetails.audiovisual_video.score"
v-model:comment="scoreDetails.audiovisual_video.comment">
<div class="html-content">
......@@ -148,8 +148,8 @@ const handleNext = () => {
<div class="html-content" v-html="json.flow?.platforms"></div>
</ScoreCardSub>
<ScoreCardSub
title="流量运营及直播运营的预期成效分析(5分)"
:maxScore="5"
title="流量运营及直播运营的预期成效分析(10分)"
:maxScore="10"
v-model:score="scoreDetails.flow_traffic.score"
v-model:comment="scoreDetails.flow_traffic.comment">
<div class="html-content" v-html="json.flow?.traffic"></div>
......
......@@ -2,17 +2,14 @@
import Demo from '../../test/components/Demo.vue'
import RecordView from '../../test/components/RecordView.vue'
defineProps({
data: { type: Object },
})
defineProps({ livePracticeId: { type: String }, recordId: { type: String } })
</script>
<template>
<RecordView
:recordId="data.id"
:recordId="recordId"
:isView="false"
style="border: 1px solid #eee; border-radius: 10px; margin-bottom: 20px; overflow: hidden"
v-if="data" />
style="border: 1px solid #eee; border-radius: 10px; margin-bottom: 20px; overflow: hidden" />
<Demo :id="data.live_practice_id" :recordId="data.id" :isView="true" />
<Demo :id="livePracticeId" :recordId="recordId" :isView="true" />
</template>
......@@ -109,17 +109,13 @@ const handleUpload = (row) => {
<AppList v-bind="listOptions" ref="appList">
<template #table-x="{ row }">
<el-button text type="primary">
<router-link
:to="{ path: 'test/reply', query: { ...$route.query, id: data.id, record_id: row.id } }"
target="_blank"
<router-link :to="{ path: 'test/reply', query: { ...$route.query, id: data.id, record_id: row.id } }"
>直播视频回放
</router-link>
</el-button>
<br />
<el-button text type="primary">
<router-link
:to="{ path: 'test/view', query: { ...$route.query, id: data.id, record_id: row.id } }"
target="_blank"
<router-link :to="{ path: 'test/view', query: { ...$route.query, id: data.id, record_id: row.id } }"
>查看AI评价</router-link
>
</el-button>
......
<script setup>
import VueMarkdown from 'vue-markdown-render'
import MarkdownRender from '@/components/MarkdownRender.vue'
import Demo from '../components/Demo.vue'
import ImprovementPlan from '../components/ImprovementPlan.vue'
import { getRecord, updateRecord } from '../api'
......@@ -118,6 +118,7 @@ const handleAIScore = async () => {
【用几句话总结卖点讲解的整体情况,如:本次直播时长XX,累计口播XX字,本次直播共讲解了X个卖点,覆盖率达到XX%。讲解较为全面/部分遗漏,重点突出/略显平淡。建议在二次直播中...
二、违禁词分析报告
检测结果总览:
......@@ -144,7 +145,7 @@ const handleAIScore = async () => {
类型:绝对化用语 夸大宣传 医疗用语 虚假宣传
出现时间:第XX
出现次数:X
上下文原文:
"【引用完整句子】"
例:"这款面膜能够治疗痘痘,快速修复受损肌肤..."
......@@ -204,6 +205,7 @@ const handleAIScore = async () => {
销量第一、市场占有率第一
三、直播优化建议
综合评价:
......@@ -211,11 +213,14 @@ const handleAIScore = async () => {
以下 5 个维度需逐项输出:
1、语速与节奏
【现状描述】详细描述当前语速和节奏的表现,如:平均语速约XXX/分钟,整体偏快/适中/偏慢。在产品讲解环节语速过快,在互动环节节奏较好。
【存在问题】示例如下:
问题1,如:产品讲解环节(XX-XX秒)语速过快,达到XXX/分钟,观众可能跟不上
问题2,如:停顿不当,关键信息没有留出思考时间
问题3,如:节奏不稳定,时快时慢,影响观看体验
【改进建议】示例如下:
具体建议1,如:在讲解三重玻尿酸成分时,有意识放慢语速至200/分钟以内,并在关键数据后 停顿1-2
具体建议2,如:使用"那么""接下来"等连接词自然控制节奏
......@@ -246,12 +251,15 @@ const handleAIScore = async () => {
2、互动能力
【现状描述】详细描述当前互动情况,如:互动频率一般/良好/不足,共发起X次互动,回应了X条观众评论。互动形式包括...
【存在问题】示例如下:
问题1,如:互动频率过低,整场直播仅发起X次互动,直播间氛围不够活跃
问题1,如:互动频率过低,整场 直播仅发起X次互动,直播间氛围不够活跃
问题2,如:互动问题设计不够吸引人,观众参与度不高
问题3,如:对观众评论回应不够及时,错过了多次互动机会
问题4,如:抽奖活动执行不到位,未能充分调动观众积极性
【改进建议】示例如下:
具体建议1,如:增加互动频率,建议每3-5分钟发起一次互动,如"有宝宝用过玻尿酸面膜吗?效果如何?"
具体建议2,如:设计更有趣的互动问题,如"猜猜这款面膜的秒杀价是多少?猜中送小样!"
......@@ -261,12 +269,15 @@ const handleAIScore = async () => {
3、卖点讲解能力
【现状描述】详细描述当前卖点讲解情况,如:共讲解了X个卖点,覆盖率XX%。讲解较为清晰/逻辑性强/略显混乱。
【存在问题】示例如下:
问题1,如:卖点讲解不够深入,对"三重玻尿酸"的概念解释不清
问题2,如:缺少具体案例和数据支撑,说服力不足
问题3,如:卖点讲解顺序混乱,没有逻辑层次
问题4,如:遗漏重要卖点"神经酰胺和角鲨烷",影响产品价值传达
【改进建议】示例如下:
具体建议1,如:讲解"三重玻尿酸"时,要说明"大中小分子玻尿酸,分别作用于肌肤不同层次,大分子锁水、中分子补水、小分子深层渗透"
具体建议2,如:引用具体数据"真人实测48小时后肌肤水润度依然提升40%"增强说服力
......@@ -275,12 +286,15 @@ const handleAIScore = async () => {
4、促单能力
【现状描述】详细描述当前促单话术使用情况,如:促单环节共X次,促单话术包括...促单效果一般/良好/不足。
【存在问题】示例如下:
问题1,如:促单话术力度不够,缺乏紧迫感营造
问题2,如:未充分强调价格优惠,"秒杀价69元"只提了一次
问题3,如:限时限量信息传达不清,未能激发购买欲望
问题4,如:组合优惠活动讲解不够清晰,观众可能不理解
【改进建议】示例如下:
具体建议1,如:在秒杀环节强调"只剩最后5分钟!只有100份!现在还剩XX份!"营造紧迫感
具体建议2,如:多次强调价格对比"平时99元,今天秒杀只要69元,一片才6.9元,太划算了!"
......@@ -290,12 +304,15 @@ const handleAIScore = async () => {
5、整体表现力
【现状描述】详细描述整体表现,如:仪表整洁,妆容得体。肢体语言自然/略显僵硬。镜头感良好/需加强。整体自信度较好/略显紧张。
【存在问题】示例如下:
问题1,如:肢体语言不够丰富,全程较为僵硬
问题2,如:眼神交流不够,经常低头看脚本
问题3,如:产品展示不够充分,没有特写展示
问题4,如:整体略显紧张,影响自信度
【改进建议】示例如下:
具体建议1,如:增加手势配合讲解,如讲"三重玻尿酸"时用手势比划"三层"
具体建议2,如:尽量看镜头而不是脚本,熟记话术内容
......@@ -306,37 +323,23 @@ const handleAIScore = async () => {
四、语速分析报告
━━ (一)语速分析 ━━
(一)语速分析
整体语速数据
平均语速:XXX /分钟
最快语速:XXX /分钟(出现在第XX秒)
最慢语速:XXX /分钟(出现在第XX秒)
语速波动:XX /分钟(标准差)
━━ (二)语速标准参考 ━━
理想语速:180-220 /分钟
- 观众能够轻松跟上
- 有足够时间理解信息
- 节奏舒适,不紧不慢
偏快语速:221-240 /分钟
- 部分观众可能跟不上
- 影响信息吸收效果
- 建议适当放慢
过快语速:>240 /分钟
- 大部分观众难以跟上
- 严重影响直播效果
- 必须改进
偏慢语速:150-179 /分钟
- 节奏稍显拖沓
- 可能影响直播间活跃度
- 建议适当加快
过慢语速:<150 /分钟
- 节奏过于拖沓
- 观众容易失去耐心
- 必须改进
(二)语速标准参考
1、理想语速:180-220 /分钟
2、偏快语速:221-240 /分钟
3、过快语速:>240 /分钟
4、偏慢语速:150-179 /分钟
5、过慢语速:<150 /分钟
━━ (三)语速曲线分析 ━━
【语速统计区间】(输出为表格,表头和示例行保持不变
(三)语速曲线分析
【语速统计区间】(输出为表格,表头保持不变,以直播实际实际的语速数据来进行展示,展示每分钟的语速分布情况,下表为展示表格的示例内容,表格里面的内容居中对齐
时间段 | 语速(/) | 评价 | 对应环节
---------------|-------------|--------|-------------
......@@ -357,7 +360,8 @@ const handleAIScore = async () => {
14:00-15:00 | XXX | ✅正常 | 结束语
━━ (四)语速异常时间段详细分析 ━━
(四)语速异常时间段详细分析
示例如下:
【异常片段 #1】━━━━━━━━━━━━
时间:XX:XX-XX:XXX分钟)
......@@ -380,8 +384,10 @@ const handleAIScore = async () => {
数据:XXX /分钟(低于标准XX/分钟)
对应内容:【具体内容,如:互动环节】
━━ (五)语速变化趋势分析 ━━
(五)语速变化趋势分析
【整体趋势】描述语速在整场直播中的变化趋势,如:开场语速正常,在产品讲解环节(4-6分钟)明显加快,互动环节放慢,促销环节又再次加快,结束语恢复正常。整体呈现"波浪形"变化,稳定性不足。
【问题诊断】示例如下:
主要问题:【如:在需要重点讲解的环节(产品卖点)语速反而过快,影响效果】
次要问题:【如:语速波动过大,缺乏整体节奏控制】
......@@ -492,7 +498,7 @@ function formatDuration(seconds) {
<li>覆盖率:{{ ((successWords.length / detail.words?.length) * 100).toFixed(2) }}%</li>
</ul>
<div class="live-markdown">
<VueMarkdown :source="result.sellingPoints" v-if="result.sellingPoints" />
<MarkdownRender :source="result.sellingPoints" v-if="result.sellingPoints" />
</div>
<h2 class="live-title">已讲解卖点:</h2>
<el-steps direction="vertical" :active="1">
......@@ -509,23 +515,23 @@ function formatDuration(seconds) {
</AppCard>
<AppCard title="违禁词分析">
<div class="live-markdown">
<VueMarkdown :source="result.forbiddenWords" v-if="result.forbiddenWords" />
<MarkdownRender :source="result.forbiddenWords" v-if="result.forbiddenWords" />
</div>
</AppCard>
<AppCard title="语速分析">
<div class="live-markdown">
<VueMarkdown :source="result.speechSpeed" v-if="result.speechSpeed" />
<MarkdownRender :source="result.speechSpeed" v-if="result.speechSpeed" />
</div>
</AppCard>
<AppCard title="直播优化建议">
<div class="live-markdown">
<VueMarkdown :source="result.optimizationTips" v-if="result.optimizationTips" />
<MarkdownRender :source="result.optimizationTips" v-if="result.optimizationTips" />
</div>
</AppCard>
<AppCard v-if="false">
<h2 class="live-title">违规情况</h2>
<div class="live-markdown">
<VueMarkdown :source="result.illegal_word" v-if="result.illegal_word" />
<MarkdownRender :source="result.illegal_word" v-if="result.illegal_word" />
</div>
</AppCard>
<AppCard v-if="false">
......
......@@ -83,7 +83,9 @@ const handleRemove = async (row) => {
</template>
<template #table-x="{ row }">
<el-button text type="primary">
<router-link :to="{ path: 'test/demo', query: { id: row.id } }">开始直播</router-link>
<router-link :to="{ path: 'test/demo', query: { id: row.id } }" v-if="row.practice_count == 0"
>开始直播</router-link
>
</el-button>
<el-button text type="primary" @click="handelView(row)">查看</el-button>
<el-button text type="primary" @click="handleRemove(row)">删除</el-button>
......
......@@ -45,19 +45,19 @@ const typeMap = {
{
name: 2,
label: '第二步',
title: '导语(5分)',
title: '导语(3分)',
key: 'intro',
},
{
name: 3,
label: '第三步',
title: '正文报道文字(不少于200字)(5分)',
title: '正文报道文字(不少于200字)(7分)',
key: 'content',
},
{
name: 4,
label: '第四步',
title: '主题活动(场景)现场照片(不少于2张)(10分)',
title: '主题活动(场景)现场照片(不少于2张)(5分)',
key: 'images',
isImage: true,
},
......@@ -65,7 +65,7 @@ const typeMap = {
name: 5,
label: '第五步',
title:
'原创视频短片(不少于60秒)。该视频至少包括:字幕、音乐或音效、一段同期声采访(或现场声)等要素。(30分)',
'原创视频短片(不少于60秒)。该视频至少包括:字幕、音乐或音效、一段同期声采访(或现场声)等要素。(35分)',
key: 'video',
isVideo: true,
},
......@@ -82,7 +82,7 @@ const typeMap = {
{
name: 2,
label: '第二步',
title: '流量运营及直播运营的预期成效分析(5分)',
title: '流量运营及直播运营的预期成效分析(10分)',
key: 'traffic',
},
{
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论