All checks were successful
Monorepo Pipeline / ⚡ Prioritize Release (push) Successful in 6s
Monorepo Pipeline / 🧪 Test (push) Successful in 56s
Monorepo Pipeline / 🧹 Lint (push) Successful in 2m22s
Monorepo Pipeline / 🏗️ Build (push) Successful in 3m51s
Monorepo Pipeline / 🚀 Release (push) Has been skipped
Monorepo Pipeline / 🐳 Build Directus (Base) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Gatekeeper (Product) (push) Has been skipped
Monorepo Pipeline / 🐳 Build Build-Base (push) Has been skipped
Monorepo Pipeline / 🐳 Build Production Runtime (push) Has been skipped
Summary of changes: - Corrected Directus extensions to use 'vue-router' for 'useRouter' instead of '@directus/extensions-sdk' (Fixed runtime crash). - Standardized extension folder structure and moved built extensions to the root 'directus/extensions' directory. - Updated 'scripts/sync-extensions.sh' and 'scripts/validate-extensions.sh' for better extension management. - Added 'scripts/validate-sdk-imports.sh' as a safeguard against future invalid SDK imports. - Integrated import validation into the '.husky/pre-push' hook. - Standardized Docker restart policies and network configurations in 'cms-infra/docker-compose.yml'. - Updated tracked 'data.db' with the correct 'module_bar' settings to ensure extension visibility. - Cleaned up legacy files and consolidated extension package source code. This commit captures the full state of the repository after resolving the 'missing extensions' issue.
2 lines
15 KiB
JavaScript
2 lines
15 KiB
JavaScript
import{useApi as e,defineModule as a}from"@directus/extensions-sdk";import{defineComponent as t,ref as l,computed as n,onMounted as i,resolveComponent as s,resolveDirective as o,openBlock as r,createBlock as u,withCtx as d,createVNode as c,createElementBlock as v,Fragment as p,renderList as m,createTextVNode as f,toDisplayString as g,createCommentVNode as b,createElementVNode as y,withDirectives as h}from"vue";var _=Object.defineProperty,x=Object.getOwnPropertySymbols,w=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,V=(e,a,t)=>a in e?_(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t;const A={class:"content-wrapper"},$={key:0,class:"empty-state"},C={class:"header"},F={class:"header-left"},U={class:"title"},O={class:"subtitle"},j=["href"],P={class:"header-right"},E={class:"sections"},L={class:"main-info"},S={class:"form-grid"},z={class:"field"},B={key:1,class:"value text-subdued"},N={class:"field"},q={class:"value"},D={class:"field full"},M={class:"value text-block"},I={key:0,class:"ai-observations"},T={class:"metrics"},K={class:"page-title"},G={class:"page-url"},R={class:"drawer-content"},W={class:"form-section"},H={class:"field"},Z={class:"field"},J={class:"field"},Q={class:"field"},X={class:"field"},Y={class:"field"},ee={class:"field"},ae={class:"drawer-actions"};var te=t({__name:"module",setup(a){const t=e(),_=l([]),te=l(null),le=l(!1),ne=l(!1),ie=l(!1),se=l(!1),oe=l(!1),re=l(null),ue=l({company_name:"",company:null,website_url:"",contact_name:"",contact_email:"",contact_person:null,briefing:"",status:"new"}),de=l([]),ce=l([]),ve=n(()=>de.value.map(e=>({text:e.name,value:e.id}))),pe=n(()=>ce.value.map(e=>({text:`${e.first_name} ${e.last_name}`,value:e.id})));function me(e){var a;return e.company?"object"==typeof e.company?e.company.name:(null==(a=de.value.find(a=>a.id===e.company))?void 0:a.name)||e.company_name:e.company_name}function fe(e){if(!e)return"";if("object"==typeof e)return`${e.first_name} ${e.last_name}`;const a=ce.value.find(a=>a.id===e);return a?`${a.first_name} ${a.last_name}`:e}const ge=n(()=>_.value.find(e=>e.id===te.value));async function be(){const[e,a,l]=await Promise.all([t.get("/items/leads",{params:{sort:"-date_created",fields:"*.*"}}),t.get("/items/people",{params:{sort:"last_name"}}),t.get("/items/companies",{params:{sort:"name"}})]);_.value=e.data.data,ce.value=a.data.data,de.value=l.data.data,!te.value&&_.value.length>0&&(te.value=_.value[0].id)}async function ye(){await be()}async function he(){if(te.value){le.value=!0;try{await t.post(`/acquisition/audit/${te.value}`),re.value={type:"success",message:"Audit erfolgreich gestartet!"},await ye()}catch(e){re.value={type:"danger",message:`Fehler beim Audit: ${e.message}`}}finally{le.value=!1}}}async function _e(){if(te.value){ie.value=!0;try{await t.post(`/acquisition/audit-email/${te.value}`),re.value={type:"success",message:"Audit E-Mail versendet!"},await ye()}catch(e){re.value={type:"danger",message:`Fehler beim Versenden: ${e.message}`}}finally{ie.value=!1}}}async function xe(){if(te.value){ne.value=!0;try{await t.post(`/acquisition/estimate/${te.value}`),re.value={type:"success",message:"Angebot (PDF) wurde generiert!"},await ye()}catch(e){re.value={type:"danger",message:`Fehler bei PDF Generierung: ${e.message}`}}finally{ne.value=!1}}}async function we(){if(te.value){ie.value=!0;try{await t.post(`/acquisition/estimate-email/${te.value}`),re.value={type:"success",message:"Angebot erfolgreich versendet!"},await ye()}catch(e){re.value={type:"danger",message:`Fehler beim Versenden: ${e.message}`}}finally{ie.value=!1}}}function ke(){var e;(null==(e=ge.value)?void 0:e.audit_pdf_path)&&window.open(`${window.location.origin}/assets/${ge.value.audit_pdf_path}`,"_blank")}async function Ve(){if(ue.value.company_name||ue.value.company){oe.value=!0;try{const e=((e,a)=>{for(var t in a||(a={}))w.call(a,t)&&V(e,t,a[t]);if(x)for(var t of x(a))k.call(a,t)&&V(e,t,a[t]);return e})({id:crypto.randomUUID()},ue.value);await t.post("/items/leads",e),re.value={type:"success",message:"Lead erfolgreich registriert!"},se.value=!1,await ye(),te.value=e.id,ue.value={company_name:"",company:null,website_url:"",contact_name:"",contact_email:"",contact_person:null,briefing:"",status:"new"}}catch(e){re.value={type:"danger",message:`Fehler beim Speichern: ${e.message}`}}finally{oe.value=!1}}else re.value={type:"danger",message:"Firma oder Firmenname erforderlich."}}function Ae(e){switch(e){case"new":return"fiber_new";case"auditing":return"hourglass_empty";case"audit_ready":return"check_circle";case"contacted":return"mail_outline";default:return"help_outline"}}function $e(e){switch(e){case"new":return"var(--theme--primary)";case"auditing":return"var(--theme--warning)";case"audit_ready":return"var(--theme--success)";case"contacted":return"var(--theme--secondary)";default:return"var(--theme--foreground-subdued)"}}return i(be),(e,a)=>{const t=s("v-icon"),l=s("v-list-item-icon"),n=s("v-text-overflow"),i=s("v-list-item-content"),x=s("v-list-item"),w=s("v-divider"),k=s("v-list"),V=s("v-notice"),de=s("v-button"),ce=s("v-info"),be=s("v-table"),ye=s("v-select"),Ce=s("v-input"),Fe=s("v-textarea"),Ue=s("v-drawer"),Oe=s("private-view"),je=o("tooltip");return r(),u(Oe,{title:"Acquisition Manager"},{navigation:d(()=>[c(k,{nav:""},{default:d(()=>[c(x,{onClick:a[0]||(a[0]=e=>se.value=!0),clickable:""},{default:d(()=>[c(l,null,{default:d(()=>[c(t,{name:"add",color:"var(--theme--primary)"})]),_:1}),c(i,null,{default:d(()=>[c(n,{text:"Neuen Lead anlegen"})]),_:1})]),_:1}),c(w),(r(!0),v(p,null,m(_.value,e=>(r(),u(x,{key:e.id,active:te.value===e.id,class:"lead-item",clickable:"",onClick:a=>{return t=e.id,void(te.value=t);var t}},{default:d(()=>[c(l,null,{default:d(()=>[c(t,{name:Ae(e.status),color:$e(e.status)},null,8,["name","color"])]),_:2},1024),c(i,null,{default:d(()=>[c(n,{text:me(e)},null,8,["text"])]),_:2},1024)]),_:2},1032,["active","onClick"]))),128))]),_:1})]),"title-outer:after":d(()=>[re.value?(r(),u(V,{key:0,type:re.value.type,onClose:a[1]||(a[1]=e=>re.value=null),dismissible:""},{default:d(()=>[f(g(re.value.message),1)]),_:1},8,["type"])):b("v-if",!0)]),default:d(()=>{var e;return[y("div",A,[c(V,{type:"success",style:{"margin-bottom":"16px"}},{default:d(()=>[f(" DEBUG: Module Version 1.1.0 - Native Build - "+g((new Date).toISOString()),1)]),_:1}),ge.value?(r(),v(p,{key:1},[y("header",C,[y("div",F,[y("h1",U,g(me(ge.value)),1),y("p",O,[c(t,{name:"language","x-small":""}),y("a",{href:ge.value.website_url,target:"_blank",class:"url-link"},g(ge.value.website_url.replace(/^https?:\/\//,"")),9,j),f(" · Status: "+g(ge.value.status.toUpperCase()),1)])]),y("div",P,["new"===ge.value.status?(r(),u(de,{key:0,secondary:"",loading:le.value,onClick:he},{default:d(()=>[c(t,{name:"settings_suggest",left:""}),a[16]||(a[16]=f(" Audit starten ",-1))]),_:1},8,["loading"])):b("v-if",!0),"audit_ready"===ge.value.status?(r(),v(p,{key:1},[c(de,{secondary:"",loading:ie.value,onClick:_e},{default:d(()=>[c(t,{name:"mail",left:""}),a[17]||(a[17]=f(" Audit E-Mail ",-1))]),_:1},8,["loading"]),c(de,{loading:ne.value,onClick:xe},{default:d(()=>[c(t,{name:"picture_as_pdf",left:""}),a[18]||(a[18]=f(" PDF Erstellen ",-1))]),_:1},8,["loading"])],64)):b("v-if",!0),ge.value.audit_pdf_path?h((r(),u(de,{key:2,secondary:"",icon:"",onClick:ke},{default:d(()=>[c(t,{name:"open_in_new"})]),_:1})),[[je,"PDF öffnen",void 0,{bottom:!0}]]):b("v-if",!0),ge.value.audit_pdf_path?(r(),u(de,{key:3,primary:"",loading:ie.value,onClick:we},{default:d(()=>[c(t,{name:"send",left:""}),a[19]||(a[19]=f(" Angebot senden ",-1))]),_:1},8,["loading"])):b("v-if",!0)])]),y("div",E,[y("div",L,[y("div",S,[y("div",z,[a[20]||(a[20]=y("span",{class:"label"},"Kontaktperson",-1)),ge.value.contact_person?(r(),v("div",{key:0,class:"value person-link",onClick:a[3]||(a[3]=e=>{return a=ge.value.contact_person,void(re.value={type:"info",message:`Navigiere zu Person: ${a}`});var a})},g(fe(ge.value.contact_person)),1)):(r(),v("div",B,"Keine Person verknüpft"))]),y("div",N,[a[21]||(a[21]=y("span",{class:"label"},"E-Mail (Legacy)",-1)),y("div",q,g(ge.value.contact_email||"—"),1)]),y("div",D,[a[22]||(a[22]=y("span",{class:"label"},"Briefing / Fokus",-1)),y("div",M,g(ge.value.briefing||"Kein Briefing hinterlegt."),1)])])]),c(w),ge.value.ai_state?(r(),v("div",I,[a[23]||(a[23]=y("h3",{class:"section-title"},"AI Observations & Estimation",-1)),y("div",T,[c(ce,{label:"Projekt-Modus",value:ge.value.ai_state.projectType||"Unbekannt"},null,8,["value"]),c(ce,{label:"Seitenanzahl",value:(null==(e=ge.value.ai_state.sitemap)?void 0:e.length)||"0"},null,8,["value"])]),ge.value.ai_state.sitemap?(r(),u(be,{key:0,headers:[{text:"Seite",value:"title"},{text:"URL",value:"url"}],items:ge.value.ai_state.sitemap,class:"observation-table"},{"item.title":d(({item:e})=>[y("span",K,g(e.title),1)]),"item.url":d(({item:e})=>[y("span",G,g(e.url),1)]),_:2},1032,["items"])):b("v-if",!0)])):b("v-if",!0)])],64)):(r(),v("div",$,[c(ce,{title:"Lead auswählen",icon:"auto_awesome",center:""},{default:d(()=>[a[14]||(a[14]=f(" Wähle einen Lead in der Navigation aus oder ",-1)),c(de,{"x-small":"",onClick:a[2]||(a[2]=e=>se.value=!0)},{default:d(()=>[...a[13]||(a[13]=[f("registriere einen neuen Lead",-1)])]),_:1}),a[15]||(a[15]=f(". ",-1))]),_:1})]))]),c(Ue,{modelValue:se.value,"onUpdate:modelValue":a[11]||(a[11]=e=>se.value=e),title:"Neuen Lead registrieren",icon:"person_add",onCancel:a[12]||(a[12]=e=>se.value=!1)},{default:d(()=>[y("div",R,[y("div",W,[y("div",H,[a[24]||(a[24]=y("span",{class:"label"},"Organisation / Firma (Zentral)",-1)),c(ye,{modelValue:ue.value.company,"onUpdate:modelValue":a[4]||(a[4]=e=>ue.value.company=e),items:ve.value,placeholder:"Bestehende Firma auswählen..."},null,8,["modelValue","items"])]),y("div",Z,[a[25]||(a[25]=y("span",{class:"label"},"Organisation / Firma (Legacy / Neu)",-1)),c(Ce,{modelValue:ue.value.company_name,"onUpdate:modelValue":a[5]||(a[5]=e=>ue.value.company_name=e),placeholder:"z.B. Schmidt GmbH",autofocus:""},null,8,["modelValue"])]),y("div",J,[a[26]||(a[26]=y("span",{class:"label"},"Website URL",-1)),c(Ce,{modelValue:ue.value.website_url,"onUpdate:modelValue":a[6]||(a[6]=e=>ue.value.website_url=e),placeholder:"https://..."},null,8,["modelValue"])]),y("div",Q,[a[27]||(a[27]=y("span",{class:"label"},"Ansprechpartner",-1)),c(Ce,{modelValue:ue.value.contact_name,"onUpdate:modelValue":a[7]||(a[7]=e=>ue.value.contact_name=e),placeholder:"Vorname Nachname"},null,8,["modelValue"])]),y("div",X,[a[28]||(a[28]=y("span",{class:"label"},"E-Mail Adresse",-1)),c(Ce,{modelValue:ue.value.contact_email,"onUpdate:modelValue":a[8]||(a[8]=e=>ue.value.contact_email=e),placeholder:"email@beispiel.de",type:"email"},null,8,["modelValue"])]),y("div",Y,[a[29]||(a[29]=y("span",{class:"label"},"Briefing / Fokus",-1)),c(Fe,{modelValue:ue.value.briefing,"onUpdate:modelValue":a[9]||(a[9]=e=>ue.value.briefing=e),placeholder:"Besonderheiten für das Audit..."},null,8,["modelValue"])]),y("div",ee,[a[30]||(a[30]=y("span",{class:"label"},"Kontaktperson (Optional)",-1)),c(ye,{modelValue:ue.value.contact_person,"onUpdate:modelValue":a[10]||(a[10]=e=>ue.value.contact_person=e),items:pe.value,placeholder:"Person auswählen..."},null,8,["modelValue","items"])])]),y("div",ae,[c(de,{primary:"",block:"",loading:oe.value,onClick:Ve},{default:d(()=>[...a[31]||(a[31]=[f("Lead speichern",-1)])]),_:1},8,["loading"])])])]),_:1},8,["modelValue"])]}),_:1})}}}),le=[],ne=[];!function(e,a){if(e&&"undefined"!=typeof document){var t,l=!0===a.prepend?"prepend":"append",n=!0===a.singleTag,i="string"==typeof a.container?document.querySelector(a.container):document.getElementsByTagName("head")[0];if(n){var s=le.indexOf(i);-1===s&&(s=le.push(i)-1,ne[s]={}),t=ne[s]&&ne[s][l]?ne[s][l]:ne[s][l]=o()}else t=o();65279===e.charCodeAt(0)&&(e=e.substring(1)),t.styleSheet?t.styleSheet.cssText+=e:t.appendChild(document.createTextNode(e))}function o(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),a.attributes)for(var t=Object.keys(a.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],a.attributes[t[n]]);var s="prepend"===l?"afterbegin":"beforeend";return i.insertAdjacentElement(s,e),e}}("\n.content-wrapper[data-v-c729ebea] { padding: 32px; height: 100%; display: flex; flex-direction: column; overflow-y: auto;\n}\n.lead-item[data-v-c729ebea] { cursor: pointer;\n}\n.header[data-v-c729ebea] { margin-bottom: 24px; display: flex; justify-content: space-between; align-items: flex-end;\n}\n.header-right[data-v-c729ebea] { display: flex; gap: 12px;\n}\n.title[data-v-c729ebea] { font-size: 24px; font-weight: 800; margin-bottom: 4px; color: var(--theme--foreground);\n}\n.subtitle[data-v-c729ebea] { color: var(--theme--foreground-subdued); font-size: 14px; display: flex; align-items: center; gap: 8px;\n}\n.url-link[data-v-c729ebea] { color: inherit; text-decoration: none; border-bottom: 1px solid transparent;\n}\n.url-link[data-v-c729ebea]:hover { border-bottom-color: currentColor;\n}\n.empty-state[data-v-c729ebea] { height: 100%; display: flex; align-items: center; justify-content: center;\n}\n.sections[data-v-c729ebea] { display: flex; flex-direction: column; gap: 32px;\n}\n.form-grid[data-v-c729ebea] { display: grid; grid-template-columns: 1fr 1fr; gap: 24px;\n}\n.field[data-v-c729ebea] { display: flex; flex-direction: column; gap: 8px;\n}\n.field.full[data-v-c729ebea] { grid-column: span 2;\n}\n.label[data-v-c729ebea] { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--theme--foreground-subdued); letter-spacing: 0.5px;\n}\n.value[data-v-c729ebea] { font-size: 15px; color: var(--theme--foreground);\n}\n.text-block[data-v-c729ebea] { line-height: 1.6; white-space: pre-wrap; background: var(--theme--background-subdued); padding: 16px; border-radius: 8px;\n}\n.ai-observations[data-v-c729ebea] { display: flex; flex-direction: column; gap: 16px;\n}\n.section-title[data-v-c729ebea] { font-size: 16px; font-weight: 700; color: var(--theme--foreground); margin-bottom: 8px;\n}\n.metrics[data-v-c729ebea] { display: flex; gap: 32px; margin-bottom: 16px;\n}\n.observation-table[data-v-c729ebea] { border: 1px solid var(--theme--border); border-radius: 8px; overflow: hidden;\n}\n.page-title[data-v-c729ebea] { font-weight: 600;\n}\n.page-url[data-v-c729ebea] { font-family: var(--family-monospace); font-size: 12px; color: var(--theme--foreground-subdued);\n}\n.drawer-content[data-v-c729ebea] { padding: 24px; display: flex; flex-direction: column; gap: 32px;\n}\n.form-section[data-v-c729ebea] { display: flex; flex-direction: column; gap: 20px;\n}\n.drawer-actions[data-v-c729ebea] { margin-top: 24px; display: flex; flex-direction: column; gap: 12px;\n}\n[data-v-c729ebea] .v-list-item { cursor: pointer !important;\n}\n",{});var ie=((e,a)=>{const t=e.__vccOpts||e;for(const[e,l]of a)t[e]=l;return t})(te,[["__scopeId","data-v-c729ebea"],["__file","module.vue"]]),se=a({id:"acquisition-manager",name:"Acquisition",icon:"auto_awesome",routes:[{path:"",component:ie},{path:":id",component:ie,props:!0}]});export{se as default};
|