feat(menu): 产线菜单归组+顺序重排, KTV产线改名营销产线

- 五条产线归入「产线」组, 顺序: 商机→投标→开发→运维→营销
- KTV产线改名营销产线(待开发); 运维产线面向FOMS(待开发)
- 未开发的运维/营销产线点击提示规划中
- merge_i18n: 支持key:value格式+纳入主应用i18n目录(此前主应用词条从未合并)
This commit is contained in:
yumoqing 2026-08-29 16:35:07 +08:00
parent 3775ea8802
commit f750f024f9
10 changed files with 992 additions and 665 deletions

View File

@ -24,3 +24,11 @@ Submit: Submit
钉钉审批: DingTalk Approval 钉钉审批: DingTalk Approval
账务管理: Accounting 账务管理: Accounting
供销管理: Supply Chain 供销管理: Supply Chain
产线: Pipelines
商机产线: Opportunity Pipeline
投标产线: Bidding Pipeline
开发产线: Development Pipeline
运维产线: Operations Pipeline
营销产线: Marketing Pipeline
运维产线(面向FOMS)规划中,尚未开发: Operations Pipeline (for FOMS) is planned, not yet developed
营销产线规划中,尚未开发: Marketing Pipeline is planned, not yet developed

View File

@ -24,3 +24,11 @@ Submit: 送信
钉钉审批: DingTalk承認 钉钉审批: DingTalk承認
账务管理: 会計管理 账务管理: 会計管理
供销管理: 供給販売管理 供销管理: 供給販売管理
产线: パイプライン
商机产线: ビジネス機会パイプライン
投标产线: 入札パイプライン
开发产线: 開発パイプライン
运维产线: 運用パイプライン
营销产线: マーケティングパイプライン
运维产线(面向FOMS)规划中,尚未开发: 運用パイプライン(FOMS向け)は計画中で、まだ開発されていません
营销产线规划中,尚未开发: マーケティングパイプラインは計画中で、まだ開発されていません

View File

@ -24,3 +24,11 @@ Submit: 제출
钉钉审批: 딩톡 결재 钉钉审批: 딩톡 결재
账务管理: 회계 관리 账务管理: 회계 관리
供销管理: 공급판매 관리 供销管理: 공급판매 관리
产线: 파이프라인
商机产线: 비즈니스 기회 파이프라인
投标产线: 입찰 파이프라인
开发产线: 개발 파이프라인
运维产线: 운영 파이프라인
营销产线: 마케팅 파이프라인
运维产线(面向FOMS)规划中,尚未开发: 운영 파이프라인(FOMS 대상)은 계획 중이며 아직 개발되지 않았습니다
营销产线规划中,尚未开发: 마케팅 파이프라인은 계획 중이며 아직 개발되지 않았습니다

View File

@ -24,3 +24,11 @@ Submit: Submit
钉钉审批: 钉钉审批 钉钉审批: 钉钉审批
账务管理: 账务管理 账务管理: 账务管理
供销管理: 供销管理 供销管理: 供销管理
产线: 产线
商机产线: 商机产线
投标产线: 投标产线
开发产线: 开发产线
运维产线: 运维产线
营销产线: 营销产线
运维产线(面向FOMS)规划中,尚未开发: 运维产线(面向FOMS)规划中,尚未开发
营销产线规划中,尚未开发: 营销产线规划中,尚未开发

View File

@ -16,6 +16,7 @@ I18N_OUT = os.path.join(WWWROOT, 'i18n')
# Modules to scan for i18n # Modules to scan for i18n
MODULES = [ MODULES = [
('app', os.path.join(ROOT_DIR, 'i18n')),
('pipeline_core', os.path.join(ROOT_DIR, 'pipeline_core', 'i18n')), ('pipeline_core', os.path.join(ROOT_DIR, 'pipeline_core', 'i18n')),
('pipeline_ops', os.path.join(ROOT_DIR, 'pipeline_ops', 'i18n')), ('pipeline_ops', os.path.join(ROOT_DIR, 'pipeline_ops', 'i18n')),
('pipeline_dist', os.path.join(ROOT_DIR, 'pipeline_dist', 'i18n')), ('pipeline_dist', os.path.join(ROOT_DIR, 'pipeline_dist', 'i18n')),
@ -30,7 +31,7 @@ LANGS = ['zh', 'en', 'ko', 'jp']
def parse_msg_txt(filepath): def parse_msg_txt(filepath):
"""Parse msg.txt: key=value format.""" """Parse msg.txt: 'key=value' or 'key: value' format."""
result = OrderedDict() result = OrderedDict()
if not os.path.exists(filepath): if not os.path.exists(filepath):
return result return result
@ -42,6 +43,9 @@ def parse_msg_txt(filepath):
if '=' in line: if '=' in line:
key, val = line.split('=', 1) key, val = line.split('=', 1)
result[key.strip()] = val.strip() result[key.strip()] = val.strip()
elif ':' in line:
key, val = line.split(':', 1)
result[key.strip()] = val.strip()
return result return result

View File

@ -203,5 +203,75 @@
"限中国国内手机": "China domestic phones only", "限中国国内手机": "China domestic phones only",
"隐藏": "Hide", "隐藏": "Hide",
"静态内容": "Static Content", "静态内容": "Static Content",
"首屏标语、页脚信息、联系方式": "Hero banner, footer info, contact details" "首屏标语、页脚信息、联系方式": "Hero banner, footer info, contact details",
"付费价格(0": "免费): Price (0=Free)",
"支付状态(0待支付/1已支付/2已退款): Payment Status (0": "Pending/1=Paid/2=Refunded)",
"状态(0待审核/1已发布/2已下架): Status (0": "Pending/1=Published/2=Removed)",
"状态(1正常/0隐藏/2删除): Status (1": "Normal/0=Hidden/2=Deleted)",
"知识库": "Knowledge Base",
"向量引擎": "Vector Engine",
"多媒体(图文音视)": "Multimedia (image/audio/video)",
"文本(文档检索)": "Text (document retrieval)",
"钉钉审批": "DingTalk Approval",
"账务管理": "Accounting",
"供销管理": "Supply Chain",
"产线": "Pipelines",
"商机产线": "Opportunity Pipeline",
"投标产线": "Bidding Pipeline",
"开发产线": "Development Pipeline",
"运维产线": "Operations Pipeline",
"营销产线": "Marketing Pipeline",
"运维产线(面向FOMS)规划中,尚未开发": "Operations Pipeline (for FOMS) is planned, not yet developed",
"营销产线规划中,尚未开发": "Marketing Pipeline is planned, not yet developed",
"KTV付费下载记录表": "KTV Paid Download Records",
"← 返回": "← Back",
"下载数": "Downloads",
"下载链接": "Download Link",
"主内容文件URL": "Main Content File URL",
"主键ID": "Primary Key ID",
"作品ID": "Work ID",
"作品不存在": "Work not found",
"作品描述": "Work Description",
"作品标题": "Work Title",
"作品点赞表": "Work Likes Table",
"作品评论表": "Work Comments Table",
"作品详情": "Work Details",
"作者名称": "Author Name",
"作者用户ID": "Author User ID",
"全部": "All",
"回复数": "Replies",
"回复目标用户ID": "Reply Target User ID",
"回复目标用户名": "Reply Target Username",
"媒体类型(music/mtv/short_video/long_video/ktv)": "Media Type (music/mtv/short_video/long_video/ktv)",
"展示作品表": "Showcase Works Table",
"已下载次数": "Downloaded Count",
"已购买": "Purchased",
"文件大小(bytes)": "File Size (bytes)",
"时长(秒)": "Duration (seconds)",
"是否精选(0/1)": "Featured (0/1)",
"标签(逗号分隔)": "Tags (comma-separated)",
"模型原始输出": "Model Raw Output",
"模型输入prompt": "Model Input Prompt",
"浏览数": "Views",
"点赞数": "Likes",
"点赞时间": "Like Time",
"点赞用户ID": "Liker User ID",
"父评论ID(嵌套回复)": "Parent Comment ID (nested reply)",
"生成模型名称": "Generation Model Name",
"缩略图/封面URL": "Thumbnail/Cover URL",
"评论内容": "Comment Content",
"评论数": "Comments",
"评论点赞数": "Comment Likes",
"评论者ID": "Commenter ID",
"评论者名称": "Commenter Name",
"该作品免费,无需购买": "This work is free, no purchase needed",
"购买价格": "Purchase Price",
"购买成功": "Purchase Successful",
"购买时间": "Purchase Time",
"购买用户ID": "Buyer User ID",
"🎞️ 长视频": "🎞️ Long Video",
"🎤 KTV": "🎤 KTV",
"🎬 MTV": "🎬 MTV",
"🎵 音乐": "🎵 Music",
"📱 短视频": "📱 Short Video"
} }

View File

@ -203,5 +203,75 @@
"限中国国内手机": "中国国内の携帯電話限定", "限中国国内手机": "中国国内の携帯電話限定",
"隐藏": "非表示", "隐藏": "非表示",
"静态内容": "静的コンテンツ", "静态内容": "静的コンテンツ",
"首屏标语、页脚信息、联系方式": "ファーストビューのスローガン、フッター情報、連絡先" "首屏标语、页脚信息、联系方式": "ファーストビューのスローガン、フッター情報、連絡先",
"付费价格(0": "免费): 有料価格(0=無料)",
"知识库": "ナレッジベース",
"向量引擎": "ベクトルエンジン",
"多媒体(图文音视)": "マルチメディア(画像・音声・動画)",
"文本(文档检索)": "テキスト(文書検索)",
"钉钉审批": "DingTalk承認",
"账务管理": "会計管理",
"供销管理": "供給販売管理",
"产线": "パイプライン",
"商机产线": "ビジネス機会パイプライン",
"投标产线": "入札パイプライン",
"开发产线": "開発パイプライン",
"运维产线": "運用パイプライン",
"营销产线": "マーケティングパイプライン",
"运维产线(面向FOMS)规划中,尚未开发": "運用パイプライン(FOMS向け)は計画中で、まだ開発されていません",
"营销产线规划中,尚未开发": "マーケティングパイプラインは計画中で、まだ開発されていません",
"KTV付费下载记录表": "KTV有料ダウンロード記録表",
"← 返回": "← 戻る",
"下载数": "ダウンロード数",
"下载链接": "ダウンロードリンク",
"主内容文件URL": "メインコンテンツファイルURL",
"主键ID": "主キーID",
"作品ID": "作品ID",
"作品不存在": "作品が存在しません",
"作品描述": "作品説明",
"作品标题": "作品タイトル",
"作品点赞表": "作品いいね表",
"作品评论表": "作品コメント表",
"作品详情": "作品詳細",
"作者名称": "著者名",
"作者用户ID": "著者ユーザーID",
"全部": "全部",
"回复数": "返信数",
"回复目标用户ID": "返信対象ユーザーID",
"回复目标用户名": "返信対象ユーザー名",
"媒体类型(music/mtv/short_video/long_video/ktv)": "メディアタイプ(music/mtv/short_video/long_video/ktv)",
"展示作品表": "展示作品表",
"已下载次数": "ダウンロード済み回数",
"已购买": "購入済み",
"支付状态(0待支付/1已支付/2已退款)": "支払状態(0未払/1支払済/2返金済)",
"文件大小(bytes)": "ファイルサイズ(bytes)",
"时长(秒)": "時間(秒)",
"是否精选(0/1)": "厳選(0/1)",
"标签(逗号分隔)": "タグ(カンマ区切り)",
"模型原始输出": "モデル原始出力",
"模型输入prompt": "モデル入力プロンプト",
"浏览数": "閲覧数",
"点赞数": "いいね数",
"点赞时间": "いいね日時",
"点赞用户ID": "いいねユーザーID",
"父评论ID(嵌套回复)": "親コメントID(ネスト返信)",
"状态(0待审核/1已发布/2已下架)": "状態(0審査待ち/1公開済み/2公開停止)",
"状态(1正常/0隐藏/2删除)": "状態(1正常/0非表示/2削除)",
"生成模型名称": "生成モデル名",
"缩略图/封面URL": "サムネイル/カバーURL",
"评论内容": "コメント内容",
"评论数": "コメント数",
"评论点赞数": "コメントいいね数",
"评论者ID": "コメント者ID",
"评论者名称": "コメント者名",
"该作品免费,无需购买": "この作品は無料です、購入不要です",
"购买价格": "購入価格",
"购买成功": "購入成功",
"购买时间": "購入日時",
"购买用户ID": "購入ユーザーID",
"🎞️ 长视频": "🎞️ 長尺動画",
"🎤 KTV": "🎤 KTV",
"🎬 MTV": "🎬 MTV",
"🎵 音乐": "🎵 音楽",
"📱 短视频": "📱 ショート動画"
} }

View File

@ -203,5 +203,75 @@
"限中国国内手机": "중국 국내 휴대폰만 가능", "限中国国内手机": "중국 국내 휴대폰만 가능",
"隐藏": "숨기기", "隐藏": "숨기기",
"静态内容": "정적 콘텐츠", "静态内容": "정적 콘텐츠",
"首屏标语、页脚信息、联系方式": "메인 배너 슬로건, 푸터 정보, 연락처" "首屏标语、页脚信息、联系方式": "메인 배너 슬로건, 푸터 정보, 연락처",
"付费价格(0": "免费): 유료 가격(0=무료)",
"知识库": "지식 베이스",
"向量引擎": "벡터 엔진",
"多媒体(图文音视)": "멀티미디어(이미지/음성/영상)",
"文本(文档检索)": "텍스트(문서 검색)",
"钉钉审批": "딩톡 결재",
"账务管理": "회계 관리",
"供销管理": "공급판매 관리",
"产线": "파이프라인",
"商机产线": "비즈니스 기회 파이프라인",
"投标产线": "입찰 파이프라인",
"开发产线": "개발 파이프라인",
"运维产线": "운영 파이프라인",
"营销产线": "마케팅 파이프라인",
"运维产线(面向FOMS)规划中,尚未开发": "운영 파이프라인(FOMS 대상)은 계획 중이며 아직 개발되지 않았습니다",
"营销产线规划中,尚未开发": "마케팅 파이프라인은 계획 중이며 아직 개발되지 않았습니다",
"KTV付费下载记录表": "KTV 유료 다운로드 기록표",
"← 返回": "← 뒤로",
"下载数": "다운로드 수",
"下载链接": "다운로드 링크",
"主内容文件URL": "메인 콘텐츠 파일 URL",
"主键ID": "기본키 ID",
"作品ID": "작품 ID",
"作品不存在": "작품이 존재하지 않습니다",
"作品描述": "작품 설명",
"作品标题": "작품 제목",
"作品点赞表": "작품 좋아요 테이블",
"作品评论表": "작품 댓글 테이블",
"作品详情": "작품 상세",
"作者名称": "작가 이름",
"作者用户ID": "작가 사용자 ID",
"全部": "전체",
"回复数": "답글 수",
"回复目标用户ID": "답글 대상 사용자 ID",
"回复目标用户名": "답글 대상 사용자 이름",
"媒体类型(music/mtv/short_video/long_video/ktv)": "미디어 타입(music/mtv/short_video/long_video/ktv)",
"展示作品表": "쇼케이스 작품 테이블",
"已下载次数": "다운로드 완료 횟수",
"已购买": "구매 완료",
"支付状态(0待支付/1已支付/2已退款)": "결제 상태(0대기/1완료/2환불)",
"文件大小(bytes)": "파일 크기(bytes)",
"时长(秒)": "재생 시간(초)",
"是否精选(0/1)": "추천 여부(0/1)",
"标签(逗号分隔)": "태그(쉼표 구분)",
"模型原始输出": "모델 원본 출력",
"模型输入prompt": "모델 입력 프롬프트",
"浏览数": "조회수",
"点赞数": "좋아요 수",
"点赞时间": "좋아요 시간",
"点赞用户ID": "좋아요 사용자 ID",
"父评论ID(嵌套回复)": "부모 댓글 ID(중첩 답글)",
"状态(0待审核/1已发布/2已下架)": "상태(0심사대기/1게시/2내림)",
"状态(1正常/0隐藏/2删除)": "상태(1정상/0숨김/2삭제)",
"生成模型名称": "생성 모델 이름",
"缩略图/封面URL": "썸네일/커버 URL",
"评论内容": "댓글 내용",
"评论数": "댓글 수",
"评论点赞数": "댓글 좋아요 수",
"评论者ID": "댓글 작성자 ID",
"评论者名称": "댓글 작성자 이름",
"该作品免费,无需购买": "이 작품은 무료입니다. 구매 불필요",
"购买价格": "구매 가격",
"购买成功": "구매 성공",
"购买时间": "구매 시간",
"购买用户ID": "구매 사용자 ID",
"🎞️ 长视频": "🎞️ 장편 영상",
"🎤 KTV": "🎤 KTV",
"🎬 MTV": "🎬 MTV",
"🎵 音乐": "🎵 음악",
"📱 短视频": "📱 숏폼 영상"
} }

View File

@ -22,5 +22,78 @@
"管理产线定义、运营配置、分销渠道与任务执行": "管理产线定义、运营配置、分销渠道与任务执行", "管理产线定义、运营配置、分销渠道与任务执行": "管理产线定义、运营配置、分销渠道与任务执行",
"管理产线定价、供应量与使用记录": "管理产线定价、供应量与使用记录", "管理产线定价、供应量与使用记录": "管理产线定价、供应量与使用记录",
"管理分销商与产线配置": "管理分销商与产线配置", "管理分销商与产线配置": "管理分销商与产线配置",
"运营管理": "运营管理" "运营管理": "运营管理",
"付费价格(0": "免费): 付费价格(0=免费)",
"知识库": "知识库",
"向量引擎": "向量引擎",
"多媒体(图文音视)": "多媒体(图文音视)",
"文本(文档检索)": "文本(文档检索)",
"钉钉审批": "钉钉审批",
"账务管理": "账务管理",
"供销管理": "供销管理",
"产线": "产线",
"商机产线": "商机产线",
"投标产线": "投标产线",
"开发产线": "开发产线",
"运维产线": "运维产线",
"营销产线": "营销产线",
"运维产线(面向FOMS)规划中,尚未开发": "运维产线(面向FOMS)规划中,尚未开发",
"营销产线规划中,尚未开发": "营销产线规划中,尚未开发",
"KTV付费下载记录表": "KTV付费下载记录表",
"← 返回": "← 返回",
"下载数": "下载数",
"下载链接": "下载链接",
"主内容文件URL": "主内容文件URL",
"主键ID": "主键ID",
"作品ID": "作品ID",
"作品不存在": "作品不存在",
"作品描述": "作品描述",
"作品标题": "作品标题",
"作品点赞表": "作品点赞表",
"作品评论表": "作品评论表",
"作品详情": "作品详情",
"作者名称": "作者名称",
"作者用户ID": "作者用户ID",
"全部": "全部",
"内容分类": "内容分类",
"创建时间": "创建时间",
"回复数": "回复数",
"回复目标用户ID": "回复目标用户ID",
"回复目标用户名": "回复目标用户名",
"媒体类型(music/mtv/short_video/long_video/ktv)": "媒体类型(music/mtv/short_video/long_video/ktv)",
"展示作品表": "展示作品表",
"已下载次数": "已下载次数",
"已购买": "已购买",
"支付状态(0待支付/1已支付/2已退款)": "支付状态(0待支付/1已支付/2已退款)",
"文件大小(bytes)": "文件大小(bytes)",
"时长(秒)": "时长(秒)",
"是否精选(0/1)": "是否精选(0/1)",
"更新时间": "更新时间",
"标签(逗号分隔)": "标签(逗号分隔)",
"模型原始输出": "模型原始输出",
"模型输入prompt": "模型输入prompt",
"浏览数": "浏览数",
"点赞数": "点赞数",
"点赞时间": "点赞时间",
"点赞用户ID": "点赞用户ID",
"父评论ID(嵌套回复)": "父评论ID(嵌套回复)",
"状态(0待审核/1已发布/2已下架)": "状态(0待审核/1已发布/2已下架)",
"状态(1正常/0隐藏/2删除)": "状态(1正常/0隐藏/2删除)",
"生成模型名称": "生成模型名称",
"缩略图/封面URL": "缩略图/封面URL",
"评论内容": "评论内容",
"评论数": "评论数",
"评论点赞数": "评论点赞数",
"评论者ID": "评论者ID",
"评论者名称": "评论者名称",
"该作品免费,无需购买": "该作品免费,无需购买",
"购买价格": "购买价格",
"购买成功": "购买成功",
"购买时间": "购买时间",
"购买用户ID": "购买用户ID",
"🎞️ 长视频": "🎞️ 长视频",
"🎤 KTV": "🎤 KTV",
"🎬 MTV": "🎬 MTV",
"🎵 音乐": "🎵 音乐",
"📱 短视频": "📱 短视频"
} }

View File

@ -158,22 +158,36 @@
"script": "this.open_tab({name:'skill_manage',label:'技能管理',url:'/pipeline_core/skill_proposals',removable:true})" "script": "this.open_tab({name:'skill_manage',label:'技能管理',url:'/pipeline_core/skill_proposals',removable:true})"
}, },
{ {
"name": "pipeline_sdlc", "name": "pipelines_group",
"label": "开发产线", "label": "产线",
"icon": "{{entire_url('/imgs/workflow.svg')}}", "icon": "{{entire_url('/imgs/workflow.svg')}}",
"script": "this.open_tab({name:'pipeline_sdlc',label:'开发产线',url:'/pipeline_core/agent',removable:true})" "items": [
{
"name": "pipeline_opportunity",
"label": "商机产线",
"script": "this.open_tab({name:'pipeline_opportunity',label:'商机产线',url:'/pipeline-opportunity/agent',removable:true})"
}, },
{ {
"name": "pipeline_bidding", "name": "pipeline_bidding",
"label": "投标产线", "label": "投标产线",
"icon": "{{entire_url('/imgs/rocket.svg')}}",
"script": "this.open_tab({name:'pipeline_bidding',label:'投标产线',url:'/pipeline-bidding/agent',removable:true})" "script": "this.open_tab({name:'pipeline_bidding',label:'投标产线',url:'/pipeline-bidding/agent',removable:true})"
}, },
{ {
"name": "pipeline_opportunity", "name": "pipeline_sdlc",
"label": "商机产线", "label": "开发产线",
"icon": "{{entire_url('/imgs/workflow.svg')}}", "script": "this.open_tab({name:'pipeline_sdlc',label:'开发产线',url:'/pipeline_core/agent',removable:true})"
"script": "this.open_tab({name:'pipeline_opportunity',label:'商机产线',url:'/pipeline-opportunity/agent',removable:true})" },
{
"name": "pipeline_foms",
"label": "运维产线",
"script": "bricks.show_message({title:'运维产线',message:'运维产线(面向FOMS)规划中,尚未开发'});"
},
{
"name": "pipeline_marketing",
"label": "营销产线",
"script": "bricks.show_message({title:'营销产线',message:'营销产线规划中,尚未开发'});"
}
]
}, },
{ {
"name": "wechat_channel", "name": "wechat_channel",
@ -199,12 +213,6 @@
"icon": "{{entire_url('/imgs/rocket.svg')}}", "icon": "{{entire_url('/imgs/rocket.svg')}}",
"script": "this.open_tab({name:'pipeline_task',label:'任务中心',url:'/pipeline_task',removable:true})" "script": "this.open_tab({name:'pipeline_task',label:'任务中心',url:'/pipeline_task',removable:true})"
}, },
{
"name": "pipeline_ktv",
"label": "KTV产线",
"icon": "{{entire_url('/imgs/mic.svg')}}",
"script": "this.open_tab({name:'pipeline_ktv',label:'KTV产线',url:'/pipeline_task/task_submit.ui',removable:true})"
},
{ {
"name": "accounting", "name": "accounting",
"label": "账务管理", "label": "账务管理",