英國皇家物流與運輸學會

The Chartered Institute of Logistics and Transport (CILT)
成立於1919年,皇家憲章認可的全球專業領袖

了解更多

關於我們

我們的歷史與使命

英國皇家物流與運輸學會(CILT)成立於1919年,1926年獲得皇家憲章認可。作為國際性組織,我們擁有全球分會網路,從愛爾蘭到印度、亞洲到非洲、加拿大到澳洲,服務超過30,000位會員,提供特定服務與支援。

使命:提升物流與運輸專業技術,透過不同會員等級認證專業程度,並培訓全球人才。

"Royal Chartered Status granted by the Crown guarantees prestige and professional standards."

產品與服務

👥

會員認證

皇家特許會員資格,涵蓋多個等級,證明專業知識與技能。

📚

培訓與教育

設計完整學習大綱與考試,培養物流運輸專業人才。

🌍

全球支援

國際分會網路,提供在地化服務與資源。

會員等級表格

等級描述要求
Affiliate入門級基本興趣
Member (MILT)中級專業經驗
Chartered Member (CMILT)皇家特許高階領導力
Fellow (FCILT)最高榮譽傑出貢獻

聯絡我們

Frequently Asked Questions

What is The Chartered Institute of Logistics and Transport (CILT)?

The Chartered Institute of Logistics and Transport (CILT) was established in 1919 and received Royal Charter recognition in 1926. It is an international organization with over 30,000 members worldwide, providing services through national sections and branches from Ireland to India, Asia to Africa, Canada, and Australia.

When was CILT founded?

CILT was founded in 1919. It was granted a Royal Charter in 1926, affirming its status as a leading authority in logistics and transport.

What is the mission of CILT?

CILT's mission is to promote and elevate professional standards in logistics and transport. It achieves this through education, training programs, qualifications, and recognition via different membership levels.

How many members does CILT have?

CILT serves over 30,000 members globally. These members benefit from tailored services and support across its international network of sections and branches.

What is Chartered Status at CILT?

Chartered Status is a prestigious designation granted by the UK Crown to qualifying CILT members. It signifies the highest professional standards, expertise, and commitment in logistics and transport.

Where does CILT operate?

CILT operates worldwide with branches spanning Ireland to India, Asia to Africa, Canada, and Australia. It closely aligns services with local member needs in each region.

What qualifications does CILT offer?

CILT designs comprehensive syllabi, learning programs, and examinations for certifications. These qualifications validate professional knowledge and skills in logistics and transport at various levels.

What services does CILT provide to members?

CILT provides professional development, networking, training, and support services. Members access resources, events, and pathways to chartered status for career advancement.

📋
完整產業報告
7 章節完整分析:SWOT、五力、競爭態勢、TAM/SAM/SOM
🔲
BCG 矩陣分析
成長率-市佔率四象限:Stars / Cash Cows / Question Marks / Dogs
🏗️
Porter 五力分析
五大競爭力量深度分析 + 強度評分 + 策略回應
⚖️
SWOT 分析
優劣勢 / 機會威脅 + TOWS 交叉矩陣策略
🌍
PEST 分析
政治 / 經濟 / 社會 / 技術 四維總體環境分析
🔗
價值鏈分析
主要活動 + 支援活動 + 價值優化建議
🌊
藍海策略分析
消除 / 減少 / 提升 / 創造 四項行動架構

撰寫貼文

發文紀錄

尚無發文紀錄
/g,'>'); }); var imgs=section.el.querySelectorAll('img'); imgs.forEach(function(img,i){ }); var vids=section.el.querySelectorAll('video'); vids.forEach(function(vid,i){ var vidSrc=vid.querySelector('source')?vid.querySelector('source').getAttribute('src'):(vid.getAttribute('src')||''); var vi=imgs.length+i; }); document.getElementById('hmcmsEditModal').classList.add('active'); }; var hmcmsNewImgCount=0; window.hmcmsAddNewMedia=function(){ var c=document.getElementById('hmcmsNewImgContainer');if(!c)return; var idx=hmcmsNewImgCount++; }; window.hmcmsAddNewImage=window.hmcmsAddNewMedia; window.hmcmsIsVideo=function(mime){return mime&&mime.startsWith('video/')}; window.hmcmsHandleImgReplace=function(event,imgIdx){ var file=event.target.files[0];if(!file)return; var reader=new FileReader(); reader.onload=function(){ var dataUrl=reader.result; var base64=dataUrl.split(',')[1]; var ext=file.name.split('.').pop().toLowerCase()||'jpg'; var mimeType=file.type||'image/jpeg'; var dir=hmcmsIsVideo(mimeType)?'media':'images'; var path=dir+'/cms-upload-'+(++hmcmsUploadCount)+'.'+ext; hmcmsUploadedImages.push({path:path,data:base64,mimeType:mimeType}); var urlInput=document.getElementById('hmcmsEditImg'+imgIdx); if(urlInput){urlInput.value=path;urlInput.setAttribute('data-media-type',hmcmsIsVideo(mimeType)?'video':'image')} var thumb=document.getElementById('hmcmsEditImgThumb'+imgIdx); if(thumb){ if(hmcmsIsVideo(mimeType)){thumb.style.display='none';var vp=document.createElement('video');vp.src=dataUrl;vp.controls=true;vp.style.cssText='width:80px;height:50px;object-fit:cover;border-radius:4px';thumb.parentNode.insertBefore(vp,thumb)} else{thumb.src=dataUrl} } }; reader.readAsDataURL(file); }; window.hmcmsHandleVidReplace=function(event,vidIdx){ var file=event.target.files[0];if(!file)return; var reader=new FileReader(); reader.onload=function(){ var dataUrl=reader.result; var base64=dataUrl.split(',')[1]; var ext=file.name.split('.').pop().toLowerCase()||'mp4'; var mimeType=file.type||'video/mp4'; var path='media/cms-upload-'+(++hmcmsUploadCount)+'.'+ext; hmcmsUploadedImages.push({path:path,data:base64,mimeType:mimeType}); var urlInput=document.getElementById('hmcmsEditVid'+vidIdx); if(urlInput)urlInput.value=path; var thumb=document.getElementById('hmcmsEditVidThumb'+vidIdx); if(thumb){var s=thumb.querySelector('source');if(s)s.src=dataUrl;else thumb.src=dataUrl;thumb.load()} }; reader.readAsDataURL(file); }; window.hmcmsHandleNewImgFile=function(event,idx){ var file=event.target.files[0];if(!file)return; var isVid=file.type&&file.type.startsWith('video/'); var reader=new FileReader(); reader.onload=function(){ var dataUrl=reader.result; var base64=dataUrl.split(',')[1]; var ext=file.name.split('.').pop().toLowerCase()||(isVid?'mp4':'jpg'); var mimeType=file.type||(isVid?'video/mp4':'image/jpeg'); var dir=isVid?'media':'images'; var path=dir+'/cms-upload-'+(++hmcmsUploadCount)+'.'+ext; hmcmsUploadedImages.push({path:path,data:base64,mimeType:mimeType}); var urlInput=document.getElementById('hmcmsNewImgUrl'+idx); if(urlInput)urlInput.value=path; var typeInput=document.getElementById('hmcmsNewMediaType'+idx); if(typeInput)typeInput.value=isVid?'video':'image'; if(isVid){ var vp=document.getElementById('hmcmsNewVidPreview'+idx); if(vp){vp.src=dataUrl;vp.style.display='block'} var ip=document.getElementById('hmcmsNewImgPreview'+idx); if(ip)ip.style.display='none'; }else{ var preview=document.getElementById('hmcmsNewImgPreview'+idx); if(preview){preview.src=dataUrl;preview.style.display='block'} var vp2=document.getElementById('hmcmsNewVidPreview'+idx); if(vp2)vp2.style.display='none'; } }; reader.readAsDataURL(file); }; window.hmcmsCloseEdit=function(){ document.getElementById('hmcmsEditModal').classList.remove('active'); hmcmsCurrentEdit=null;hmcmsNewImgCount=0; }; window.hmcmsSaveEdit=function(){ if(!hmcmsCurrentEdit)return; var section=hmcmsSections.find(function(s){return s.id===hmcmsCurrentEdit}); if(!section)return; var hi=document.getElementById('hmcmsEditHeading'); if(hi){var h=section.el.querySelector('h1,h2,h3,h4,h5,h6');if(h)h.textContent=hi.value} var paras=section.el.querySelectorAll('p'); paras.forEach(function(p,i){var inp=document.getElementById('hmcmsEditPara'+i);if(inp)p.textContent=inp.value}); var imgs=section.el.querySelectorAll('img'); imgs.forEach(function(img,i){ var si=document.getElementById('hmcmsEditImg'+i); var ai=document.getElementById('hmcmsEditImgAlt'+i); if(si){ var newSrc=si.value; var mediaType=si.getAttribute('data-media-type'); var up=hmcmsUploadedImages.find(function(u){return u.path===newSrc}); if(up&&hmcmsIsVideo(up.mimeType)){ var vid=document.createElement('video');vid.controls=true;vid.autoplay=false;vid.style.cssText=img.style.cssText||'width:100%;max-width:600px;border-radius:8px;margin:12px auto;display:block'; var vsrc=document.createElement('source');vsrc.src='data:'+up.mimeType+';base64,'+up.data;vsrc.type=up.mimeType; vid.appendChild(vsrc);vid.setAttribute('data-cms-upload-path',newSrc); img.parentNode.replaceChild(vid,img); }else if(up){ img.src='data:'+up.mimeType+';base64,'+up.data; img.setAttribute('data-cms-upload-path',newSrc); }else{ img.src=newSrc; img.removeAttribute('data-cms-upload-path'); } } if(ai)img.alt=ai.value; }); var vids=section.el.querySelectorAll('video'); vids.forEach(function(vid,i){ var vi=document.getElementById('hmcmsEditVid'+i); if(vi){ var newSrc=vi.value; var up=hmcmsUploadedImages.find(function(u){return u.path===newSrc}); if(up){ var s=vid.querySelector('source'); if(s){s.src='data:'+up.mimeType+';base64,'+up.data;s.type=up.mimeType}else{vid.src='data:'+up.mimeType+';base64,'+up.data} vid.setAttribute('data-cms-upload-path',newSrc);vid.load(); }else if(newSrc){ var s2=vid.querySelector('source');if(s2){s2.src=newSrc}else{vid.src=newSrc} vid.removeAttribute('data-cms-upload-path');vid.load(); } } }); for(var ni=0;ni'; }).join(''); } if(j.status==='done'){ clearInterval(poll); btn.textContent='發布成功!'; hmcmsModified.clear();hmcmsUploadedImages=[];hmcmsUploadCount=0;hmcmsRenderPanel(); setTimeout(function(){btn.textContent='發布更新';btn.disabled=true},3000); }else if(j.status==='error'){ clearInterval(poll); btn.textContent='發布失敗';btn.disabled=false; } }); },2000); }) .catch(function(e){ progress.innerHTML='
發布失敗:'+e.message+'
'; btn.textContent='發布更新';btn.disabled=false; }); }; if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',hmcmsInit)}else{hmcmsInit()} })(); '} }catch(_){} } return pump(); }); } return pump(); }) .catch(function(e){ if(e.name==='AbortError')return; loadingEl.style.display='none'; contentEl.style.display='block'; contentEl.innerHTML='
報告生成失敗:'+e.message+'
'; }); } window.hmReportDownloadPDF=function(){ var el=document.getElementById('hmReportContent'); if(!el||!el.innerHTML)return; var clone=el.cloneNode(true); clone.style.cssText='background:#fff;color:#222;padding:32px;font-size:14px;line-height:1.7'; clone.querySelectorAll('h2').forEach(function(h){h.style.cssText='color:#1a3a6e;font-size:20px;margin:24px 0 12px;padding-bottom:6px;border-bottom:2px solid #1a3a6e'}); clone.querySelectorAll('h3').forEach(function(h){h.style.cssText='color:#2d5a9e;font-size:16px;margin:16px 0 8px'}); clone.querySelectorAll('table').forEach(function(t){t.style.cssText='width:100%;border-collapse:collapse;margin:12px 0;font-size:12px'}); clone.querySelectorAll('th').forEach(function(h){h.style.cssText='background:#e8edf5;color:#1a3a6e;padding:8px 10px;text-align:left;border:1px solid #ccc;font-weight:600'}); clone.querySelectorAll('td').forEach(function(d){d.style.cssText='padding:8px 10px;border:1px solid #ddd;color:#333'}); clone.querySelectorAll('strong').forEach(function(s){s.style.color='#1a1a2e'}); clone.querySelectorAll('li,p').forEach(function(p){p.style.color='#333'}); var wrapper=document.createElement('div'); wrapper.appendChild(clone); document.body.appendChild(wrapper); html2pdf().set({ margin:[10,10,10,10], filename:(document.title||'report')+'-analysis.pdf', image:{type:'jpeg',quality:.95}, html2canvas:{scale:2,useCORS:true}, jsPDF:{unit:'mm',format:'a4',orientation:'portrait'}, pagebreak:{mode:['avoid-all','css','legacy']} }).from(clone).save().then(function(){document.body.removeChild(wrapper)}).catch(function(){document.body.removeChild(wrapper)}); }; })();
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...
📋
完整產業報告
7 章節完整分析:SWOT、五力、競爭態勢、TAM/SAM/SOM
🔲
BCG 矩陣分析
成長率-市佔率四象限:Stars / Cash Cows / Question Marks / Dogs
🏗️
Porter 五力分析
五大競爭力量深度分析 + 強度評分 + 策略回應
⚖️
SWOT 分析
優劣勢 / 機會威脅 + TOWS 交叉矩陣策略
🌍
PEST 分析
政治 / 經濟 / 社會 / 技術 四維總體環境分析
🔗
價值鏈分析
主要活動 + 支援活動 + 價值優化建議
🌊
藍海策略分析
消除 / 減少 / 提升 / 創造 四項行動架構

撰寫貼文

發文紀錄

尚無發文紀錄
var presets=document.getElementById('hmcmsColorPresets'); var pp=document.getElementById('hmcmsColorPrimary'),ph=document.getElementById('hmcmsColorPrimaryHex'); var sp=document.getElementById('hmcmsColorSecondary'),sh=document.getElementById('hmcmsColorSecondaryHex'); var ap=document.getElementById('hmcmsColorAccent'),ah=document.getElementById('hmcmsColorAccentHex'); if(pp){pp.value=hmcmsDetectedColors.primary;ph.value=hmcmsDetectedColors.primary} if(sp){sp.value=hmcmsDetectedColors.secondary;sh.value=hmcmsDetectedColors.secondary} if(ap){ap.value=hmcmsDetectedColors.accent;ah.value=hmcmsDetectedColors.accent} if(pp)pp.oninput=function(){ph.value=pp.value}; if(sp)sp.oninput=function(){sh.value=sp.value}; if(ap)ap.oninput=function(){ah.value=ap.value}; if(ph)ph.oninput=function(){if(/^#[0-9a-fA-F]{6}$/.test(ph.value))pp.value=ph.value}; if(sh)sh.oninput=function(){if(/^#[0-9a-fA-F]{6}$/.test(sh.value))sp.value=sh.value}; if(ah)ah.oninput=function(){if(/^#[0-9a-fA-F]{6}$/.test(ah.value))ap.value=ah.value}; }; window.hmcmsToggleColor=function(){ var body=document.getElementById('hmcmsColorBody'),arrow=document.getElementById('hmcmsColorArrow'); if(!body)return; var open=body.style.display!=='none'; body.style.display=open?'none':'block'; if(arrow)arrow.classList.toggle('open',!open); }; window.hmcmsToggleContent=function(){ var body=document.getElementById('hmcmsContentBody'),arrow=document.getElementById('hmcmsContentArrow'); if(!body)return; var open=body.style.display!=='none'; body.style.display=open?'none':'block'; if(arrow)arrow.classList.toggle('open',!open); }; function hmcmsDoReplace(oldP,oldS,oldA,newP,newS,newA){ hmcmsOriginalStyles.forEach(function(s){s.el.textContent=s.text}); hmcmsOriginalInlines.forEach(function(s){s.el.setAttribute('style',s.style)}); var reps=[]; if(oldP&&newP&&oldP!==newP)reps.push([oldP,newP]); if(oldS&&newS&&oldS!==newS)reps.push([oldS,newS]); if(oldA&&newA&&oldA!==newA)reps.push([oldA,newA]); if(reps.length===0)return; document.querySelectorAll('style:not([data-hmcms])').forEach(function(st){ var t=st.textContent; reps.forEach(function(r){t=t.replace(new RegExp(hmcmsEscRx(r[0]),'gi'),r[1]);var sh=hmcmsShortHex(r[0]);if(sh)t=t.replace(new RegExp(hmcmsEscRx(sh),'gi'),r[1])}); st.textContent=t; }); document.querySelectorAll('[style]').forEach(function(el){ if(el.closest('[data-hmcms]'))return; var s=el.getAttribute('style'); reps.forEach(function(r){s=s.replace(new RegExp(hmcmsEscRx(r[0]),'gi'),r[1]);var sh=hmcmsShortHex(r[0]);if(sh)s=s.replace(new RegExp(hmcmsEscRx(sh),'gi'),r[1])}); el.setAttribute('style',s); }); hmcmsModified.add('__color__');hmcmsUpdateFooter(); } window.hmcmsApplyPreset=function(idx){ var p=HMCMS_PRESETS[idx];if(!p)return; hmcmsDoReplace(hmcmsDetectedColors.primary,hmcmsDetectedColors.secondary,hmcmsDetectedColors.accent,p.p,p.s,p.a); var pp=document.getElementById('hmcmsColorPrimary'),ph=document.getElementById('hmcmsColorPrimaryHex'); var sp=document.getElementById('hmcmsColorSecondary'),sh=document.getElementById('hmcmsColorSecondaryHex'); var ap=document.getElementById('hmcmsColorAccent'),ah=document.getElementById('hmcmsColorAccentHex'); if(pp){pp.value=p.p;ph.value=p.p} if(sp){sp.value=p.s;sh.value=p.s} if(ap){ap.value=p.a;ah.value=p.a} document.querySelectorAll('.hmcms-color-preset-btn').forEach(function(b,i){b.classList.toggle('active',i===idx)}); }; window.hmcmsApplyCustomColors=function(){ var np=document.getElementById('hmcmsColorPrimaryHex').value; var ns=document.getElementById('hmcmsColorSecondaryHex').value; var na=document.getElementById('hmcmsColorAccentHex').value; if(!/^#[0-9a-fA-F]{6}$/.test(np)||!/^#[0-9a-fA-F]{6}$/.test(ns)||!/^#[0-9a-fA-F]{6}$/.test(na)){alert('請輸入有效的 HEX 色碼(如 #ff6600)');return} hmcmsDoReplace(hmcmsDetectedColors.primary,hmcmsDetectedColors.secondary,hmcmsDetectedColors.accent,np,ns,na); document.querySelectorAll('.hmcms-color-preset-btn').forEach(function(b){b.classList.remove('active')}); }; window.hmcmsResetColors=function(){ hmcmsOriginalStyles.forEach(function(s){s.el.textContent=s.text}); hmcmsOriginalInlines.forEach(function(s){s.el.setAttribute('style',s.style)}); hmcmsModified.delete('__color__');hmcmsUpdateFooter(); var pp=document.getElementById('hmcmsColorPrimary'),ph=document.getElementById('hmcmsColorPrimaryHex'); var sp=document.getElementById('hmcmsColorSecondary'),sh=document.getElementById('hmcmsColorSecondaryHex'); var ap=document.getElementById('hmcmsColorAccent'),ah=document.getElementById('hmcmsColorAccentHex'); if(pp){pp.value=hmcmsDetectedColors.primary;ph.value=hmcmsDetectedColors.primary} if(sp){sp.value=hmcmsDetectedColors.secondary;sh.value=hmcmsDetectedColors.secondary} if(ap){ap.value=hmcmsDetectedColors.accent;ah.value=hmcmsDetectedColors.accent} document.querySelectorAll('.hmcms-color-preset-btn').forEach(function(b){b.classList.remove('active')}); }; function hmcmsInit(){ var check=setInterval(function(){ if(window.AuthUI){ clearInterval(check); window.AuthUI.onAuthChange(function(user){ if(!user){ var trigger=document.getElementById('hmcmsTriggerBtn'); if(trigger)trigger.style.display='none'; var analysisBtn2=document.getElementById('hmAnalysisBtn'); if(analysisBtn2)analysisBtn2.style.display='none'; var panel=document.getElementById('hmcmsPanel'); if(panel)panel.classList.remove('open'); return; } (window.AuthUI.checkSiteAdmin?window.AuthUI.checkSiteAdmin(user):Promise.resolve()).then(function(){ var trigger=document.getElementById('hmcmsTriggerBtn'); if(window.AuthUI.isAdmin&&window.AuthUI.isAdmin(user)){ if(trigger)trigger.style.display='block'; /* Dynamic analysis button injection */ var analysisBtn=document.getElementById('hmAnalysisBtn'); if(!analysisBtn){ var dropdown=document.getElementById('hmauthDropdown'); var logoutBtn=dropdown&&dropdown.querySelector('.hmauth-logout'); if(dropdown&&logoutBtn){ analysisBtn=document.createElement('button'); analysisBtn.id='hmAnalysisBtn'; analysisBtn.style.cssText='width:100%;background:none;border:1px solid rgba(251,191,36,.3);border-radius:8px;padding:8px 12px;cursor:pointer;font-size:13px;color:#fbbf24;transition:all .2s;font-family:inherit;margin-bottom:8px'; analysisBtn.textContent='📊 產業分析'; analysisBtn.onclick=function(){hmAnalysisShow()}; dropdown.insertBefore(analysisBtn,logoutBtn); } } if(analysisBtn)analysisBtn.style.display='block'; hmcmsDetectSections(); hmcmsRenderPanel(); hmcmsDetectColors(); hmcmsRenderColorInfo(); if(new URLSearchParams(window.location.search).get('hmcms')==='open'){ hmcmsTogglePanel(); } }else{ if(trigger)trigger.style.display='none'; var analysisBtn3=document.getElementById('hmAnalysisBtn'); if(analysisBtn3)analysisBtn3.style.display='none'; var panel=document.getElementById('hmcmsPanel'); if(panel)panel.classList.remove('open'); } }); }); } },200); } window.hmcmsDetectSections=function(){ hmcmsSections=[]; document.querySelectorAll('[data-cms-id]').forEach(function(el){ if(el.closest('[data-hmcms]'))return; var id=el.getAttribute('data-cms-id'); var heading=el.querySelector('h1,h2,h3,h4,h5,h6'); var label=heading?heading.textContent.trim().slice(0,30):el.tagName.toLowerCase(); var paras=el.querySelectorAll('p'); var preview=paras.length>0?paras[0].textContent.trim().slice(0,60):''; var images=el.querySelectorAll('img'); hmcmsSections.push({id:id,el:el,label:label,preview:preview,imageCount:images.length}); }); }; window.hmcmsRenderPanel=function(){ var body=document.getElementById('hmcmsPanelBody'); if(!body)return; body.innerHTML=''; var hint=document.getElementById('hmcmsContentHint'); if(hint)hint.style.display=hmcmsSections.length===0?'block':'none'; hmcmsSections.forEach(function(s){ var mod=hmcmsModified.has(s.id)?' modified':''; var card=document.createElement('div'); card.className='hmcms-card'+mod; +imgInfo card.addEventListener('mouseenter',function(){s.el.classList.add('hmcms-highlight')}); card.addEventListener('mouseleave',function(){s.el.classList.remove('hmcms-highlight')}); body.appendChild(card); }); hmcmsUpdateFooter(); }; function hmcmsUpdateFooter(){ var info=document.getElementById('hmcmsFooterInfo'); var btn=document.getElementById('hmcmsPublishBtn'); var hasColor=hmcmsModified.has('__color__'); var sCount=hmcmsModified.size-(hasColor?1:0); var parts=[]; if(sCount>0)parts.push(sCount+' 個區塊已修改'); if(hasColor)parts.push('配色已修改'); if(info)info.textContent=parts.length>0?parts.join(','):'尚未修改任何內容'; if(btn)btn.disabled=hmcmsModified.size===0; } window.hmcmsTogglePanel=function(){ var panel=document.getElementById('hmcmsPanel'); if(panel)panel.classList.toggle('open'); var dropdown=document.getElementById('hmauthDropdown'); if(dropdown)dropdown.classList.remove('open'); }; window.hmcmsOpenEdit=function(sectionId){ var section=hmcmsSections.find(function(s){return s.id===sectionId}); if(!section)return; hmcmsCurrentEdit=sectionId; var fields=document.getElementById('hmcmsEditFields'); var title=document.getElementById('hmcmsEditTitle'); title.textContent='編輯:'+section.label; fields.innerHTML=''; var heading=section.el.querySelector('h1,h2,h3,h4,h5,h6'); if(heading){ } var paras=section.el.querySelectorAll('p'); paras.forEach(function(p,i){ var val=p.textContent.trim().replace(//g,'>'); }); var imgs=section.el.querySelectorAll('img'); imgs.forEach(function(img,i){ }); var vids=section.el.querySelectorAll('video'); vids.forEach(function(vid,i){ var vidSrc=vid.querySelector('source')?vid.querySelector('source').getAttribute('src'):(vid.getAttribute('src')||''); var vi=imgs.length+i; }); document.getElementById('hmcmsEditModal').classList.add('active'); }; var hmcmsNewImgCount=0; window.hmcmsAddNewMedia=function(){ var c=document.getElementById('hmcmsNewImgContainer');if(!c)return; var idx=hmcmsNewImgCount++; }; window.hmcmsAddNewImage=window.hmcmsAddNewMedia; window.hmcmsIsVideo=function(mime){return mime&&mime.startsWith('video/')}; window.hmcmsHandleImgReplace=function(event,imgIdx){ var file=event.target.files[0];if(!file)return; var reader=new FileReader(); reader.onload=function(){ var dataUrl=reader.result; var base64=dataUrl.split(',')[1]; var ext=file.name.split('.').pop().toLowerCase()||'jpg'; var mimeType=file.type||'image/jpeg'; var dir=hmcmsIsVideo(mimeType)?'media':'images'; var path=dir+'/cms-upload-'+(++hmcmsUploadCount)+'.'+ext; hmcmsUploadedImages.push({path:path,data:base64,mimeType:mimeType}); var urlInput=document.getElementById('hmcmsEditImg'+imgIdx); if(urlInput){urlInput.value=path;urlInput.setAttribute('data-media-type',hmcmsIsVideo(mimeType)?'video':'image')} var thumb=document.getElementById('hmcmsEditImgThumb'+imgIdx); if(thumb){ if(hmcmsIsVideo(mimeType)){thumb.style.display='none';var vp=document.createElement('video');vp.src=dataUrl;vp.controls=true;vp.style.cssText='width:80px;height:50px;object-fit:cover;border-radius:4px';thumb.parentNode.insertBefore(vp,thumb)} else{thumb.src=dataUrl} } }; reader.readAsDataURL(file); }; window.hmcmsHandleVidReplace=function(event,vidIdx){ var file=event.target.files[0];if(!file)return; var reader=new FileReader(); reader.onload=function(){ var dataUrl=reader.result; var base64=dataUrl.split(',')[1]; var ext=file.name.split('.').pop().toLowerCase()||'mp4'; var mimeType=file.type||'video/mp4'; var path='media/cms-upload-'+(++hmcmsUploadCount)+'.'+ext; hmcmsUploadedImages.push({path:path,data:base64,mimeType:mimeType}); var urlInput=document.getElementById('hmcmsEditVid'+vidIdx); if(urlInput)urlInput.value=path; var thumb=document.getElementById('hmcmsEditVidThumb'+vidIdx); if(thumb){var s=thumb.querySelector('source');if(s)s.src=dataUrl;else thumb.src=dataUrl;thumb.load()} }; reader.readAsDataURL(file); }; window.hmcmsHandleNewImgFile=function(event,idx){ var file=event.target.files[0];if(!file)return; var isVid=file.type&&file.type.startsWith('video/'); var reader=new FileReader(); reader.onload=function(){ var dataUrl=reader.result; var base64=dataUrl.split(',')[1]; var ext=file.name.split('.').pop().toLowerCase()||(isVid?'mp4':'jpg'); var mimeType=file.type||(isVid?'video/mp4':'image/jpeg'); var dir=isVid?'media':'images'; var path=dir+'/cms-upload-'+(++hmcmsUploadCount)+'.'+ext; hmcmsUploadedImages.push({path:path,data:base64,mimeType:mimeType}); var urlInput=document.getElementById('hmcmsNewImgUrl'+idx); if(urlInput)urlInput.value=path; var typeInput=document.getElementById('hmcmsNewMediaType'+idx); if(typeInput)typeInput.value=isVid?'video':'image'; if(isVid){ var vp=document.getElementById('hmcmsNewVidPreview'+idx); if(vp){vp.src=dataUrl;vp.style.display='block'} var ip=document.getElementById('hmcmsNewImgPreview'+idx); if(ip)ip.style.display='none'; }else{ var preview=document.getElementById('hmcmsNewImgPreview'+idx); if(preview){preview.src=dataUrl;preview.style.display='block'} var vp2=document.getElementById('hmcmsNewVidPreview'+idx); if(vp2)vp2.style.display='none'; } }; reader.readAsDataURL(file); }; window.hmcmsCloseEdit=function(){ document.getElementById('hmcmsEditModal').classList.remove('active'); hmcmsCurrentEdit=null;hmcmsNewImgCount=0; }; window.hmcmsSaveEdit=function(){ if(!hmcmsCurrentEdit)return; var section=hmcmsSections.find(function(s){return s.id===hmcmsCurrentEdit}); if(!section)return; var hi=document.getElementById('hmcmsEditHeading'); if(hi){var h=section.el.querySelector('h1,h2,h3,h4,h5,h6');if(h)h.textContent=hi.value} var paras=section.el.querySelectorAll('p'); paras.forEach(function(p,i){var inp=document.getElementById('hmcmsEditPara'+i);if(inp)p.textContent=inp.value}); var imgs=section.el.querySelectorAll('img'); imgs.forEach(function(img,i){ var si=document.getElementById('hmcmsEditImg'+i); var ai=document.getElementById('hmcmsEditImgAlt'+i); if(si){ var newSrc=si.value; var mediaType=si.getAttribute('data-media-type'); var up=hmcmsUploadedImages.find(function(u){return u.path===newSrc}); if(up&&hmcmsIsVideo(up.mimeType)){ var vid=document.createElement('video');vid.controls=true;vid.autoplay=false;vid.style.cssText=img.style.cssText||'width:100%;max-width:600px;border-radius:8px;margin:12px auto;display:block'; var vsrc=document.createElement('source');vsrc.src='data:'+up.mimeType+';base64,'+up.data;vsrc.type=up.mimeType; vid.appendChild(vsrc);vid.setAttribute('data-cms-upload-path',newSrc); img.parentNode.replaceChild(vid,img); }else if(up){ img.src='data:'+up.mimeType+';base64,'+up.data; img.setAttribute('data-cms-upload-path',newSrc); }else{ img.src=newSrc; img.removeAttribute('data-cms-upload-path'); } } if(ai)img.alt=ai.value; }); var vids=section.el.querySelectorAll('video'); vids.forEach(function(vid,i){ var vi=document.getElementById('hmcmsEditVid'+i); if(vi){ var newSrc=vi.value; var up=hmcmsUploadedImages.find(function(u){return u.path===newSrc}); if(up){ var s=vid.querySelector('source'); if(s){s.src='data:'+up.mimeType+';base64,'+up.data;s.type=up.mimeType}else{vid.src='data:'+up.mimeType+';base64,'+up.data} vid.setAttribute('data-cms-upload-path',newSrc);vid.load(); }else if(newSrc){ var s2=vid.querySelector('source');if(s2){s2.src=newSrc}else{vid.src=newSrc} vid.removeAttribute('data-cms-upload-path');vid.load(); } } }); for(var ni=0;ni'; }).join(''); } if(j.status==='done'){ clearInterval(poll); btn.textContent='發布成功!'; hmcmsModified.clear();hmcmsUploadedImages=[];hmcmsUploadCount=0;hmcmsRenderPanel(); setTimeout(function(){btn.textContent='發布更新';btn.disabled=true},3000); }else if(j.status==='error'){ clearInterval(poll); btn.textContent='發布失敗';btn.disabled=false; } }); },2000); }) .catch(function(e){ progress.innerHTML='
發布失敗:'+e.message+'
'; btn.textContent='發布更新';btn.disabled=false; }); }; if(document.readyState==='loading'){document.addEventListener('DOMContentLoaded',hmcmsInit)}else{hmcmsInit()} })(); '} }catch(_){} } return pump(); }); } return pump(); }) .catch(function(e){ if(e.name==='AbortError')return; loadingEl.style.display='none'; contentEl.style.display='block'; contentEl.innerHTML='
報告生成失敗:'+e.message+'
'; }); } window.hmReportDownloadPDF=function(){ var el=document.getElementById('hmReportContent'); if(!el||!el.innerHTML)return; var clone=el.cloneNode(true); clone.style.cssText='background:#fff;color:#222;padding:32px;font-size:14px;line-height:1.7'; clone.querySelectorAll('h2').forEach(function(h){h.style.cssText='color:#1a3a6e;font-size:20px;margin:24px 0 12px;padding-bottom:6px;border-bottom:2px solid #1a3a6e'}); clone.querySelectorAll('h3').forEach(function(h){h.style.cssText='color:#2d5a9e;font-size:16px;margin:16px 0 8px'}); clone.querySelectorAll('table').forEach(function(t){t.style.cssText='width:100%;border-collapse:collapse;margin:12px 0;font-size:12px'}); clone.querySelectorAll('th').forEach(function(h){h.style.cssText='background:#e8edf5;color:#1a3a6e;padding:8px 10px;text-align:left;border:1px solid #ccc;font-weight:600'}); clone.querySelectorAll('td').forEach(function(d){d.style.cssText='padding:8px 10px;border:1px solid #ddd;color:#333'}); clone.querySelectorAll('strong').forEach(function(s){s.style.color='#1a1a2e'}); clone.querySelectorAll('li,p').forEach(function(p){p.style.color='#333'}); var wrapper=document.createElement('div'); wrapper.appendChild(clone); document.body.appendChild(wrapper); html2pdf().set({ margin:[10,10,10,10], filename:(document.title||'report')+'-analysis.pdf', image:{type:'jpeg',quality:.95}, html2canvas:{scale:2,useCORS:true}, jsPDF:{unit:'mm',format:'a4',orientation:'portrait'}, pagebreak:{mode:['avoid-all','css','legacy']} }).from(clone).save().then(function(){document.body.removeChild(wrapper)}).catch(function(){document.body.removeChild(wrapper)}); }; })();
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...

管理員登入

管理員管理

新增管理員

版面設定

🎨 色彩配置
✏️ 內容編輯

編輯區塊

AI 助手

📈 流量分析

📱 社群媒體發布

📘
Facebook
載入中...
📷
Instagram
載入中...
🧵
Threads
載入中...

撰寫貼文

發文紀錄

尚無發文紀錄
💬

💬 對話機器人管理

知識庫文件管理
📁

拖放檔案到此處,或點擊上傳

支援 .txt .csv .md .pdf .doc .docx .json

已上傳檔案
載入中...
常見問答 (FAQ)
產品資訊
定價資訊
聯繫資訊
自訂 Prompt
RAG 工作流程說明
1

文件上傳與解析

上傳 PDF、TXT、DOC 等文件後,系統自動解析文件內容,提取純文字。

2

文本分塊處理

將文件內容切割為約 500 字元的文本塊,相鄰塊之間有 100 字元重疊,確保語意完整。

3

關鍵字比對檢索

用戶提問時,系統自動從所有文本塊中檢索最相關的 Top 5 片段,作為回答的參考依據。

4

AI 回答生成

結合知識庫設定(FAQ、產品資訊)與 RAG 檢索到的上下文,由 AI 生成準確且相關的回答。

💡 提示

上傳越多相關文件,AI 的回答品質越好。建議上傳產品手冊、FAQ 文件、服務條款等文件來豐富知識庫。

對話紀錄
載入中...