chore: commit pending local changes (2026-09-17 github sync)
This commit is contained in:
parent
f05d95b8ac
commit
b7b49a766c
@ -19,7 +19,7 @@ if not task_id:
|
||||
"options": {"padding": "20px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {
|
||||
"text": "暂无产线任务。\n请先创建迭代以启动开发产线。",
|
||||
"otext": "暂无产线任务。\n请先创建迭代以启动开发产线。", "text": "暂无产线任务。\n请先创建迭代以启动开发产线。", "i18n": True,
|
||||
"cfontsize": 0.9, "color": "#94a3b8", "textAlign": "center"
|
||||
}}
|
||||
]
|
||||
@ -147,7 +147,7 @@ if not step_widgets:
|
||||
step_widgets.append({
|
||||
"widgettype": "Text",
|
||||
"options": {
|
||||
"text": "产线步骤尚未生成。\n任务初始化中...",
|
||||
"otext": "产线步骤尚未生成。\n任务初始化中...", "text": "产线步骤尚未生成。\n任务初始化中...", "i18n": True,
|
||||
"cfontsize": 0.9, "color": "#94a3b8", "padding": "20px"
|
||||
}
|
||||
})
|
||||
|
||||
@ -158,7 +158,7 @@ for t in (todos or []):
|
||||
|
||||
if not cards:
|
||||
cards = [{"widgettype": "Text",
|
||||
"options": {"text": "暂无待办", "cfontsize": 0.9, "color": "#94a3b8", "padding": "16px"}}]
|
||||
"options": {"otext": "暂无待办", "text": "暂无待办", "i18n": True, "cfontsize": 0.9, "color": "#94a3b8", "padding": "16px"}}]
|
||||
|
||||
# embed=1(手机端「待办」Tab 整页渲染):返回纯 VBox,不套 PopupWindow 弹窗壳
|
||||
_embed = ((params_kw or {}).get('embed') or '').strip()
|
||||
|
||||
@ -28,7 +28,7 @@ _state_colors = {
|
||||
if not task_id:
|
||||
return json.dumps({
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "请选择左侧任务查看输入输出", "cfontsize": 0.9, "color": "#94a3b8", "padding": "16px"},
|
||||
"options": {"otext": "请选择左侧任务查看输入输出", "text": "请选择左侧任务查看输入输出", "i18n": True, "cfontsize": 0.9, "color": "#94a3b8", "padding": "16px"},
|
||||
}, ensure_ascii=False)
|
||||
|
||||
async with DBPools().sqlorContext(dbname) as sor:
|
||||
@ -38,7 +38,7 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
if not recs:
|
||||
return json.dumps({
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "任务不存在", "cfontsize": 0.9, "color": "#94a3b8", "padding": "16px"},
|
||||
"options": {"otext": "任务不存在", "text": "任务不存在", "i18n": True, "cfontsize": 0.9, "color": "#94a3b8", "padding": "16px"},
|
||||
}, ensure_ascii=False)
|
||||
|
||||
task = recs[0]
|
||||
@ -80,7 +80,7 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
"options": {"gap": "12px", "width": "100%"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": state, "cfontsize": 0.75, "color": "#ffffff", "halign": "left", "padding": "1px 10px", "style": {"background": sc, "borderRadius": "12px", "fontWeight": "bold"}}},
|
||||
{"widgettype": "Text", "options": {"text": "角色: " + role, "cfontsize": 0.8, "color": "#64748b", "halign": "left"}},
|
||||
{"widgettype": "Text", "options": {"otext": "角色: ${p0}", "text": "角色: ${p0}", "i18n": True, "i18n_params": {"p0": str(role)}, "cfontsize": 0.8, "color": "#64748b", "halign": "left"}},
|
||||
{"widgettype": "Text", "options": {"text": "更新: " + updated_at, "cfontsize": 0.75, "color": "#94a3b8", "halign": "left"}},
|
||||
{"widgettype": "Filler"},
|
||||
],
|
||||
@ -95,7 +95,7 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
# 输入
|
||||
subwidgets.append({
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "—— 输入 ——", "halign": "left", "cfontsize": 0.85, "style": {"fontWeight": "bold", "color": "#3b82f6", "marginTop": "8px"}},
|
||||
"options": {"otext": "—— 输入 ——", "text": "—— 输入 ——", "i18n": True, "halign": "left", "cfontsize": 0.85, "style": {"fontWeight": "bold", "color": "#3b82f6", "marginTop": "8px"}},
|
||||
})
|
||||
subwidgets.append({
|
||||
"widgettype": "Text",
|
||||
@ -105,12 +105,12 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
# 输出
|
||||
subwidgets.append({
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "—— 输出(交付件)——", "halign": "left", "cfontsize": 0.85, "style": {"fontWeight": "bold", "color": "#16a34a", "marginTop": "8px"}},
|
||||
"options": {"otext": "—— 输出(交付件)——", "text": "—— 输出(交付件)——", "i18n": True, "halign": "left", "cfontsize": 0.85, "style": {"fontWeight": "bold", "color": "#16a34a", "marginTop": "8px"}},
|
||||
})
|
||||
if not dels:
|
||||
subwidgets.append({
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "(暂无交付件)", "halign": "left", "cfontsize": 0.8, "color": "#94a3b8"},
|
||||
"options": {"otext": "(暂无交付件)", "text": "(暂无交付件)", "i18n": True, "halign": "left", "cfontsize": 0.8, "color": "#94a3b8"},
|
||||
})
|
||||
else:
|
||||
from pipeline_service.task_io_render import deliverable_card
|
||||
|
||||
@ -442,7 +442,7 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
"widgettype": "HBox",
|
||||
"options": {"width": "100%", "gap": "8px", "padding": "4px 14px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "📑 报告已存为 PPT:",
|
||||
{"widgettype": "Text", "options": {"otext": "📑 报告已存为 PPT:", "text": "📑 报告已存为 PPT:", "i18n": True,
|
||||
"cfontsize": 0.8, "color": "#64748b", "halign": "left"}},
|
||||
{"widgettype": "Button", "options": {"label": "下载 PPT", "css": "small"},
|
||||
"binds": [{"wid": "self", "event": "click", "actiontype": "script",
|
||||
@ -781,7 +781,7 @@ if _file_rows:
|
||||
"widgettype": "VBox",
|
||||
"options": {"width": "100%", "gap": "6px", "padding": "8px 14px 2px 14px"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "📎 输出文件", "cfontsize": 0.85,
|
||||
{"widgettype": "Text", "options": {"otext": "📎 输出文件", "text": "📎 输出文件", "i18n": True, "cfontsize": 0.85,
|
||||
"fontWeight": "bold", "color": "#334155"}}
|
||||
] + _file_rows
|
||||
}]
|
||||
|
||||
@ -40,7 +40,7 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
full_dir = resolve_workspace_path(project_dir, space_dir, folder_id)
|
||||
|
||||
if not os.path.isdir(full_dir):
|
||||
return {"widgettype": "Text", "options": {"text": "目录不可用: " + folder_id, "cfontsize": 0.9}}
|
||||
return {"widgettype": "Text", "options": {"otext": "目录不可用: ${p0}", "text": "目录不可用: ${p0}", "i18n": True, "i18n_params": {"p0": str(folder_id)}, "cfontsize": 0.9}}
|
||||
|
||||
upload_url = entire_url("/pipeline-sdlc/api/workspace_upload.dspy") + (("?session_id=" + session_id) if session_id else "")
|
||||
|
||||
@ -68,7 +68,7 @@ droppable = {
|
||||
"widgettype": "Droppable",
|
||||
"options": {"accepts": ["*"], "padding": "10px"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "📥 拖拽文件到此处上传", "cfontsize": 0.85, "color": "#64748b", "halign": "middle"}}
|
||||
{"widgettype": "Text", "options": {"otext": "📥 拖拽文件到此处上传", "text": "📥 拖拽文件到此处上传", "i18n": True, "cfontsize": 0.85, "color": "#64748b", "halign": "middle"}}
|
||||
],
|
||||
"binds": [{"wid": "self", "event": "filedrop", "actiontype": "script", "target": "self", "script": upload_script}]
|
||||
}
|
||||
@ -116,7 +116,7 @@ for name in entries:
|
||||
files.append(row)
|
||||
|
||||
if not files:
|
||||
file_list_content = [{"widgettype": "Text", "options": {"text": "(空目录)", "cfontsize": 0.85, "color": "#94a3b8", "padding": "8px"}}]
|
||||
file_list_content = [{"widgettype": "Text", "options": {"otext": "(空目录)", "text": "(空目录)", "i18n": True, "cfontsize": 0.85, "color": "#94a3b8", "padding": "8px"}}]
|
||||
else:
|
||||
file_list_content = files
|
||||
|
||||
|
||||
@ -127,7 +127,7 @@ return {
|
||||
"widgettype": "PopupWindow",
|
||||
"options": {"title": name, "cwidth": 34, "cheight": 12, "auto_open": True, "resizable": True},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "该文件类型需下载后用本地应用打开", "cfontsize": 1, "padding": "16px", "halign": "middle"}},
|
||||
{"widgettype": "Text", "options": {"otext": "该文件类型需下载后用本地应用打开", "text": "该文件类型需下载后用本地应用打开", "i18n": True, "cfontsize": 1, "padding": "16px", "halign": "middle"}},
|
||||
{"widgettype": "Button", "options": {"label": "下载文件", "css": "primary"},
|
||||
"binds": [{"wid": "self", "event": "click", "actiontype": "script", "target": "self", "script": download_script}]}
|
||||
]
|
||||
|
||||
@ -61,7 +61,7 @@ async with DBPools().sqlorContext(dbname) as sor:
|
||||
"options": {"width": "100%", "gap": "12px", "padding": "18px 22px"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text",
|
||||
"options": {"text": "当前会话还没有项目,请先选择或新建项目",
|
||||
"options": {"otext": "当前会话还没有项目,请先选择或新建项目", "text": "当前会话还没有项目,请先选择或新建项目", "i18n": True,
|
||||
"cfontsize": 1, "color": "#64748b"}},
|
||||
{"widgettype": "HBox",
|
||||
"options": {"width": "100%", "gap": "10px"},
|
||||
|
||||
@ -102,7 +102,7 @@ return {
|
||||
"widgettype": "PopupWindow",
|
||||
"options": {"title": name, "cwidth": 34, "cheight": 12, "auto_open": True, "resizable": True},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "该文件类型需下载后查看", "cfontsize": 1, "padding": "16px", "halign": "middle"}},
|
||||
{"widgettype": "Text", "options": {"otext": "该文件类型需下载后查看", "text": "该文件类型需下载后查看", "i18n": True, "cfontsize": 1, "padding": "16px", "halign": "middle"}},
|
||||
{"widgettype": "Button", "options": {"label": "下载文件", "css": "primary"},
|
||||
"binds": [{"wid": "self", "event": "click", "actiontype": "script", "target": "self", "script": download_script}]}
|
||||
]
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -19,13 +19,13 @@
|
||||
{
|
||||
"widgettype": "Title2",
|
||||
"options": {
|
||||
"text": "开发产线驾驶舱"
|
||||
"otext": "开发产线驾驶舱", "text": "开发产线驾驶舱", "i18n": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {
|
||||
"text": "AI驱动的对话式开发",
|
||||
"otext": "AI驱动的对话式开发", "text": "AI驱动的对话式开发", "i18n": true,
|
||||
"cfontsize": 0.9,
|
||||
"color": "#94a3b8"
|
||||
}
|
||||
@ -150,7 +150,7 @@
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {
|
||||
"text": "选择一个迭代后,在下方输入你的需求。",
|
||||
"otext": "选择一个迭代后,在下方输入你的需求。", "text": "选择一个迭代后,在下方输入你的需求。", "i18n": true,
|
||||
"cfontsize": 1,
|
||||
"color": "#64748b"
|
||||
}
|
||||
@ -158,7 +158,7 @@
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {
|
||||
"text": "Agent 将自动分析需求、生成设计、驱动产线执行。",
|
||||
"otext": "Agent 将自动分析需求、生成设计、驱动产线执行。", "text": "Agent 将自动分析需求、生成设计、驱动产线执行。", "i18n": true,
|
||||
"cfontsize": 0.85,
|
||||
"color": "#94a3b8"
|
||||
}
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "Bug管理 - CRUD List", "cfontsize": 20, "color": "#E0E0E0", "fontWeight": "bold"}
|
||||
"options": {"otext": "Bug管理 - CRUD List", "text": "Bug管理 - CRUD List", "i18n": true, "cfontsize": 20, "color": "#E0E0E0", "fontWeight": "bold"}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
|
||||
@ -6,8 +6,8 @@
|
||||
"widgettype": "HBox",
|
||||
"options": {"alignItems": "center", "gap": "12px"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Title2", "options": {"text": "开发产线仪表盘"}},
|
||||
{"widgettype": "Text", "options": {"text": "项目/迭代/Bug实时概览", "cfontsize": 1.1, "color": "#888"}}
|
||||
{"widgettype": "Title2", "options": {"otext": "开发产线仪表盘", "text": "开发产线仪表盘", "i18n": true}},
|
||||
{"widgettype": "Text", "options": {"otext": "项目/迭代/Bug实时概览", "text": "项目/迭代/Bug实时概览", "i18n": true, "cfontsize": 1.1, "color": "#888"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -19,7 +19,7 @@
|
||||
"options": {"bgcolor": "#1e293b", "padding": "24px", "borderRadius": "12px", "gap": "8px", "border": "1px solid #334155", "cwidth": 25, "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "-", "cfontsize": 2.5, "color": "#60a5fa", "fontWeight": "bold"}},
|
||||
{"widgettype": "Text", "options": {"text": "活跃项目", "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"otext": "活跃项目", "text": "活跃项目", "i18n": true, "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"text": "Active Projects", "cfontsize": 0.8, "color": "#94a3b8"}}
|
||||
]
|
||||
},
|
||||
@ -28,7 +28,7 @@
|
||||
"options": {"bgcolor": "#1e293b", "padding": "24px", "borderRadius": "12px", "gap": "8px", "border": "1px solid #334155", "cwidth": 25, "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "-", "cfontsize": 2.5, "color": "#4ade80", "fontWeight": "bold"}},
|
||||
{"widgettype": "Text", "options": {"text": "进行中迭代", "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"otext": "进行中迭代", "text": "进行中迭代", "i18n": true, "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"text": "Active Sprints", "cfontsize": 0.8, "color": "#94a3b8"}}
|
||||
]
|
||||
},
|
||||
@ -37,7 +37,7 @@
|
||||
"options": {"bgcolor": "#1e293b", "padding": "24px", "borderRadius": "12px", "gap": "8px", "border": "1px solid #334155", "cwidth": 25, "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "-", "cfontsize": 2.5, "color": "#fbbf24", "fontWeight": "bold"}},
|
||||
{"widgettype": "Text", "options": {"text": "待处理Bug", "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"otext": "待处理Bug", "text": "待处理Bug", "i18n": true, "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"text": "Open Bugs", "cfontsize": 0.8, "color": "#94a3b8"}}
|
||||
]
|
||||
},
|
||||
@ -46,7 +46,7 @@
|
||||
"options": {"bgcolor": "#1e293b", "padding": "24px", "borderRadius": "12px", "gap": "8px", "border": "1px solid #334155", "cwidth": 25, "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "-", "cfontsize": 2.5, "color": "#a78bfa", "fontWeight": "bold"}},
|
||||
{"widgettype": "Text", "options": {"text": "待审批", "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"otext": "待审批", "text": "待审批", "i18n": true, "cfontsize": 1, "color": "#e2e8f0"}},
|
||||
{"widgettype": "Text", "options": {"text": "Pending Reviews", "cfontsize": 0.8, "color": "#94a3b8"}}
|
||||
]
|
||||
}
|
||||
@ -60,16 +60,16 @@
|
||||
"widgettype": "VBox",
|
||||
"options": {"bgcolor": "#1e293b", "padding": "24px", "borderRadius": "12px", "gap": "16px", "border": "1px solid #334155", "cwidth": 60},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Title3", "options": {"text": "迭代进度"}},
|
||||
{"widgettype": "Text", "options": {"text": "暂无数据,请先创建项目和迭代", "cfontsize": 0.9, "color": "#64748b", "padding": "20px 0"}}
|
||||
{"widgettype": "Title3", "options": {"otext": "迭代进度", "text": "迭代进度", "i18n": true}},
|
||||
{"widgettype": "Text", "options": {"otext": "暂无数据,请先创建项目和迭代", "text": "暂无数据,请先创建项目和迭代", "i18n": true, "cfontsize": 0.9, "color": "#64748b", "padding": "20px 0"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
"widgettype": "VBox",
|
||||
"options": {"bgcolor": "#1e293b", "padding": "24px", "borderRadius": "12px", "gap": "16px", "border": "1px solid #334155", "cwidth": 40},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Title3", "options": {"text": "Bug 分布"}},
|
||||
{"widgettype": "Text", "options": {"text": "暂无Bug数据", "cfontsize": 0.9, "color": "#64748b", "padding": "20px 0"}}
|
||||
{"widgettype": "Title3", "options": {"otext": "Bug 分布", "text": "Bug 分布", "i18n": true}},
|
||||
{"widgettype": "Text", "options": {"otext": "暂无Bug数据", "text": "暂无Bug数据", "i18n": true, "cfontsize": 0.9, "color": "#64748b", "padding": "20px 0"}}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "部署环境 - CRUD List", "cfontsize": 20, "color": "#E0E0E0", "fontWeight": "bold"}
|
||||
"options": {"otext": "部署环境 - CRUD List", "text": "部署环境 - CRUD List", "i18n": true, "cfontsize": 20, "color": "#E0E0E0", "fontWeight": "bold"}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
|
||||
@ -18,13 +18,13 @@
|
||||
{
|
||||
"widgettype": "Title3",
|
||||
"options": {
|
||||
"text": "机构远程空间配置"
|
||||
"otext": "机构远程空间配置", "text": "机构远程空间配置", "i18n": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {
|
||||
"text": "设置机构的远程工作空间。远程模式下,机构所有用户的工作目录与沙箱命令都在远程主机执行(远程主机需部署 bwrap)。",
|
||||
"otext": "设置机构的远程工作空间。远程模式下,机构所有用户的工作目录与沙箱命令都在远程主机执行(远程主机需部署 bwrap)。", "text": "设置机构的远程工作空间。远程模式下,机构所有用户的工作目录与沙箱命令都在远程主机执行(远程主机需部署 bwrap)。", "i18n": true,
|
||||
"cfontsize": 0.9,
|
||||
"color": "#64748b"
|
||||
}
|
||||
|
||||
@ -4,11 +4,11 @@
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "📝 审核队列 Review Queue", "cfontsize": 24, "color": "#E0E0E0", "fontWeight": "bold"}
|
||||
"options": {"otext": "📝 审核队列 Review Queue", "text": "📝 审核队列 Review Queue", "i18n": true, "cfontsize": 24, "color": "#E0E0E0", "fontWeight": "bold"}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "待处理的人工任务与审批门禁", "cfontsize": 14, "color": "#888888"}
|
||||
"options": {"otext": "待处理的人工任务与审批门禁", "text": "待处理的人工任务与审批门禁", "i18n": true, "cfontsize": 14, "color": "#888888"}
|
||||
},
|
||||
{
|
||||
"widgettype": "ResponsableBox",
|
||||
@ -22,7 +22,7 @@
|
||||
"widgettype": "VBox",
|
||||
"options": {"backgroundColor": "#3A2A1A", "padding": "12px", "borderRadius": "6px"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "🔔 人工任务 Human Tasks", "cfontsize": 16, "color": "#D9A04A", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "🔔 人工任务 Human Tasks", "text": "🔔 人工任务 Human Tasks", "i18n": true, "cfontsize": 16, "color": "#D9A04A", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -43,11 +43,11 @@
|
||||
"options": {"gap": "8px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "⏳", "cfontsize": 16}},
|
||||
{"widgettype": "Text", "options": {"text": "代码审查 - API重构PR #42", "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "代码审查 - API重构PR #42", "text": "代码审查 - API重构PR #42", "i18n": true, "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{"widgettype": "Text", "options": {"text": "指派: 张三 · 优先级: 高", "cfontsize": 12, "color": "#D9A04A"}},
|
||||
{"widgettype": "Text", "options": {"text": "提交时间: 2026-06-15 14:30 · 等待 1天", "cfontsize": 12, "color": "#888888"}}
|
||||
{"widgettype": "Text", "options": {"otext": "指派: 张三 · 优先级: 高", "text": "指派: 张三 · 优先级: 高", "i18n": true, "cfontsize": 12, "color": "#D9A04A"}},
|
||||
{"widgettype": "Text", "options": {"otext": "提交时间: 2026-06-15 14:30 · 等待 1天", "text": "提交时间: 2026-06-15 14:30 · 等待 1天", "i18n": true, "cfontsize": 12, "color": "#888888"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -68,11 +68,11 @@
|
||||
"options": {"gap": "8px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "⏳", "cfontsize": 16}},
|
||||
{"widgettype": "Text", "options": {"text": "数据库迁移确认 - v2.3.0", "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "数据库迁移确认 - v2.3.0", "text": "数据库迁移确认 - v2.3.0", "i18n": true, "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{"widgettype": "Text", "options": {"text": "指派: 李四 · 优先级: 紧急", "cfontsize": 12, "color": "#D94A4A"}},
|
||||
{"widgettype": "Text", "options": {"text": "提交时间: 2026-06-16 09:15 · 等待 2小时", "cfontsize": 12, "color": "#888888"}}
|
||||
{"widgettype": "Text", "options": {"otext": "指派: 李四 · 优先级: 紧急", "text": "指派: 李四 · 优先级: 紧急", "i18n": true, "cfontsize": 12, "color": "#D94A4A"}},
|
||||
{"widgettype": "Text", "options": {"otext": "提交时间: 2026-06-16 09:15 · 等待 2小时", "text": "提交时间: 2026-06-16 09:15 · 等待 2小时", "i18n": true, "cfontsize": 12, "color": "#888888"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -93,11 +93,11 @@
|
||||
"options": {"gap": "8px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "⏳", "cfontsize": 16}},
|
||||
{"widgettype": "Text", "options": {"text": "安全扫描确认 - 依赖更新", "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "安全扫描确认 - 依赖更新", "text": "安全扫描确认 - 依赖更新", "i18n": true, "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{"widgettype": "Text", "options": {"text": "指派: 王五 · 优先级: 中", "cfontsize": 12, "color": "#4A90D9"}},
|
||||
{"widgettype": "Text", "options": {"text": "提交时间: 2026-06-14 16:00 · 等待 3天", "cfontsize": 12, "color": "#888888"}}
|
||||
{"widgettype": "Text", "options": {"otext": "指派: 王五 · 优先级: 中", "text": "指派: 王五 · 优先级: 中", "i18n": true, "cfontsize": 12, "color": "#4A90D9"}},
|
||||
{"widgettype": "Text", "options": {"otext": "提交时间: 2026-06-14 16:00 · 等待 3天", "text": "提交时间: 2026-06-14 16:00 · 等待 3天", "i18n": true, "cfontsize": 12, "color": "#888888"}}
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -110,7 +110,7 @@
|
||||
"widgettype": "VBox",
|
||||
"options": {"backgroundColor": "#2A1A3A", "padding": "12px", "borderRadius": "6px"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "🚧 审批门禁 Approval Gates", "cfontsize": 16, "color": "#9A4AD9", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "🚧 审批门禁 Approval Gates", "text": "🚧 审批门禁 Approval Gates", "i18n": true, "cfontsize": 16, "color": "#9A4AD9", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -131,11 +131,11 @@
|
||||
"options": {"gap": "8px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "🔒", "cfontsize": 16}},
|
||||
{"widgettype": "Text", "options": {"text": "生产部署审批 - v2.3.0-rc1", "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "生产部署审批 - v2.3.0-rc1", "text": "生产部署审批 - v2.3.0-rc1", "i18n": true, "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{"widgettype": "Text", "options": {"text": "需要 2/3 审批人通过 · 当前 1/3", "cfontsize": 12, "color": "#9A4AD9"}},
|
||||
{"widgettype": "Text", "options": {"text": "流水线: deploy-production · 阻塞中", "cfontsize": 12, "color": "#D94A4A"}}
|
||||
{"widgettype": "Text", "options": {"otext": "需要 2/3 审批人通过 · 当前 1/3", "text": "需要 2/3 审批人通过 · 当前 1/3", "i18n": true, "cfontsize": 12, "color": "#9A4AD9"}},
|
||||
{"widgettype": "Text", "options": {"otext": "流水线: deploy-production · 阻塞中", "text": "流水线: deploy-production · 阻塞中", "i18n": true, "cfontsize": 12, "color": "#D94A4A"}}
|
||||
]
|
||||
},
|
||||
{
|
||||
@ -156,11 +156,11 @@
|
||||
"options": {"gap": "8px", "alignItems": "center"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "🔒", "cfontsize": 16}},
|
||||
{"widgettype": "Text", "options": {"text": "架构变更审批 - 新增缓存层", "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
{"widgettype": "Text", "options": {"otext": "架构变更审批 - 新增缓存层", "text": "架构变更审批 - 新增缓存层", "i18n": true, "cfontsize": 14, "color": "#E0E0E0", "fontWeight": "bold"}}
|
||||
]
|
||||
},
|
||||
{"widgettype": "Text", "options": {"text": "需要架构委员会审批 · 等待中", "cfontsize": 12, "color": "#9A4AD9"}},
|
||||
{"widgettype": "Text", "options": {"text": "流水线: design-review · 阻塞中", "cfontsize": 12, "color": "#D94A4A"}}
|
||||
{"widgettype": "Text", "options": {"otext": "需要架构委员会审批 · 等待中", "text": "需要架构委员会审批 · 等待中", "i18n": true, "cfontsize": 12, "color": "#9A4AD9"}},
|
||||
{"widgettype": "Text", "options": {"otext": "流水线: design-review · 阻塞中", "text": "流水线: design-review · 阻塞中", "i18n": true, "cfontsize": 12, "color": "#D94A4A"}}
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -172,7 +172,7 @@
|
||||
"id": "app.sdlc_review_detail",
|
||||
"options": {"width": "100%", "flex": "1", "minHeight": "100px", "backgroundColor": "#1E1E2E", "borderRadius": "8px", "padding": "16px", "border": "1px solid #2A2A3E"},
|
||||
"subwidgets": [
|
||||
{"widgettype": "Text", "options": {"text": "点击任务或审批门禁查看详情", "cfontsize": 14, "color": "#666666"}}
|
||||
{"widgettype": "Text", "options": {"otext": "点击任务或审批门禁查看详情", "text": "点击任务或审批门禁查看详情", "i18n": true, "cfontsize": 14, "color": "#666666"}}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@ -4,11 +4,11 @@
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Title2",
|
||||
"options": {"text": "微信通道配置"}
|
||||
"options": {"otext": "微信通道配置", "text": "微信通道配置", "i18n": true}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "系统级公众号配置(业主机构公众号,仅系统管理员)+ 用户微信绑定", "cfontsize": 0.85, "color": "#94a3b8"}
|
||||
"options": {"otext": "系统级公众号配置(业主机构公众号,仅系统管理员)+ 用户微信绑定", "text": "系统级公众号配置(业主机构公众号,仅系统管理员)+ 用户微信绑定", "i18n": true, "cfontsize": 0.85, "color": "#94a3b8"}
|
||||
},
|
||||
{
|
||||
"widgettype": "VBox",
|
||||
@ -17,7 +17,7 @@
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Title3",
|
||||
"options": {"text": "公众号配置(系统管理员)"}
|
||||
"options": {"otext": "公众号配置(系统管理员)", "text": "公众号配置(系统管理员)", "i18n": true}
|
||||
},
|
||||
{
|
||||
"widgettype": "Form",
|
||||
@ -54,12 +54,12 @@
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Title3",
|
||||
"options": {"text": "绑定我的微信"}
|
||||
"options": {"otext": "绑定我的微信", "text": "绑定我的微信", "i18n": true}
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"id": "bind_status",
|
||||
"options": {"text": "加载中...", "cfontsize": 0.9, "color": "#64748b"}
|
||||
"options": {"otext": "加载中...", "text": "加载中...", "i18n": true, "cfontsize": 0.9, "color": "#64748b"}
|
||||
},
|
||||
{
|
||||
"widgettype": "Button",
|
||||
@ -78,7 +78,7 @@
|
||||
},
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"options": {"text": "绑定步骤:1. 点「生成绑定验证码」拿到 6 位码 → 2. 关注公众号「能做事的AI」→ 3. 给公众号发「绑定 验证码」完成绑定", "cfontsize": 0.8, "color": "#94a3b8"}
|
||||
"options": {"otext": "绑定步骤:1. 点「生成绑定验证码」拿到 6 位码 → 2. 关注公众号「能做事的AI」→ 3. 给公众号发「绑定 验证码」完成绑定", "text": "绑定步骤:1. 点「生成绑定验证码」拿到 6 位码 → 2. 关注公众号「能做事的AI」→ 3. 给公众号发「绑定 验证码」完成绑定", "i18n": true, "cfontsize": 0.8, "color": "#94a3b8"}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user