perf: 添加项目任务标签功能

This commit is contained in:
kuaifan 2024-12-07 11:55:54 +08:00
parent 952d060e2f
commit 32530e5dc9
9 changed files with 1064 additions and 0 deletions

View File

@ -40,6 +40,7 @@ use Illuminate\Support\Facades\DB;
use App\Models\ProjectTaskFlowChange;
use App\Models\ProjectTaskVisibilityUser;
use App\Models\ProjectTaskTemplate;
use App\Models\ProjectTag;
/**
* @apiDefine project
@ -2858,4 +2859,126 @@ class ProjectController extends AbstractController
$template->update(['is_default' => true]);
return Base::retSuccess('设置成功');
}
/**
* @api {post} api/project/tag/save 51. 保存标签
*
* @apiDescription 需要token身份项目负责人
* @apiVersion 1.0.0
* @apiGroup project
* @apiName tag__save
*
* @apiParam {Number} project_id 项目ID
* @apiParam {Number} [id] 标签ID
* @apiParam {String} name 标签名称
* @apiParam {String} desc 标签描述
* @apiParam {String} color 标签颜色
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function tag__save()
{
$user = User::auth();
//
$projectId = intval(Request::input('project_id'));
if (!$projectId) {
return Base::retError('参数错误');
}
Project::userProject($projectId, true, true);
//
$id = intval(Request::input('id', 0));
$name = trim(Request::input('name', ''));
$desc = trim(Request::input('desc', ''));
$color = trim(Request::input('color', ''));
if (empty($name)) {
return Base::retError('请输入标签名称');
}
if (empty($color)) {
return Base::retError('请选择标签颜色');
}
$data = [
'project_id' => $projectId,
'name' => $name,
'desc' => $desc,
'color' => $color,
'userid' => $user->userid
];
if ($id > 0) {
$tag = ProjectTag::where('id', $id)
->where('project_id', $projectId)
->first();
if (!$tag) {
return Base::retError('标签不存在或已被删除');
}
$tag->update($data);
} else {
$tagCount = ProjectTag::where('project_id', $projectId)->count();
if ($tagCount >= 20) {
return Base::retError('每个项目最多添加20个标签');
}
$tag = ProjectTag::create($data);
}
return Base::retSuccess('保存成功', $tag);
}
/**
* @api {get} api/project/tag/delete 52. 删除标签
*
* @apiDescription 需要token身份项目负责人
* @apiVersion 1.0.0
* @apiGroup project
* @apiName tag__delete
*
* @apiParam {Number} id 标签ID
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function tag__delete()
{
User::auth();
//
$id = intval(Request::input('id'));
if (!$id) {
return Base::retError('参数错误');
}
$tag = ProjectTag::find($id);
if (!$tag) {
return Base::retError('标签不存在或已被删除');
}
Project::userProject($tag->project_id, true, true);
$tag->delete();
return Base::retSuccess('删除成功');
}
/**
* @api {get} api/project/tag/list 53. 标签列表
*
* @apiDescription 需要token身份
* @apiVersion 1.0.0
* @apiGroup project
* @apiName tag__list
*
* @apiParam {Number} project_id 项目ID
*
* @apiSuccess {Number} ret 返回状态码1正确、0错误
* @apiSuccess {String} msg 返回信息(错误描述)
* @apiSuccess {Object} data 返回数据
*/
public function tag__list()
{
User::auth();
//
$projectId = intval(Request::input('project_id'));
if (!$projectId) {
return Base::retError('参数错误');
}
$tags = ProjectTag::where('project_id', $projectId)
->orderByDesc('id')
->get();
return Base::retSuccess('success', $tags);
}
}

65
app/Models/ProjectTag.php Normal file
View File

@ -0,0 +1,65 @@
<?php
namespace App\Models;
/**
* App\Models\ProjectTag
*
* @property int $id
* @property int $project_id 项目ID
* @property string $name 标签名称
* @property string|null $desc 标签描述
* @property string|null $color 颜色
* @property int $userid 创建人
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property-read \App\Models\Project $project
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelHidden()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel change($array)
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel getKeyValue()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag query()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel remove()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel saveOrIgnore()
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereColor($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereDesc($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereUpdatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTag whereUserid($value)
* @mixin \Eloquent
*/
class ProjectTag extends AbstractModel
{
protected $hidden = [
'created_at',
'updated_at',
];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'project_id',
'name',
'desc',
'color',
'userid'
];
/**
* 关联项目
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function project()
{
return $this->belongsTo(Project::class);
}
}

View File

@ -12,6 +12,7 @@ namespace App\Models;
* @property string|null $color 颜色
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property int|null $tag_id 标签ID
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelAppend()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel cancelHidden()
* @method static \Illuminate\Database\Eloquent\Builder|AbstractModel change($array)
@ -26,6 +27,7 @@ namespace App\Models;
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskTag whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskTag whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskTag whereProjectId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskTag whereTagId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskTag whereTaskId($value)
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTaskTag whereUpdatedAt($value)
* @mixin \Eloquent

View File

@ -0,0 +1,42 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProjectTagsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
if (Schema::hasTable('project_tags')) {
return;
}
Schema::create('project_tags', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('project_id')->index()->comment('项目ID');
$table->string('name', 50)->comment('标签名称');
$table->string('desc', 255)->nullable()->comment('标签描述');
$table->string('color', 20)->nullable()->default('')->comment('颜色');
$table->unsignedBigInteger('userid')->index()->comment('创建人');
$table->timestamps();
// 外键约束
$table->foreign('project_id')->references('id')->on('projects')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('project_tags');
}
}

View File

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddTagIdFieldsToPreProjectTaskTagsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('project_task_tags', function (Blueprint $table) {
if (!Schema::hasColumn('project_task_tags', 'tag_id')) {
$table->bigInteger('tag_id')->nullable()->default(0)->comment('标签ID');
$table->index('tag_id');
}
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('project_task_tags', function (Blueprint $table) {
$table->dropColumn('tag_id');
});
}
}

View File

@ -54,6 +54,7 @@
<EDropdownItem command="setting">{{$L('项目设置')}}</EDropdownItem>
<EDropdownItem command="permissions">{{$L('权限设置')}}</EDropdownItem>
<EDropdownItem command="task_template">{{$L('任务模板')}}</EDropdownItem>
<EDropdownItem command="task_tag">{{$L('任务标签')}}</EDropdownItem>
<EDropdownItem command="workflow">{{$L('工作流设置')}}</EDropdownItem>
<EDropdownItem command="user" divided>{{$L('成员管理')}}</EDropdownItem>
<EDropdownItem command="invite">{{$L('邀请链接')}}</EDropdownItem>
@ -469,6 +470,14 @@
<ProjectTaskTemplate ref="taskTemplate" v-if="taskTemplateShow" :project-id="projectId"/>
</DrawerOverlay>
<!--任务标签-->
<DrawerOverlay
v-model="taskTagShow"
placement="right"
:size="720">
<ProjectTaskTag ref="taskTag" v-if="taskTagShow" :project-id="projectId"/>
</DrawerOverlay>
<!--工作流程设置-->
<DrawerOverlay
v-model="workflowShow"
@ -514,6 +523,7 @@ import TaskRow from "./TaskRow";
import TaskArchived from "./TaskArchived";
import ProjectLog from "./ProjectLog";
import DrawerOverlay from "../../../components/DrawerOverlay";
import ProjectTaskTag from "./ProjectTaskTag";
import ProjectTaskTemplate from "./ProjectTaskTemplate";
import ProjectWorkflow from "./ProjectWorkflow";
import ProjectPermission from "./ProjectPermission";
@ -531,6 +541,7 @@ export default {
UserAvatarTip,
UserSelect,
TaskMenu,
ProjectTaskTag,
ProjectTaskTemplate,
ProjectWorkflow,
ProjectPermission,
@ -579,6 +590,7 @@ export default {
transferLoad: 0,
taskTemplateShow: false,
taskTagShow: false,
workflowShow: false,
logShow: false,
@ -1344,6 +1356,10 @@ export default {
this.taskTemplateShow = true;
break;
case "task_tag":
this.taskTagShow = true;
break;
case "workflow":
this.workflowShow = true;
break;

View File

@ -0,0 +1,257 @@
<template>
<div class="project-task-template">
<div class="header">
<div class="title">{{$L('任务标签')}}</div>
<div class="actions">
<Button type="primary" icon="md-add" @click="handleAdd">
{{$L('新建标签')}}
</Button>
</div>
</div>
<div class="content">
<div v-if="!tags.length" class="empty">
<div class="empty-text">{{$L('当前项目暂无任务标签')}}</div>
<Button type="primary" icon="md-add" @click="handleAdd">{{$L('新建标签')}}</Button>
</div>
<div v-else class="template-list">
<div v-for="item in tags" :key="item.id" class="tag-item">
<div class="tag-contents">
<div class="tag-title">{{ item.name }}</div>
<div v-if="item.desc" class="tag-desc">{{ item.desc }}</div>
</div>
<div class="tag-actions">
<Button @click="handleEdit(item)" type="primary">
{{$L('编辑')}}
</Button>
<Button @click="handleDelete(item)" type="error">
{{$L('删除')}}
</Button>
</div>
</div>
</div>
</div>
<!-- 编辑标签弹窗 -->
<Modal
v-model="showEditModal"
:title="editingTag.id ? $L('编辑标签') : $L('新建标签')"
:mask-closable="false">
<Form
ref="editForm"
:model="editingTag"
:rules="formRules"
v-bind="formOptions"
@submit.native.prevent>
<FormItem prop="name" :label="$L('标签名称')">
<Input ref="tagName" v-model="editingTag.name" :disabled="systemTagIsMultiple" :placeholder="$L('请输入标签名称')"/>
</FormItem>
<FormItem prop="desc" :label="$L('标签描述')">
<Input v-model="editingTag.desc" :disabled="systemTagIsMultiple" :placeholder="$L('请输入标签描述')"/>
</FormItem>
<FormItem v-if="!editingTag.id">
<div class="project-task-template-system">
<div v-if="!systemTagShow" @click="onSystemTag" class="tip-title">{{$L('使用示例标签')}}</div>
<ul v-else>
<li
:class="{selected:systemTagIsMultiple}"
@click="systemTagIsMultiple=!systemTagIsMultiple">
<i class="taskfont" v-html="systemTagIsMultiple ? '&#xe627;' : '&#xe625;'"></i>
{{$L('多选')}}
</li>
<li
v-for="(item, index) in systemTagData"
:key="index"
:class="{selected:systemTagIsMultiple && systemTagMultipleData.indexOf(item)!==-1}"
@click="useSystemTag(item)">{{item.name}}</li>
</ul>
</div>
</FormItem>
</Form>
<div slot="footer" class="adaption">
<Button type="default" @click="showEditModal=false">{{$L('取消')}}</Button>
<Button type="primary" :loading="loading" @click="handleSave">
{{ $L('保存') }}
{{ systemTagIsMultiple && systemTagMultipleData.length > 0 ? ` (${systemTagMultipleData.length})` : '' }}
</Button>
</div>
</Modal>
</div>
</template>
<script>
import {mapState} from 'vuex'
import AllTaskTags from "./tags";
import {getLanguage} from "../../../../language";
export default {
name: 'ProjectTaskTag',
props: {
projectId: {
type: [Number, String],
required: true
}
},
data() {
return {
loading: false,
tags: [],
showEditModal: false,
editingTag: this.getEmptyTag(),
formRules: {
name: [
{ required: true, message: this.$L('请输入标签名称'), trigger: 'blur' }
]
},
systemTagShow: false,
systemTagData: [],
systemTagIsMultiple: false,
systemTagMultipleData: [],
}
},
computed: {
...mapState(['formOptions'])
},
created() {
this.loadTags()
},
watch: {
showEditModal(val) {
if (!val) {
this.$refs.editForm.resetFields()
this.systemTagShow = false
this.systemTagIsMultiple = false
}
}
},
methods: {
//
getEmptyTag() {
return {
id: null,
project_id: this.projectId,
name: '',
desc: '',
color: ''
}
},
//
async loadTags() {
this.loading = true
try {
const {data} = await this.$store.dispatch("call", {
url: 'project/tag/list',
data: {
project_id: this.projectId
},
spinner: 300
})
this.tags = data || []
} catch ({msg}) {
$A.messageError(msg || '加载标签失败')
}
this.loading = false
},
//
handleAdd() {
this.editingTag = this.getEmptyTag()
this.showEditModal = true
},
//
handleEdit(tag) {
this.editingTag = { ...tag }
this.showEditModal = true
},
//
async handleSave() {
if (!this.editingTag.name) {
$A.messageWarning('请输入标签名称')
return
}
let savePromises = []
if (this.systemTagIsMultiple) {
if (this.systemTagMultipleData.length === 0) {
$A.messageWarning('请选择示例标签')
return
}
savePromises = this.systemTagMultipleData.map(item => {
const tag = { ...this.editingTag, id: null, name: item.name, desc: item.desc, color: item.color }
return this.handleSaveCall(tag)
})
} else {
savePromises.push(this.handleSaveCall(this.editingTag))
}
try {
const results = await Promise.all(savePromises)
$A.messageSuccess(results.length === 1 ? results[0].msg : '全部保存成功')
this.showEditModal = false
this.loadTags()
} catch (error) {
$A.messageError(error.msg || '保存失败')
}
},
//
async handleSaveCall(data) {
return this.$store.dispatch("call", {
url: 'project/tag/save',
data,
method: 'post',
spinner: 300
})
},
//
async handleDelete(tag) {
$A.modalConfirm({
title: '确认删除',
content: '确定要删除该标签吗?',
onOk: async () => {
try {
const {msg} = await this.$store.dispatch("call", {
url: 'project/tag/delete',
data: {
id: tag.id
},
spinner: 300
})
$A.messageSuccess(msg || '删除成功')
this.loadTags()
} catch ({msg}) {
$A.messageError(msg || '删除失败')
}
}
})
},
onSystemTag() {
const lang = getLanguage()
this.systemTagData = typeof AllTaskTags[lang] === "undefined" ? AllTaskTags['en'] : AllTaskTags[lang]
this.systemTagShow = true
},
// 使
useSystemTag(item) {
this.editingTag.name = item.name
this.editingTag.desc = item.desc
this.editingTag.color = item.color
//
if (this.systemTagIsMultiple) {
const index = this.systemTagMultipleData.indexOf(item)
if (index === -1) {
this.systemTagMultipleData.push(item)
} else {
this.systemTagMultipleData.splice(index, 1)
}
}
}
}
}
</script>

View File

@ -0,0 +1,262 @@
export default {
"zh": [
{"name": "需求", "desc": "新功能或业务需求", "color": "#007bff"},
{"name": "优化", "desc": "现有功能或体验的改进", "color": "#28a745"},
{"name": "Bug", "desc": "问题或功能异常", "color": "#dc3545"},
{"name": "设计", "desc": "与UI/UX设计相关的任务", "color": "#6f42c1"},
{"name": "开发", "desc": "涉及前端或后端开发的任务", "color": "#17a2b8"},
{"name": "测试", "desc": "测试相关任务", "color": "#fd7e14"},
{"name": "文档", "desc": "与文档编写或维护相关的任务", "color": "#20c997"},
{"name": "性能", "desc": "性能优化相关任务", "color": "#6610f2"},
{"name": "安全", "desc": "与安全问题或漏洞相关的任务", "color": "#e83e8c"},
{"name": "技术债务", "desc": "需要偿还的技术债务", "color": "#6c757d"},
{"name": "实验性", "desc": "任务属于探索性质", "color": "#6f42c1"},
{"name": "学习任务", "desc": "任务用于学习或研究", "color": "#20c997"},
{"name": "紧急", "desc": "需要优先处理的任务", "color": "#d63384"},
{"name": "高优先级", "desc": "优先级较高的任务", "color": "#ffc107"},
{"name": "低优先级", "desc": "优先级较低的任务", "color": "#6c757d"},
{"name": "无效", "desc": "任务被标记为无效", "color": "#adb5bd"},
{"name": "重复", "desc": "任务与已有任务重复", "color": "#ced4da"},
{"name": "不适用", "desc": "任务不再适用当前需求", "color": "#dee2e6"},
{"name": "延期", "desc": "任务因某些原因被延期", "color": "#ffc107"},
{"name": "阻塞", "desc": "任务被问题或依赖阻塞", "color": "#dc3545"},
{"name": "待确认", "desc": "任务需要进一步确认", "color": "#0dcaf0"},
{"name": "已搁置", "desc": "任务暂时搁置", "color": "#adb5bd"},
{"name": "待复盘", "desc": "任务完成后需复盘", "color": "#17a2b8"},
{"name": "外部依赖", "desc": "依赖外部资源的任务", "color": "#fd7e14"},
{"name": "跨团队协作", "desc": "需要多个团队协作的任务", "color": "#17a2b8"},
{"name": "研发支持", "desc": "为其他团队提供支持", "color": "#20c997"}
],
"zh-CHT": [
{"name": "需求", "desc": "新功能或業務需求", "color": "#007bff"},
{"name": "優化", "desc": "現有功能或體驗的改進", "color": "#28a745"},
{"name": "Bug", "desc": "功能異常或錯誤", "color": "#dc3545"},
{"name": "設計", "desc": "與UI/UX設計相關的任務", "color": "#6f42c1"},
{"name": "開發", "desc": "前後端開發相關任務", "color": "#17a2b8"},
{"name": "測試", "desc": "功能測試或用例驗證", "color": "#fd7e14"},
{"name": "文檔", "desc": "與文檔編寫或維護相關的任務", "color": "#20c997"},
{"name": "性能", "desc": "性能優化相關任務", "color": "#6610f2"},
{"name": "安全", "desc": "與安全問題或漏洞相關的任務", "color": "#e83e8c"},
{"name": "技術債務", "desc": "需要償還的技術債務", "color": "#6c757d"},
{"name": "實驗性", "desc": "任務屬於探索性質", "color": "#6f42c1"},
{"name": "學習任務", "desc": "任務用於學習或研究", "color": "#20c997"},
{"name": "緊急", "desc": "需要優先處理的任務", "color": "#d63384"},
{"name": "高優先級", "desc": "優先級較高的任務", "color": "#ffc107"},
{"name": "低優先級", "desc": "優先級較低的任務", "color": "#6c757d"},
{"name": "無效", "desc": "任務無效,不再處理", "color": "#adb5bd"},
{"name": "重複", "desc": "與其他任務重複", "color": "#ced4da"},
{"name": "不適用", "desc": "任務不再適用當前需求", "color": "#dee2e6"},
{"name": "延期", "desc": "任務因某些原因被延期", "color": "#ffc107"},
{"name": "阻塞", "desc": "任務被問題或依賴阻塞", "color": "#dc3545"},
{"name": "待確認", "desc": "任務信息不完整,需確認", "color": "#0dcaf0"},
{"name": "已擱置", "desc": "任務暫停處理,未來可能重啟", "color": "#adb5bd"},
{"name": "待復盤", "desc": "任務完成後需總結復盤", "color": "#17a2b8"},
{"name": "外部依賴", "desc": "依賴外部資源的任務", "color": "#fd7e14"},
{"name": "跨團隊協作", "desc": "需要多個團隊協作的任務", "color": "#17a2b8"},
{"name": "研發支持", "desc": "為其他團隊提供支持", "color": "#20c997"}
],
"en": [
{"name": "Requirement", "desc": "New feature or business requirement", "color": "#007bff"},
{"name": "Optimization", "desc": "Improvement of existing features or experience", "color": "#28a745"},
{"name": "Bug", "desc": "Feature malfunction or error", "color": "#dc3545"},
{"name": "Design", "desc": "Tasks related to UI/UX design", "color": "#6f42c1"},
{"name": "Development", "desc": "Tasks related to frontend or backend development", "color": "#17a2b8"},
{"name": "Testing", "desc": "Feature testing or case verification", "color": "#fd7e14"},
{"name": "Documentation", "desc": "Tasks related to writing or maintaining documentation", "color": "#20c997"},
{"name": "Performance", "desc": "Tasks related to performance optimization", "color": "#6610f2"},
{"name": "Security", "desc": "Tasks related to security issues or vulnerabilities", "color": "#e83e8c"},
{"name": "Technical Debt", "desc": "Technical debt that needs to be addressed", "color": "#6c757d"},
{"name": "Experimental", "desc": "Tasks of an exploratory nature", "color": "#6f42c1"},
{"name": "Learning Task", "desc": "Tasks for learning or research purposes", "color": "#20c997"},
{"name": "Urgent", "desc": "Tasks that need to be prioritized", "color": "#d63384"},
{"name": "High Priority", "desc": "Tasks with high priority", "color": "#ffc107"},
{"name": "Low Priority", "desc": "Tasks with low priority", "color": "#6c757d"},
{"name": "Invalid", "desc": "Task is invalid and will no longer be processed", "color": "#adb5bd"},
{"name": "Duplicate", "desc": "Task is a duplicate of an existing one", "color": "#ced4da"},
{"name": "Not Applicable", "desc": "Task is no longer applicable to current requirements", "color": "#dee2e6"},
{"name": "Postponed", "desc": "Task is postponed for some reason", "color": "#ffc107"},
{"name": "Blocked", "desc": "Task is blocked by issues or dependencies", "color": "#dc3545"},
{"name": "To Be Confirmed", "desc": "Task information is incomplete and needs confirmation", "color": "#0dcaf0"},
{"name": "On Hold", "desc": "Task is temporarily on hold and may resume in the future", "color": "#adb5bd"},
{"name": "To Be Reviewed", "desc": "Task needs to be reviewed or summarized after completion", "color": "#17a2b8"},
{"name": "External Dependency", "desc": "Task depends on external resources", "color": "#fd7e14"},
{"name": "Cross-Team Collaboration", "desc": "Task requires collaboration across multiple teams", "color": "#17a2b8"},
{"name": "R&D Support", "desc": "Providing support to other teams", "color": "#20c997"}
],
"ko": [
{"name": "요구사항", "desc": "새로운 기능 또는 비즈니스 요구사항", "color": "#007bff"},
{"name": "최적화", "desc": "기존 기능 또는 경험의 개선", "color": "#28a745"},
{"name": "버그", "desc": "기능 오작동 또는 오류", "color": "#dc3545"},
{"name": "디자인", "desc": "UI/UX 디자인 관련 작업", "color": "#6f42c1"},
{"name": "개발", "desc": "프론트엔드 또는 백엔드 개발 관련 작업", "color": "#17a2b8"},
{"name": "테스트", "desc": "기능 테스트 또는 사례 검증", "color": "#fd7e14"},
{"name": "문서화", "desc": "문서 작성 또는 유지보수 작업", "color": "#20c997"},
{"name": "성능", "desc": "성능 최적화 관련 작업", "color": "#6610f2"},
{"name": "보안", "desc": "보안 문제 또는 취약점 관련 작업", "color": "#e83e8c"},
{"name": "기술 부채", "desc": "해결해야 할 기술 부채", "color": "#6c757d"},
{"name": "실험적", "desc": "탐색적인 성격의 작업", "color": "#6f42c1"},
{"name": "학습 작업", "desc": "학습 또는 연구를 위한 작업", "color": "#20c997"},
{"name": "긴급", "desc": "우선적으로 처리해야 할 작업", "color": "#d63384"},
{"name": "높은 우선순위", "desc": "우선순위가 높은 작업", "color": "#ffc107"},
{"name": "낮은 우선순위", "desc": "우선순위가 낮은 작업", "color": "#6c757d"},
{"name": "무효", "desc": "작업이 무효화되어 더 이상 처리되지 않음", "color": "#adb5bd"},
{"name": "중복", "desc": "기존 작업과 중복된 작업", "color": "#ced4da"},
{"name": "부적합", "desc": "현재 요구사항에 더 이상 적합하지 않은 작업", "color": "#dee2e6"},
{"name": "연기됨", "desc": "특정 이유로 연기된 작업", "color": "#ffc107"},
{"name": "차단됨", "desc": "문제 또는 의존성으로 인해 차단된 작업", "color": "#dc3545"},
{"name": "확인 필요", "desc": "정보가 불완전하여 확인이 필요한 작업", "color": "#0dcaf0"},
{"name": "보류 중", "desc": "작업이 일시적으로 보류되었으며, 추후 재개될 수 있음", "color": "#adb5bd"},
{"name": "리뷰 필요", "desc": "작업 완료 후 요약 또는 리뷰가 필요한 작업", "color": "#17a2b8"},
{"name": "외부 의존성", "desc": "외부 리소스에 의존하는 작업", "color": "#fd7e14"},
{"name": "팀 간 협업", "desc": "다수의 팀이 협업해야 하는 작업", "color": "#17a2b8"},
{"name": "개발 지원", "desc": "다른 팀에 지원을 제공하는 작업", "color": "#20c997"}
],
"ja": [
{"name": "要件", "desc": "新しい機能またはビジネス要件", "color": "#007bff"},
{"name": "最適化", "desc": "既存の機能または体験の改善", "color": "#28a745"},
{"name": "バグ", "desc": "機能の不具合またはエラー", "color": "#dc3545"},
{"name": "デザイン", "desc": "UI/UXデザインに関連するタスク", "color": "#6f42c1"},
{"name": "開発", "desc": "フロントエンドまたはバックエンド開発に関するタスク", "color": "#17a2b8"},
{"name": "テスト", "desc": "機能テストまたはケース検証", "color": "#fd7e14"},
{"name": "ドキュメント", "desc": "ドキュメントの作成または保守に関連するタスク", "color": "#20c997"},
{"name": "パフォーマンス", "desc": "パフォーマンス最適化に関連するタスク", "color": "#6610f2"},
{"name": "セキュリティ", "desc": "セキュリティ問題または脆弱性に関連するタスク", "color": "#e83e8c"},
{"name": "技術的負債", "desc": "解消が必要な技術的負債", "color": "#6c757d"},
{"name": "実験的", "desc": "探索的な性質のタスク", "color": "#6f42c1"},
{"name": "学習タスク", "desc": "学習または研究を目的としたタスク", "color": "#20c997"},
{"name": "緊急", "desc": "優先的に処理が必要なタスク", "color": "#d63384"},
{"name": "高優先度", "desc": "優先度の高いタスク", "color": "#ffc107"},
{"name": "低優先度", "desc": "優先度の低いタスク", "color": "#6c757d"},
{"name": "無効", "desc": "タスクが無効で、処理されなくなった", "color": "#adb5bd"},
{"name": "重複", "desc": "既存のタスクと重複しているタスク", "color": "#ced4da"},
{"name": "不適用", "desc": "現在の要件に適用されなくなったタスク", "color": "#dee2e6"},
{"name": "延期", "desc": "何らかの理由で延期されたタスク", "color": "#ffc107"},
{"name": "ブロック中", "desc": "問題または依存関係によってブロックされたタスク", "color": "#dc3545"},
{"name": "要確認", "desc": "情報が不完全で確認が必要なタスク", "color": "#0dcaf0"},
{"name": "保留中", "desc": "タスクが一時的に保留され、将来的に再開される可能性がある", "color": "#adb5bd"},
{"name": "レビュー待ち", "desc": "タスク完了後に要約またはレビューが必要なタスク", "color": "#17a2b8"},
{"name": "外部依存", "desc": "外部リソースに依存するタスク", "color": "#fd7e14"},
{"name": "チーム間協力", "desc": "複数のチームが協力する必要があるタスク", "color": "#17a2b8"},
{"name": "開発サポート", "desc": "他のチームにサポートを提供するタスク", "color": "#20c997"}
],
"de": [
{"name": "Anforderung", "desc": "Neue Funktion oder geschäftliche Anforderung", "color": "#007bff"},
{"name": "Optimierung", "desc": "Verbesserung bestehender Funktionen oder Erfahrungen", "color": "#28a745"},
{"name": "Bug", "desc": "Funktionsfehler oder Problem", "color": "#dc3545"},
{"name": "Design", "desc": "Aufgaben im Zusammenhang mit UI/UX-Design", "color": "#6f42c1"},
{"name": "Entwicklung", "desc": "Aufgaben im Bereich Frontend- oder Backend-Entwicklung", "color": "#17a2b8"},
{"name": "Testen", "desc": "Funktionstests oder Fallüberprüfungen", "color": "#fd7e14"},
{"name": "Dokumentation", "desc": "Aufgaben zur Erstellung oder Pflege von Dokumentationen", "color": "#20c997"},
{"name": "Leistung", "desc": "Aufgaben zur Leistungsoptimierung", "color": "#6610f2"},
{"name": "Sicherheit", "desc": "Aufgaben im Zusammenhang mit Sicherheitsproblemen oder Schwachstellen", "color": "#e83e8c"},
{"name": "Technische Schulden", "desc": "Technische Schulden, die abgebaut werden müssen", "color": "#6c757d"},
{"name": "Experimentell", "desc": "Aufgaben explorativer Natur", "color": "#6f42c1"},
{"name": "Lernaufgabe", "desc": "Aufgaben zum Lernen oder für Forschungszwecke", "color": "#20c997"},
{"name": "Dringend", "desc": "Aufgaben, die vorrangig bearbeitet werden müssen", "color": "#d63384"},
{"name": "Hohe Priorität", "desc": "Aufgaben mit hoher Priorität", "color": "#ffc107"},
{"name": "Niedrige Priorität", "desc": "Aufgaben mit niedriger Priorität", "color": "#6c757d"},
{"name": "Ungültig", "desc": "Aufgabe ist ungültig und wird nicht weiter bearbeitet", "color": "#adb5bd"},
{"name": "Duplikat", "desc": "Aufgabe ist ein Duplikat einer bestehenden Aufgabe", "color": "#ced4da"},
{"name": "Nicht anwendbar", "desc": "Aufgabe ist für die aktuellen Anforderungen nicht mehr relevant", "color": "#dee2e6"},
{"name": "Verschoben", "desc": "Aufgabe wurde aus bestimmten Gründen verschoben", "color": "#ffc107"},
{"name": "Blockiert", "desc": "Aufgabe ist durch Probleme oder Abhängigkeiten blockiert", "color": "#dc3545"},
{"name": "Zu bestätigen", "desc": "Aufgabe ist unvollständig und muss bestätigt werden", "color": "#0dcaf0"},
{"name": "In Wartestellung", "desc": "Aufgabe ist vorübergehend pausiert und könnte später wieder aufgenommen werden", "color": "#adb5bd"},
{"name": "Zu überprüfen", "desc": "Aufgabe muss nach Abschluss überprüft oder zusammengefasst werden", "color": "#17a2b8"},
{"name": "Externe Abhängigkeit", "desc": "Aufgabe ist von externen Ressourcen abhängig", "color": "#fd7e14"},
{"name": "Teamübergreifende Zusammenarbeit", "desc": "Aufgabe erfordert Zusammenarbeit mehrerer Teams", "color": "#17a2b8"},
{"name": "Entwicklungsunterstützung", "desc": "Aufgabe zur Unterstützung anderer Teams", "color": "#20c997"}
],
"fr": [
{"name": "Exigence", "desc": "Nouvelle fonctionnalité ou exigence métier", "color": "#007bff"},
{"name": "Optimisation", "desc": "Amélioration des fonctionnalités ou de l'expérience existante", "color": "#28a745"},
{"name": "Bug", "desc": "Dysfonctionnement ou erreur", "color": "#dc3545"},
{"name": "Conception", "desc": "Tâches liées à la conception UI/UX", "color": "#6f42c1"},
{"name": "Développement", "desc": "Tâches liées au développement frontend ou backend", "color": "#17a2b8"},
{"name": "Test", "desc": "Tests fonctionnels ou vérifications de cas", "color": "#fd7e14"},
{"name": "Documentation", "desc": "Tâches de rédaction ou de maintenance de la documentation", "color": "#20c997"},
{"name": "Performance", "desc": "Tâches liées à l'optimisation des performances", "color": "#6610f2"},
{"name": "Sécurité", "desc": "Tâches liées aux problèmes ou vulnérabilités de sécurité", "color": "#e83e8c"},
{"name": "Dette technique", "desc": "Dette technique à résoudre", "color": "#6c757d"},
{"name": "Expérimental", "desc": "Tâches de nature exploratoire", "color": "#6f42c1"},
{"name": "Tâche d'apprentissage", "desc": "Tâches pour apprentissage ou recherche", "color": "#20c997"},
{"name": "Urgent", "desc": "Tâches nécessitant un traitement prioritaire", "color": "#d63384"},
{"name": "Haute priorité", "desc": "Tâches avec une priorité élevée", "color": "#ffc107"},
{"name": "Basse priorité", "desc": "Tâches avec une priorité basse", "color": "#6c757d"},
{"name": "Invalide", "desc": "Tâche invalide qui ne sera plus traitée", "color": "#adb5bd"},
{"name": "Dupliqué", "desc": "Tâche en double avec une autre existante", "color": "#ced4da"},
{"name": "Non applicable", "desc": "Tâche non applicable aux exigences actuelles", "color": "#dee2e6"},
{"name": "Reporté", "desc": "Tâche reportée pour une raison quelconque", "color": "#ffc107"},
{"name": "Bloqué", "desc": "Tâche bloquée par des problèmes ou des dépendances", "color": "#dc3545"},
{"name": "À confirmer", "desc": "Tâche incomplète nécessitant une confirmation", "color": "#0dcaf0"},
{"name": "En attente", "desc": "Tâche temporairement suspendue, pouvant être reprise plus tard", "color": "#adb5bd"},
{"name": "À revoir", "desc": "Tâche nécessitant un résumé ou une révision après achèvement", "color": "#17a2b8"},
{"name": "Dépendance externe", "desc": "Tâche dépendant de ressources externes", "color": "#fd7e14"},
{"name": "Collaboration inter-équipes", "desc": "Tâche nécessitant la collaboration de plusieurs équipes", "color": "#17a2b8"},
{"name": "Support développement", "desc": "Tâche de support pour d'autres équipes", "color": "#20c997"}
],
"id": [
{"name": "Kebutuhan", "desc": "Fitur baru atau kebutuhan bisnis", "color": "#007bff"},
{"name": "Optimalisasi", "desc": "Peningkatan fitur atau pengalaman yang ada", "color": "#28a745"},
{"name": "Bug", "desc": "Malfungsi fitur atau kesalahan", "color": "#dc3545"},
{"name": "Desain", "desc": "Tugas terkait desain UI/UX", "color": "#6f42c1"},
{"name": "Pengembangan", "desc": "Tugas terkait pengembangan frontend atau backend", "color": "#17a2b8"},
{"name": "Pengujian", "desc": "Pengujian fitur atau verifikasi kasus", "color": "#fd7e14"},
{"name": "Dokumentasi", "desc": "Tugas terkait penulisan atau pemeliharaan dokumentasi", "color": "#20c997"},
{"name": "Performa", "desc": "Tugas terkait optimalisasi performa", "color": "#6610f2"},
{"name": "Keamanan", "desc": "Tugas terkait masalah atau kerentanan keamanan", "color": "#e83e8c"},
{"name": "Hutang Teknis", "desc": "Hutang teknis yang perlu diselesaikan", "color": "#6c757d"},
{"name": "Eksperimental", "desc": "Tugas yang bersifat eksplorasi", "color": "#6f42c1"},
{"name": "Tugas Pembelajaran", "desc": "Tugas untuk pembelajaran atau penelitian", "color": "#20c997"},
{"name": "Mendesak", "desc": "Tugas yang perlu diprioritaskan", "color": "#d63384"},
{"name": "Prioritas Tinggi", "desc": "Tugas dengan prioritas tinggi", "color": "#ffc107"},
{"name": "Prioritas Rendah", "desc": "Tugas dengan prioritas rendah", "color": "#6c757d"},
{"name": "Tidak Valid", "desc": "Tugas tidak valid dan tidak akan diproses lagi", "color": "#adb5bd"},
{"name": "Duplikat", "desc": "Tugas yang merupakan duplikat dari tugas lain", "color": "#ced4da"},
{"name": "Tidak Berlaku", "desc": "Tugas tidak lagi relevan dengan kebutuhan saat ini", "color": "#dee2e6"},
{"name": "Ditunda", "desc": "Tugas yang ditunda karena alasan tertentu", "color": "#ffc107"},
{"name": "Terblokir", "desc": "Tugas yang terhalang oleh masalah atau ketergantungan", "color": "#dc3545"},
{"name": "Perlu Konfirmasi", "desc": "Tugas yang informasinya tidak lengkap dan perlu konfirmasi", "color": "#0dcaf0"},
{"name": "Ditangguhkan", "desc": "Tugas yang ditangguhkan sementara dan mungkin dilanjutkan di masa depan", "color": "#adb5bd"},
{"name": "Perlu Ditinjau", "desc": "Tugas yang perlu ditinjau atau dirangkum setelah selesai", "color": "#17a2b8"},
{"name": "Ketergantungan Eksternal", "desc": "Tugas yang bergantung pada sumber daya eksternal", "color": "#fd7e14"},
{"name": "Kolaborasi Antar Tim", "desc": "Tugas yang membutuhkan kolaborasi beberapa tim", "color": "#17a2b8"},
{"name": "Dukungan Pengembangan", "desc": "Tugas untuk mendukung tim lain", "color": "#20c997"}
],
"ru": [
{"name": "Требование", "desc": "Новая функция или бизнес-требование", "color": "#007bff"},
{"name": "Оптимизация", "desc": "Улучшение существующих функций или опыта", "color": "#28a745"},
{"name": "Баг", "desc": "Ошибка или неисправность функции", "color": "#dc3545"},
{"name": "Дизайн", "desc": "Задачи, связанные с дизайном UI/UX", "color": "#6f42c1"},
{"name": "Разработка", "desc": "Задачи, связанные с разработкой фронтенда или бэкенда", "color": "#17a2b8"},
{"name": "Тестирование", "desc": "Тестирование функций или проверка кейсов", "color": "#fd7e14"},
{"name": "Документация", "desc": "Задачи, связанные с написанием или поддержкой документации", "color": "#20c997"},
{"name": "Производительность", "desc": "Задачи по оптимизации производительности", "color": "#6610f2"},
{"name": "Безопасность", "desc": "Задачи, связанные с проблемами безопасности или уязвимостями", "color": "#e83e8c"},
{"name": "Технический долг", "desc": "Технический долг, который нужно устранить", "color": "#6c757d"},
{"name": "Экспериментальный", "desc": "Задачи исследовательского характера", "color": "#6f42c1"},
{"name": "Обучающая задача", "desc": "Задачи для обучения или исследований", "color": "#20c997"},
{"name": "Срочно", "desc": "Задачи, требующие приоритетного выполнения", "color": "#d63384"},
{"name": "Высокий приоритет", "desc": "Задачи с высоким приоритетом", "color": "#ffc107"},
{"name": "Низкий приоритет", "desc": "Задачи с низким приоритетом", "color": "#6c757d"},
{"name": "Недействительно", "desc": "Задача недействительна и больше не будет обрабатываться", "color": "#adb5bd"},
{"name": "Дубликат", "desc": "Задача дублирует существующую", "color": "#ced4da"},
{"name": "Неприменимо", "desc": "Задача больше не актуальна для текущих требований", "color": "#dee2e6"},
{"name": "Отложено", "desc": "Задача отложена по какой-либо причине", "color": "#ffc107"},
{"name": "Заблокировано", "desc": "Задача заблокирована проблемами или зависимостями", "color": "#dc3545"},
{"name": "Требует подтверждения", "desc": "Задача неполная и требует подтверждения", "color": "#0dcaf0"},
{"name": "На удержании", "desc": "Задача временно приостановлена и может быть возобновлена позже", "color": "#adb5bd"},
{"name": "Требует проверки", "desc": "Задача требует проверки или подведения итогов после завершения", "color": "#17a2b8"},
{"name": "Внешняя зависимость", "desc": "Задача зависит от внешних ресурсов", "color": "#fd7e14"},
{"name": "Межкомандное сотрудничество", "desc": "Задача требует сотрудничества нескольких команд", "color": "#17a2b8"},
{"name": "Поддержка разработки", "desc": "Задача по поддержке других команд", "color": "#20c997"}
]
}

View File

@ -0,0 +1,262 @@
export default {
"zh": [
{"name": "需求", "desc": "新功能或业务需求", "color": "#007bff"},
{"name": "优化", "desc": "现有功能或体验的改进", "color": "#28a745"},
{"name": "Bug", "desc": "问题或功能异常", "color": "#dc3545"},
{"name": "设计", "desc": "与UI/UX设计相关的任务", "color": "#6f42c1"},
{"name": "开发", "desc": "涉及前端或后端开发的任务", "color": "#17a2b8"},
{"name": "测试", "desc": "测试相关任务", "color": "#fd7e14"},
{"name": "文档", "desc": "与文档编写或维护相关的任务", "color": "#20c997"},
{"name": "性能", "desc": "性能优化相关任务", "color": "#6610f2"},
{"name": "安全", "desc": "与安全问题或漏洞相关的任务", "color": "#e83e8c"},
{"name": "技术债务", "desc": "需要偿还的技术债务", "color": "#6c757d"},
{"name": "实验性", "desc": "任务属于探索性质", "color": "#6f42c1"},
{"name": "学习任务", "desc": "任务用于学习或研究", "color": "#20c997"},
{"name": "紧急", "desc": "需要优先处理的任务", "color": "#d63384"},
{"name": "高优先级", "desc": "优先级较高的任务", "color": "#ffc107"},
{"name": "低优先级", "desc": "优先级较低的任务", "color": "#6c757d"},
{"name": "无效", "desc": "任务被标记为无效", "color": "#adb5bd"},
{"name": "重复", "desc": "任务与已有任务重复", "color": "#ced4da"},
{"name": "不适用", "desc": "任务不再适用当前需求", "color": "#dee2e6"},
{"name": "延期", "desc": "任务因某些原因被延期", "color": "#ffc107"},
{"name": "阻塞", "desc": "任务被问题或依赖阻塞", "color": "#dc3545"},
{"name": "待确认", "desc": "任务需要进一步确认", "color": "#0dcaf0"},
{"name": "已搁置", "desc": "任务暂时搁置", "color": "#adb5bd"},
{"name": "待复盘", "desc": "任务完成后需复盘", "color": "#17a2b8"},
{"name": "外部依赖", "desc": "依赖外部资源的任务", "color": "#fd7e14"},
{"name": "跨团队协作", "desc": "需要多个团队协作的任务", "color": "#17a2b8"},
{"name": "研发支持", "desc": "为其他团队提供支持", "color": "#20c997"}
],
"zh-CHT": [
{"name": "需求", "desc": "新功能或業務需求", "color": "#007bff"},
{"name": "優化", "desc": "現有功能或體驗的改進", "color": "#28a745"},
{"name": "Bug", "desc": "功能異常或錯誤", "color": "#dc3545"},
{"name": "設計", "desc": "與UI/UX設計相關的任務", "color": "#6f42c1"},
{"name": "開發", "desc": "前後端開發相關任務", "color": "#17a2b8"},
{"name": "測試", "desc": "功能測試或用例驗證", "color": "#fd7e14"},
{"name": "文檔", "desc": "與文檔編寫或維護相關的任務", "color": "#20c997"},
{"name": "性能", "desc": "性能優化相關任務", "color": "#6610f2"},
{"name": "安全", "desc": "與安全問題或漏洞相關的任務", "color": "#e83e8c"},
{"name": "技術債務", "desc": "需要償還的技術債務", "color": "#6c757d"},
{"name": "實驗性", "desc": "任務屬於探索性質", "color": "#6f42c1"},
{"name": "學習任務", "desc": "任務用於學習或研究", "color": "#20c997"},
{"name": "緊急", "desc": "需要優先處理的任務", "color": "#d63384"},
{"name": "高優先級", "desc": "優先級較高的任務", "color": "#ffc107"},
{"name": "低優先級", "desc": "優先級較低的任務", "color": "#6c757d"},
{"name": "無效", "desc": "任務無效,不再處理", "color": "#adb5bd"},
{"name": "重複", "desc": "與其他任務重複", "color": "#ced4da"},
{"name": "不適用", "desc": "任務不再適用當前需求", "color": "#dee2e6"},
{"name": "延期", "desc": "任務因某些原因被延期", "color": "#ffc107"},
{"name": "阻塞", "desc": "任務被問題或依賴阻塞", "color": "#dc3545"},
{"name": "待確認", "desc": "任務信息不完整,需確認", "color": "#0dcaf0"},
{"name": "已擱置", "desc": "任務暫停處理,未來可能重啟", "color": "#adb5bd"},
{"name": "待復盤", "desc": "任務完成後需總結復盤", "color": "#17a2b8"},
{"name": "外部依賴", "desc": "依賴外部資源的任務", "color": "#fd7e14"},
{"name": "跨團隊協作", "desc": "需要多個團隊協作的任務", "color": "#17a2b8"},
{"name": "研發支持", "desc": "為其他團隊提供支持", "color": "#20c997"}
],
"en": [
{"name": "Requirement", "desc": "New feature or business requirement", "color": "#007bff"},
{"name": "Optimization", "desc": "Improvement of existing features or experience", "color": "#28a745"},
{"name": "Bug", "desc": "Feature malfunction or error", "color": "#dc3545"},
{"name": "Design", "desc": "Tasks related to UI/UX design", "color": "#6f42c1"},
{"name": "Development", "desc": "Tasks related to frontend or backend development", "color": "#17a2b8"},
{"name": "Testing", "desc": "Feature testing or case verification", "color": "#fd7e14"},
{"name": "Documentation", "desc": "Tasks related to writing or maintaining documentation", "color": "#20c997"},
{"name": "Performance", "desc": "Tasks related to performance optimization", "color": "#6610f2"},
{"name": "Security", "desc": "Tasks related to security issues or vulnerabilities", "color": "#e83e8c"},
{"name": "Technical Debt", "desc": "Technical debt that needs to be addressed", "color": "#6c757d"},
{"name": "Experimental", "desc": "Tasks of an exploratory nature", "color": "#6f42c1"},
{"name": "Learning Task", "desc": "Tasks for learning or research purposes", "color": "#20c997"},
{"name": "Urgent", "desc": "Tasks that need to be prioritized", "color": "#d63384"},
{"name": "High Priority", "desc": "Tasks with high priority", "color": "#ffc107"},
{"name": "Low Priority", "desc": "Tasks with low priority", "color": "#6c757d"},
{"name": "Invalid", "desc": "Task is invalid and will no longer be processed", "color": "#adb5bd"},
{"name": "Duplicate", "desc": "Task is a duplicate of an existing one", "color": "#ced4da"},
{"name": "Not Applicable", "desc": "Task is no longer applicable to current requirements", "color": "#dee2e6"},
{"name": "Postponed", "desc": "Task is postponed for some reason", "color": "#ffc107"},
{"name": "Blocked", "desc": "Task is blocked by issues or dependencies", "color": "#dc3545"},
{"name": "To Be Confirmed", "desc": "Task information is incomplete and needs confirmation", "color": "#0dcaf0"},
{"name": "On Hold", "desc": "Task is temporarily on hold and may resume in the future", "color": "#adb5bd"},
{"name": "To Be Reviewed", "desc": "Task needs to be reviewed or summarized after completion", "color": "#17a2b8"},
{"name": "External Dependency", "desc": "Task depends on external resources", "color": "#fd7e14"},
{"name": "Cross-Team Collaboration", "desc": "Task requires collaboration across multiple teams", "color": "#17a2b8"},
{"name": "R&D Support", "desc": "Providing support to other teams", "color": "#20c997"}
],
"ko": [
{"name": "요구사항", "desc": "새로운 기능 또는 비즈니스 요구사항", "color": "#007bff"},
{"name": "최적화", "desc": "기존 기능 또는 경험의 개선", "color": "#28a745"},
{"name": "버그", "desc": "기능 오작동 또는 오류", "color": "#dc3545"},
{"name": "디자인", "desc": "UI/UX 디자인 관련 작업", "color": "#6f42c1"},
{"name": "개발", "desc": "프론트엔드 또는 백엔드 개발 관련 작업", "color": "#17a2b8"},
{"name": "테스트", "desc": "기능 테스트 또는 사례 검증", "color": "#fd7e14"},
{"name": "문서화", "desc": "문서 작성 또는 유지보수 작업", "color": "#20c997"},
{"name": "성능", "desc": "성능 최적화 관련 작업", "color": "#6610f2"},
{"name": "보안", "desc": "보안 문제 또는 취약점 관련 작업", "color": "#e83e8c"},
{"name": "기술 부채", "desc": "해결해야 할 기술 부채", "color": "#6c757d"},
{"name": "실험적", "desc": "탐색적인 성격의 작업", "color": "#6f42c1"},
{"name": "학습 작업", "desc": "학습 또는 연구를 위한 작업", "color": "#20c997"},
{"name": "긴급", "desc": "우선적으로 처리해야 할 작업", "color": "#d63384"},
{"name": "높은 우선순위", "desc": "우선순위가 높은 작업", "color": "#ffc107"},
{"name": "낮은 우선순위", "desc": "우선순위가 낮은 작업", "color": "#6c757d"},
{"name": "무효", "desc": "작업이 무효화되어 더 이상 처리되지 않음", "color": "#adb5bd"},
{"name": "중복", "desc": "기존 작업과 중복된 작업", "color": "#ced4da"},
{"name": "부적합", "desc": "현재 요구사항에 더 이상 적합하지 않은 작업", "color": "#dee2e6"},
{"name": "연기됨", "desc": "특정 이유로 연기된 작업", "color": "#ffc107"},
{"name": "차단됨", "desc": "문제 또는 의존성으로 인해 차단된 작업", "color": "#dc3545"},
{"name": "확인 필요", "desc": "정보가 불완전하여 확인이 필요한 작업", "color": "#0dcaf0"},
{"name": "보류 중", "desc": "작업이 일시적으로 보류되었으며, 추후 재개될 수 있음", "color": "#adb5bd"},
{"name": "리뷰 필요", "desc": "작업 완료 후 요약 또는 리뷰가 필요한 작업", "color": "#17a2b8"},
{"name": "외부 의존성", "desc": "외부 리소스에 의존하는 작업", "color": "#fd7e14"},
{"name": "팀 간 협업", "desc": "다수의 팀이 협업해야 하는 작업", "color": "#17a2b8"},
{"name": "개발 지원", "desc": "다른 팀에 지원을 제공하는 작업", "color": "#20c997"}
],
"ja": [
{"name": "要件", "desc": "新しい機能またはビジネス要件", "color": "#007bff"},
{"name": "最適化", "desc": "既存の機能または体験の改善", "color": "#28a745"},
{"name": "バグ", "desc": "機能の不具合またはエラー", "color": "#dc3545"},
{"name": "デザイン", "desc": "UI/UXデザインに関連するタスク", "color": "#6f42c1"},
{"name": "開発", "desc": "フロントエンドまたはバックエンド開発に関するタスク", "color": "#17a2b8"},
{"name": "テスト", "desc": "機能テストまたはケース検証", "color": "#fd7e14"},
{"name": "ドキュメント", "desc": "ドキュメントの作成または保守に関連するタスク", "color": "#20c997"},
{"name": "パフォーマンス", "desc": "パフォーマンス最適化に関連するタスク", "color": "#6610f2"},
{"name": "セキュリティ", "desc": "セキュリティ問題または脆弱性に関連するタスク", "color": "#e83e8c"},
{"name": "技術的負債", "desc": "解消が必要な技術的負債", "color": "#6c757d"},
{"name": "実験的", "desc": "探索的な性質のタスク", "color": "#6f42c1"},
{"name": "学習タスク", "desc": "学習または研究を目的としたタスク", "color": "#20c997"},
{"name": "緊急", "desc": "優先的に処理が必要なタスク", "color": "#d63384"},
{"name": "高優先度", "desc": "優先度の高いタスク", "color": "#ffc107"},
{"name": "低優先度", "desc": "優先度の低いタスク", "color": "#6c757d"},
{"name": "無効", "desc": "タスクが無効で、処理されなくなった", "color": "#adb5bd"},
{"name": "重複", "desc": "既存のタスクと重複しているタスク", "color": "#ced4da"},
{"name": "不適用", "desc": "現在の要件に適用されなくなったタスク", "color": "#dee2e6"},
{"name": "延期", "desc": "何らかの理由で延期されたタスク", "color": "#ffc107"},
{"name": "ブロック中", "desc": "問題または依存関係によってブロックされたタスク", "color": "#dc3545"},
{"name": "要確認", "desc": "情報が不完全で確認が必要なタスク", "color": "#0dcaf0"},
{"name": "保留中", "desc": "タスクが一時的に保留され、将来的に再開される可能性がある", "color": "#adb5bd"},
{"name": "レビュー待ち", "desc": "タスク完了後に要約またはレビューが必要なタスク", "color": "#17a2b8"},
{"name": "外部依存", "desc": "外部リソースに依存するタスク", "color": "#fd7e14"},
{"name": "チーム間協力", "desc": "複数のチームが協力する必要があるタスク", "color": "#17a2b8"},
{"name": "開発サポート", "desc": "他のチームにサポートを提供するタスク", "color": "#20c997"}
],
"de": [
{"name": "Anforderung", "desc": "Neue Funktion oder geschäftliche Anforderung", "color": "#007bff"},
{"name": "Optimierung", "desc": "Verbesserung bestehender Funktionen oder Erfahrungen", "color": "#28a745"},
{"name": "Bug", "desc": "Funktionsfehler oder Problem", "color": "#dc3545"},
{"name": "Design", "desc": "Aufgaben im Zusammenhang mit UI/UX-Design", "color": "#6f42c1"},
{"name": "Entwicklung", "desc": "Aufgaben im Bereich Frontend- oder Backend-Entwicklung", "color": "#17a2b8"},
{"name": "Testen", "desc": "Funktionstests oder Fallüberprüfungen", "color": "#fd7e14"},
{"name": "Dokumentation", "desc": "Aufgaben zur Erstellung oder Pflege von Dokumentationen", "color": "#20c997"},
{"name": "Leistung", "desc": "Aufgaben zur Leistungsoptimierung", "color": "#6610f2"},
{"name": "Sicherheit", "desc": "Aufgaben im Zusammenhang mit Sicherheitsproblemen oder Schwachstellen", "color": "#e83e8c"},
{"name": "Technische Schulden", "desc": "Technische Schulden, die abgebaut werden müssen", "color": "#6c757d"},
{"name": "Experimentell", "desc": "Aufgaben explorativer Natur", "color": "#6f42c1"},
{"name": "Lernaufgabe", "desc": "Aufgaben zum Lernen oder für Forschungszwecke", "color": "#20c997"},
{"name": "Dringend", "desc": "Aufgaben, die vorrangig bearbeitet werden müssen", "color": "#d63384"},
{"name": "Hohe Priorität", "desc": "Aufgaben mit hoher Priorität", "color": "#ffc107"},
{"name": "Niedrige Priorität", "desc": "Aufgaben mit niedriger Priorität", "color": "#6c757d"},
{"name": "Ungültig", "desc": "Aufgabe ist ungültig und wird nicht weiter bearbeitet", "color": "#adb5bd"},
{"name": "Duplikat", "desc": "Aufgabe ist ein Duplikat einer bestehenden Aufgabe", "color": "#ced4da"},
{"name": "Nicht anwendbar", "desc": "Aufgabe ist für die aktuellen Anforderungen nicht mehr relevant", "color": "#dee2e6"},
{"name": "Verschoben", "desc": "Aufgabe wurde aus bestimmten Gründen verschoben", "color": "#ffc107"},
{"name": "Blockiert", "desc": "Aufgabe ist durch Probleme oder Abhängigkeiten blockiert", "color": "#dc3545"},
{"name": "Zu bestätigen", "desc": "Aufgabe ist unvollständig und muss bestätigt werden", "color": "#0dcaf0"},
{"name": "In Wartestellung", "desc": "Aufgabe ist vorübergehend pausiert und könnte später wieder aufgenommen werden", "color": "#adb5bd"},
{"name": "Zu überprüfen", "desc": "Aufgabe muss nach Abschluss überprüft oder zusammengefasst werden", "color": "#17a2b8"},
{"name": "Externe Abhängigkeit", "desc": "Aufgabe ist von externen Ressourcen abhängig", "color": "#fd7e14"},
{"name": "Teamübergreifende Zusammenarbeit", "desc": "Aufgabe erfordert Zusammenarbeit mehrerer Teams", "color": "#17a2b8"},
{"name": "Entwicklungsunterstützung", "desc": "Aufgabe zur Unterstützung anderer Teams", "color": "#20c997"}
],
"fr": [
{"name": "Exigence", "desc": "Nouvelle fonctionnalité ou exigence métier", "color": "#007bff"},
{"name": "Optimisation", "desc": "Amélioration des fonctionnalités ou de l'expérience existante", "color": "#28a745"},
{"name": "Bug", "desc": "Dysfonctionnement ou erreur", "color": "#dc3545"},
{"name": "Conception", "desc": "Tâches liées à la conception UI/UX", "color": "#6f42c1"},
{"name": "Développement", "desc": "Tâches liées au développement frontend ou backend", "color": "#17a2b8"},
{"name": "Test", "desc": "Tests fonctionnels ou vérifications de cas", "color": "#fd7e14"},
{"name": "Documentation", "desc": "Tâches de rédaction ou de maintenance de la documentation", "color": "#20c997"},
{"name": "Performance", "desc": "Tâches liées à l'optimisation des performances", "color": "#6610f2"},
{"name": "Sécurité", "desc": "Tâches liées aux problèmes ou vulnérabilités de sécurité", "color": "#e83e8c"},
{"name": "Dette technique", "desc": "Dette technique à résoudre", "color": "#6c757d"},
{"name": "Expérimental", "desc": "Tâches de nature exploratoire", "color": "#6f42c1"},
{"name": "Tâche d'apprentissage", "desc": "Tâches pour apprentissage ou recherche", "color": "#20c997"},
{"name": "Urgent", "desc": "Tâches nécessitant un traitement prioritaire", "color": "#d63384"},
{"name": "Haute priorité", "desc": "Tâches avec une priorité élevée", "color": "#ffc107"},
{"name": "Basse priorité", "desc": "Tâches avec une priorité basse", "color": "#6c757d"},
{"name": "Invalide", "desc": "Tâche invalide qui ne sera plus traitée", "color": "#adb5bd"},
{"name": "Dupliqué", "desc": "Tâche en double avec une autre existante", "color": "#ced4da"},
{"name": "Non applicable", "desc": "Tâche non applicable aux exigences actuelles", "color": "#dee2e6"},
{"name": "Reporté", "desc": "Tâche reportée pour une raison quelconque", "color": "#ffc107"},
{"name": "Bloqué", "desc": "Tâche bloquée par des problèmes ou des dépendances", "color": "#dc3545"},
{"name": "À confirmer", "desc": "Tâche incomplète nécessitant une confirmation", "color": "#0dcaf0"},
{"name": "En attente", "desc": "Tâche temporairement suspendue, pouvant être reprise plus tard", "color": "#adb5bd"},
{"name": "À revoir", "desc": "Tâche nécessitant un résumé ou une révision après achèvement", "color": "#17a2b8"},
{"name": "Dépendance externe", "desc": "Tâche dépendant de ressources externes", "color": "#fd7e14"},
{"name": "Collaboration inter-équipes", "desc": "Tâche nécessitant la collaboration de plusieurs équipes", "color": "#17a2b8"},
{"name": "Support développement", "desc": "Tâche de support pour d'autres équipes", "color": "#20c997"}
],
"id": [
{"name": "Kebutuhan", "desc": "Fitur baru atau kebutuhan bisnis", "color": "#007bff"},
{"name": "Optimalisasi", "desc": "Peningkatan fitur atau pengalaman yang ada", "color": "#28a745"},
{"name": "Bug", "desc": "Malfungsi fitur atau kesalahan", "color": "#dc3545"},
{"name": "Desain", "desc": "Tugas terkait desain UI/UX", "color": "#6f42c1"},
{"name": "Pengembangan", "desc": "Tugas terkait pengembangan frontend atau backend", "color": "#17a2b8"},
{"name": "Pengujian", "desc": "Pengujian fitur atau verifikasi kasus", "color": "#fd7e14"},
{"name": "Dokumentasi", "desc": "Tugas terkait penulisan atau pemeliharaan dokumentasi", "color": "#20c997"},
{"name": "Performa", "desc": "Tugas terkait optimalisasi performa", "color": "#6610f2"},
{"name": "Keamanan", "desc": "Tugas terkait masalah atau kerentanan keamanan", "color": "#e83e8c"},
{"name": "Hutang Teknis", "desc": "Hutang teknis yang perlu diselesaikan", "color": "#6c757d"},
{"name": "Eksperimental", "desc": "Tugas yang bersifat eksplorasi", "color": "#6f42c1"},
{"name": "Tugas Pembelajaran", "desc": "Tugas untuk pembelajaran atau penelitian", "color": "#20c997"},
{"name": "Mendesak", "desc": "Tugas yang perlu diprioritaskan", "color": "#d63384"},
{"name": "Prioritas Tinggi", "desc": "Tugas dengan prioritas tinggi", "color": "#ffc107"},
{"name": "Prioritas Rendah", "desc": "Tugas dengan prioritas rendah", "color": "#6c757d"},
{"name": "Tidak Valid", "desc": "Tugas tidak valid dan tidak akan diproses lagi", "color": "#adb5bd"},
{"name": "Duplikat", "desc": "Tugas yang merupakan duplikat dari tugas lain", "color": "#ced4da"},
{"name": "Tidak Berlaku", "desc": "Tugas tidak lagi relevan dengan kebutuhan saat ini", "color": "#dee2e6"},
{"name": "Ditunda", "desc": "Tugas yang ditunda karena alasan tertentu", "color": "#ffc107"},
{"name": "Terblokir", "desc": "Tugas yang terhalang oleh masalah atau ketergantungan", "color": "#dc3545"},
{"name": "Perlu Konfirmasi", "desc": "Tugas yang informasinya tidak lengkap dan perlu konfirmasi", "color": "#0dcaf0"},
{"name": "Ditangguhkan", "desc": "Tugas yang ditangguhkan sementara dan mungkin dilanjutkan di masa depan", "color": "#adb5bd"},
{"name": "Perlu Ditinjau", "desc": "Tugas yang perlu ditinjau atau dirangkum setelah selesai", "color": "#17a2b8"},
{"name": "Ketergantungan Eksternal", "desc": "Tugas yang bergantung pada sumber daya eksternal", "color": "#fd7e14"},
{"name": "Kolaborasi Antar Tim", "desc": "Tugas yang membutuhkan kolaborasi beberapa tim", "color": "#17a2b8"},
{"name": "Dukungan Pengembangan", "desc": "Tugas untuk mendukung tim lain", "color": "#20c997"}
],
"ru": [
{"name": "Требование", "desc": "Новая функция или бизнес-требование", "color": "#007bff"},
{"name": "Оптимизация", "desc": "Улучшение существующих функций или опыта", "color": "#28a745"},
{"name": "Баг", "desc": "Ошибка или неисправность функции", "color": "#dc3545"},
{"name": "Дизайн", "desc": "Задачи, связанные с дизайном UI/UX", "color": "#6f42c1"},
{"name": "Разработка", "desc": "Задачи, связанные с разработкой фронтенда или бэкенда", "color": "#17a2b8"},
{"name": "Тестирование", "desc": "Тестирование функций или проверка кейсов", "color": "#fd7e14"},
{"name": "Документация", "desc": "Задачи, связанные с написанием или поддержкой документации", "color": "#20c997"},
{"name": "Производительность", "desc": "Задачи по оптимизации производительности", "color": "#6610f2"},
{"name": "Безопасность", "desc": "Задачи, связанные с проблемами безопасности или уязвимостями", "color": "#e83e8c"},
{"name": "Технический долг", "desc": "Технический долг, который нужно устранить", "color": "#6c757d"},
{"name": "Экспериментальный", "desc": "Задачи исследовательского характера", "color": "#6f42c1"},
{"name": "Обучающая задача", "desc": "Задачи для обучения или исследований", "color": "#20c997"},
{"name": "Срочно", "desc": "Задачи, требующие приоритетного выполнения", "color": "#d63384"},
{"name": "Высокий приоритет", "desc": "Задачи с высоким приоритетом", "color": "#ffc107"},
{"name": "Низкий приоритет", "desc": "Задачи с низким приоритетом", "color": "#6c757d"},
{"name": "Недействительно", "desc": "Задача недействительна и больше не будет обрабатываться", "color": "#adb5bd"},
{"name": "Дубликат", "desc": "Задача дублирует существующую", "color": "#ced4da"},
{"name": "Неприменимо", "desc": "Задача больше не актуальна для текущих требований", "color": "#dee2e6"},
{"name": "Отложено", "desc": "Задача отложена по какой-либо причине", "color": "#ffc107"},
{"name": "Заблокировано", "desc": "Задача заблокирована проблемами или зависимостями", "color": "#dc3545"},
{"name": "Требует подтверждения", "desc": "Задача неполная и требует подтверждения", "color": "#0dcaf0"},
{"name": "На удержании", "desc": "Задача временно приостановлена и может быть возобновлена позже", "color": "#adb5bd"},
{"name": "Требует проверки", "desc": "Задача требует проверки или подведения итогов после завершения", "color": "#17a2b8"},
{"name": "Внешняя зависимость", "desc": "Задача зависит от внешних ресурсов", "color": "#fd7e14"},
{"name": "Межкомандное сотрудничество", "desc": "Задача требует сотрудничества нескольких команд", "color": "#17a2b8"},
{"name": "Поддержка разработки", "desc": "Задача по поддержке других команд", "color": "#20c997"}
]
}