test de déploiement du build depuis gitlab
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

4 lines
23 KiB

import{o as e,r as t}from"./chunk-jRWAZmH_.js";import{n,t as r}from"./jsx-runtime-CEixWuwE.js";import{Dt as i,Mn as a,Nn as o,S as s,St as c,Y as l,cr as u,n as d,t as f}from"./axios-DOscJEDN.js";import{i as p}from"./notification-BkpaB2Vc.js";import{t as m}from"./button-BMyidN73.js";import{t as h}from"./tooltip-3rewahde.js";import{t as g}from"./space-uFVW-ksd.js";import{t as _}from"./modal-BdqOHno9.js";import{t as v}from"./input-Yn95s9T0.js";import{t as ee}from"./spin-CBBM6dvl.js";import{c as y}from"./chunk-62JRHF6Z-Dyzu9RRG.js";import{t as b}from"./useMutation-DqBabLvU.js";import{t as x}from"./queryOptions-_qrchnQm.js";import{t as te}from"./MessageOutlined-DbxNuxex.js";import{t as S}from"./slugify-C1iW7uj6.js";import{t as C}from"./menu.queries-Bx1BXeuM.js";import{R as ne,U as w,W as re,_t as T,at as E,ct as D,ot as ie,ut as O,y as k}from"./index-V8IueDFv.js";var ae={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M899.1 869.6l-53-305.6H864c14.4 0 26-11.6 26-26V346c0-14.4-11.6-26-26-26H618V138c0-14.4-11.6-26-26-26H432c-14.4 0-26 11.6-26 26v182H160c-14.4 0-26 11.6-26 26v192c0 14.4 11.6 26 26 26h17.9l-53 305.6a25.95 25.95 0 0025.6 30.4h723c1.5 0 3-.1 4.4-.4a25.88 25.88 0 0021.2-30zM204 390h272V182h72v208h272v104H204V390zm468 440V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H416V674c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v156H202.8l45.1-260H776l45.1 260H672z`}}]},name:`clear`,theme:`outlined`};o();var A=e(n()),oe=A.forwardRef(function(e,t){return A.createElement(i,a(a({},e),{},{ref:t,icon:ae}))}),se={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 00-26.5-5.4H273v428h.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM112 132v364c0 17.7 14.3 32 32 32h65V100h-65c-17.7 0-32 14.3-32 32z`}}]},name:`dislike`,theme:`filled`};o();var ce=A.forwardRef(function(e,t){return A.createElement(i,a(a({},e),{},{ref:t,icon:se}))}),le={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M885.9 490.3c3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-28.3-9.3-55.5-26.1-77.7 3.6-12 5.4-24.4 5.4-37 0-51.6-30.7-98.1-78.3-118.4a66.1 66.1 0 00-26.5-5.4H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h129.3l85.8 310.8C372.9 889 418.9 924 470.9 924c29.7 0 57.4-11.8 77.9-33.4 20.5-21.5 31-49.7 29.5-79.4l-6-122.9h239.9c12.1 0 23.9-3.2 34.3-9.3 40.4-23.5 65.5-66.1 65.5-111 0-28.3-9.3-55.5-26.1-77.7zM184 456V172h81v284h-81zm627.2 160.4H496.8l9.6 198.4c.6 11.9-4.7 23.1-14.6 30.5-6.1 4.5-13.6 6.8-21.1 6.7a44.28 44.28 0 01-42.2-32.3L329 459.2V172h415.4a56.85 56.85 0 0133.6 51.8c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0119.6 43c0 9.7-2.3 18.9-6.9 27.3l-13.9 25.4 21.9 19a56.76 56.76 0 0119.6 43c0 9.7-2.3 18.9-6.9 27.3l-14 25.5 21.9 19a56.76 56.76 0 0119.6 43c0 19.1-11 37.5-28.8 48.4z`}}]},name:`dislike`,theme:`outlined`};o();var ue=A.forwardRef(function(e,t){return A.createElement(i,a(a({},e),{},{ref:t,icon:le}))}),de={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311h-.3v428h472.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM112 528v364c0 17.7 14.3 32 32 32h65V496h-65c-17.7 0-32 14.3-32 32z`}}]},name:`like`,theme:`filled`};o();var fe=A.forwardRef(function(e,t){return A.createElement(i,a(a({},e),{},{ref:t,icon:de}))}),pe={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M885.9 533.7c16.8-22.2 26.1-49.4 26.1-77.7 0-44.9-25.1-87.4-65.5-111.1a67.67 67.67 0 00-34.3-9.3H572.4l6-122.9c1.4-29.7-9.1-57.9-29.5-79.4A106.62 106.62 0 00471 99.9c-52 0-98 35-111.8 85.1l-85.9 311H144c-17.7 0-32 14.3-32 32v364c0 17.7 14.3 32 32 32h601.3c9.2 0 18.2-1.8 26.5-5.4 47.6-20.3 78.3-66.8 78.3-118.4 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7 0-12.6-1.8-25-5.4-37 16.8-22.2 26.1-49.4 26.1-77.7-.2-12.6-2-25.1-5.6-37.1zM184 852V568h81v284h-81zm636.4-353l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 16.5-7.2 32.2-19.6 43l-21.9 19 13.9 25.4a56.2 56.2 0 016.9 27.3c0 22.4-13.2 42.6-33.6 51.8H329V564.8l99.5-360.5a44.1 44.1 0 0142.2-32.3c7.6 0 15.1 2.2 21.1 6.7 9.9 7.4 15.2 18.6 14.6 30.5l-9.6 198.4h314.4C829 418.5 840 436.9 840 456c0 16.5-7.2 32.1-19.6 43z`}}]},name:`like`,theme:`outlined`};o();var me=A.forwardRef(function(e,t){return A.createElement(i,a(a({},e),{},{ref:t,icon:pe}))}),he={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M931.4 498.9L94.9 79.5c-3.4-1.7-7.3-2.1-11-1.2a15.99 15.99 0 00-11.7 19.3l86.2 352.2c1.3 5.3 5.2 9.6 10.4 11.3l147.7 50.7-147.6 50.7c-5.2 1.8-9.1 6-10.3 11.3L72.2 926.5c-.9 3.7-.5 7.6 1.2 10.9 3.9 7.9 13.5 11.1 21.5 7.2l836.5-417c3.1-1.5 5.6-4.1 7.2-7.1 3.9-8 .7-17.6-7.2-21.6zM170.8 826.3l50.3-205.6 295.2-101.3c2.3-.8 4.2-2.6 5-5 1.4-4.2-.8-8.7-5-10.2L221.1 403 171 198.2l628 314.9-628.2 313.2z`}}]},name:`send`,theme:`outlined`};o();var ge=A.forwardRef(function(e,t){return A.createElement(i,a(a({},e),{},{ref:t,icon:he}))}),_e=t({checkHealth:()=>ve,sendMessage:()=>ye}),j=f.create({baseURL:k.edge.url,timeout:k.edge.timeout}),ve=async()=>{try{return await j.get(`/`),!0}catch{return!1}},ye=async e=>(await j.post(`/api/chat`,{model:k.edge.model,messages:e,stream:!1})).data.message,M=f.create({withCredentials:!0,headers:{"Content-Type":`application/json`}}),N=e=>`${u()}modules/copilote/php/${e}`,P=async()=>{let e=await M.get(`${N(`iCTI_copiloteProxy.php`)}?action=health`);if(typeof e.data!=`object`||e.data===null)throw Error(`Réponse illisible du relais copilote`);return{configured:e.data.configured===!0,isSecureConnection:e.data.isSecureConnection===!0}},be=async({code:e,key:t})=>{try{return(await M.post(N(`iCTI_copiloteConfig.php`),{code:e,key:t})).data}catch(e){let t=e.response?.data?.error;throw t?Error(t):e}},xe=t({checkHealth:()=>Te,sendMessage:()=>Ee}),Se=e=>{let t=Object.values(e??{});if(t.length!==0)return{tokens_in:t.reduce((e,t)=>e+(t.input_tokens??0),0),tokens_out:t.reduce((e,t)=>e+(t.output_tokens??0),0),cost_usd:t.reduce((e,t)=>e+(t.cost_usd??0),0)}},Ce=f.create({timeout:k.api.timeout,withCredentials:!0,headers:{"Content-Type":`application/json`}}),we=()=>`${N(`iCTI_copiloteProxy.php`)}?action=query`,Te=async()=>{let{configured:e}=await P();return e},Ee=async e=>{let t=e[e.length-1],n=e.slice(0,-1),r;try{r=await Ce.post(we(),{messages:[t],chat_history:n,options:{temperature:.1,useReasoning:!1,enableFocusMode:!0,includeSources:!1,includeUsageMetadata:!0}})}catch(e){let t=e.response?.data?.error;throw t?Error(t):e}if(r.data.status===`error`)throw Error(r.data.error||`Erreur MatchaAI`);let i=r.data.output,a=i?.find(e=>e.role===`assistant`)||i?.[0],o;return o=typeof a?.content==`string`?a.content:Array.isArray(a?.content)?a.content.map(e=>e.text||e.content||``).join(``):`Pas de réponse du copilote.`,{role:`assistant`,content:o,usage:Se(r.data.usage_metadata)}},De=/\b\d{6,12}\b/,Oe=/\b[12]\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{3}\s?\d{3}\s?\d{2}\b/,ke=/[A-ZÀÂÉÈÊËÎÏÔÙÛÜÇ][A-Za-zàâéèêëîïôùûüç]+(?:\s+[A-ZÀÂÉÈÊËÎÏÔÙÛÜÇ][A-Za-zàâéèêëîïôùûüç]+)+(?:\s+[a-zàâéèêëîïôùûüç]+){0,4}\s+\d{2}[\/\-]\d{2}[\/\-]\d{4}/,Ae=/(?:\+33[\s.-]?[1-9]|\b0[1-9])(?:[\s.-]?\d{2}){4}\b/,je=/\b[\w.+-]+@[\w-]+\.[\w.-]+\b/i,Me=/\b(?:BF|FAC|N°|No)[\s.-]?\d+\b/i,Ne=/\b(?:patient|né(?:e)?\s+le|date\s+de\s+naissance|dob|ipp|nip|nss|rpps|adeli|numéro\s+de\s+sécurité)/i,Pe=[{name:`NSS`,re:Oe},{name:`IPP/NIP`,re:De},{name:`NOM+DATE`,re:ke},{name:`PHONE`,re:Ae},{name:`EMAIL`,re:je},{name:`INVOICE_NUM`,re:Me}];function Fe(e){if(!e||typeof e!=`string`)return{hasPii:!1,matches:[]};let t=[];for(let{name:n,re:r}of Pe)r.test(e)&&t.push(n);return!t.includes(`NOM+DATE`)&&Ne.test(e)&&t.push(`KEYWORD_SENSIBLE`),{hasPii:t.length>0,matches:t}}var F={role:`assistant`,isLocalOnly:!0,content:`Votre message semble contenir des données personnelles (identifiant patient, numéro de sécurité sociale, téléphone, email, numéro de facture ou nom associé à une date). IRIS ne peut pas traiter ces informations. Reformulez votre question sans données identifiantes.`,suggestions:[]},I=`iris_session_id`,L=`iris_events`,R=500;function Ie(){return Date.now().toString(36)+Math.random().toString(36).slice(2,7)}function z(){let e=sessionStorage.getItem(I);return e||(e=Ie(),sessionStorage.setItem(I,e)),e}function B(e){let t={ts:new Date().toISOString(),session:z(),...e};try{let e=localStorage.getItem(L),n=e?JSON.parse(e):[];n.push(t),n.length>R&&n.splice(0,n.length-R),localStorage.setItem(L,JSON.stringify(n))}catch{}}function Le(){try{return JSON.parse(localStorage.getItem(L)??`[]`)}catch{return[]}}function Re(){return`${u()}modules/outils/dashboard/iCTI_copiloteLog.php`}function ze(e){return e.type===`error`?{ts:e.ts,session:e.session,type:`error`,has_error:!0}:e}async function V(){let e=Le();if(e.length===0)return;let t=e.map(ze);try{(await fetch(Re(),{method:`POST`,credentials:`include`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})).ok&&localStorage.removeItem(L)}catch{}}var Be=k.mode===`api`?xe:_e;k.mode;function Ve(e){let t=[],n=0;for(;n<e.length-1;)e[n].role===`user`&&e[n+1].role===`assistant`?(t.push(e[n],e[n+1]),n+=2):n+=1;return t}var He=/---\s*suggestions?\s*\n/i;function Ue(e){let t=e.search(He);return t===-1?{content:e,suggestions:[]}:{content:e.slice(0,t).trimEnd(),suggestions:e.slice(e.indexOf(`
`,t)+1).split(`
`).map(e=>e.replace(/^[-•*]\s*/,``).trim()).filter(e=>e.length>0)}}var We=async e=>{let t=e[e.length-1]?.content??``,{hasPii:n,matches:r}=Fe(t);if(n)return B({type:`pii_blocked`,pii_matches:r}),F;let i=e.filter(e=>!e.isLocalOnly),a=[...Ve(i.slice(0,-1)),...i.slice(-1)],o;try{o=await Be.sendMessage(a)}catch(e){throw B({type:`error`,error:e instanceof Error?e.message:String(e)}),e}let{content:s,suggestions:c}=Ue(o.content||``);return B({type:`message`,question:t.slice(0,500),response_chars:s.length,...o.usage}),{role:`assistant`,content:s,suggestions:c}},H=(e,t,n)=>Promise.resolve(),U={all:[`copilote`],health:()=>[...U.all,`health`]},Ge=()=>x({queryKey:U.health(),queryFn:P}),Ke=()=>d(Ge()),W=r(),G=`(?:ACTI|PMSI|RH|ECO|DPI|COMPTA|QUALITE)[A-Z]*\\d{6}`,qe=RegExp(`\\*{0,2}((?:[Ll]a |[Ll]e |[Ll]es? )?[Vv]ue\\s+)\\*{0,2}([\\wÀ-ÿ][\\wÀ-ÿ'']*\\.?(?:\\s+[\\wÀ-ÿ][\\wÀ-ÿ'']*\\.?){0,8})\\*{0,2}(?:\\s*\\*{1,2}[\\wÀ-ÿ][\\wÀ-ÿ'']*\\*{1,2})?\\s*\\(\\s*\\*{0,2}(${G})\\*{0,2}\\s*\\)\\*{0,2}|\\*{0,2}([A-ZÀ-Ü][\\wÀ-ÿ'']*\\.?(?:\\s+[\\wÀ-ÿ][\\wÀ-ÿ'']*\\.?){0,5}?)\\*{0,2}\\s*\\(\\s*\\*{0,2}(${G})\\*{0,2}\\s*\\)\\*{0,2}|\\*{0,2}\\(?\\s*\\*{0,2}(${G})\\*{0,2}\\s*\\)?\\*{0,2}`,`g`),K=`￰`,q=`￱`,Je=e=>e.replace(/\*\*(.+?)\*\*/g,`${K}$1${q}`).replace(/\*\*/g,``).split(K).join(`**`).split(q).join(`**`),J=(e,t)=>{let n=Je(e),r=/\*\*(.+?)\*\*/g,i=[],a=0,o;for(;(o=r.exec(n))!==null;)o.index>a&&i.push(n.slice(a,o.index)),i.push((0,W.jsx)(`strong`,{children:o[1]},`${t}-b-${o.index}`)),a=o.index+o[0].length;return a<n.length&&i.push(n.slice(a)),i},Y=(e,t,n)=>{let r=new RegExp(qe.source,`g`),i=[],a=0,o;for(;(o=r.exec(e))!==null;){o.index>a&&i.push(...J(e.slice(a,o.index),`${n}-${a}`));let r,s,c;o[2]&&o[3]?(c=o[1]||``,r=o[2],s=o[3]):o[4]&&o[5]?(r=o[4].replace(/^(?:La|Le|Les|Un|Une|Des|Du)\s+/i,``),s=o[5]):(r=o[6],s=o[6]),c&&i.push(c),i.push((0,W.jsx)(t,{viewCode:s,children:r},`${s}-${o.index}`)),a=o.index+o[0].length}return a<e.length&&i.push(...J(e.slice(a),`${n}-${a}`)),i},Ye=(e,t)=>{if(!e)return e;let n=e.split(`
`),r=[],i=[],a=()=>{i.length>0&&(r.push((0,W.jsx)(`ul`,{children:i},`ul-${r.length}`)),i=[])};return n.forEach((e,n)=>{let o=e.match(/^[-*]\s+(.*)/);if(o){let e=Y(o[1],t,`li-${n}`);i.push((0,W.jsx)(`li`,{children:e},`li-${n}`))}else a(),e.trim().length>0?(r.length>0&&r.push((0,W.jsx)(`br`,{},`br-${n}`)),r.push(...Y(e,t,`ln-${n}`))):r.length>0&&r.push((0,W.jsx)(`br`,{},`br-${n}`))}),a(),r.length>0?r:e},Xe=e(S()),Ze=e=>{let t={},n={},r=(e,i)=>{Object.values(e).forEach(e=>{let a=i+`/`+(0,Xe.default)(e.label,{lower:!0});e.children?r(e.children,a):e.name&&(t[e.name]=`/`+a+`/`+e.name,n[e.name]=e.label)})};return Object.entries(e).forEach(([e,t])=>{t.children&&r(t.children,e)}),{entries:t,labels:n}},Qe=({viewCode:e,children:t})=>{let n=y(),r=C().data??{},{entries:i,labels:a}=(0,A.useMemo)(()=>!r||Object.keys(r).length===0?{entries:{},labels:{}}:Ze(r),[r]),o=i[e],s=t===e?a[e]||e:t;return o?(0,W.jsx)(`a`,{className:`copilote-view-link`,href:o,onClick:t=>{t.preventDefault(),o&&(B({type:`view_click_from_copilote`,view_code:e,view_label:typeof s==`string`?s:e,view_url:o}),n(o))},children:s}):(0,W.jsx)(D,{className:`copilote-view-tag`,children:s})},$e=({role:e,content:t,suggestions:n,onSuggestionClick:r,messageId:i,isLocalOnly:a})=>{let o=e===`user`,[s,c]=(0,A.useState)(null),[l,u]=(0,A.useState)(!1),[d,f]=(0,A.useState)(``),p=e=>{let t=s===e?null:e;c(t),e===`down`&&t===`down`?u(!0):(H(i,t,null),B({type:`feedback`,messageId:i,vote:t}))};return(0,W.jsxs)(`div`,{className:`copilote-message copilote-message--${o?`user`:`assistant`}`+(o&&a?` copilote-message--blocked`:``),children:[(0,W.jsx)(`div`,{className:`copilote-message__bubble`,children:o?t:Ye(t,Qe)}),!o&&!a&&(0,W.jsxs)(`div`,{className:`copilote-feedback`,children:[(0,W.jsx)(`button`,{className:`copilote-feedback-btn${s===`up`?` copilote-feedback-btn--up-active`:``}`,onClick:()=>p(`up`),title:`Réponse utile`,children:s===`up`?(0,W.jsx)(fe,{}):(0,W.jsx)(me,{})}),(0,W.jsx)(`button`,{className:`copilote-feedback-btn${s===`down`?` copilote-feedback-btn--down-active`:``}`,onClick:()=>p(`down`),title:`Réponse non pertinente`,children:s===`down`?(0,W.jsx)(ce,{}):(0,W.jsx)(ue,{})})]}),n?.length>0&&(0,W.jsx)(`div`,{className:`copilote-suggestions`,children:n.map((e,t)=>(0,W.jsx)(`button`,{className:`copilote-suggestion-chip`,onClick:()=>r?.(e),children:e},t))}),(0,W.jsx)(_,{title:`Qu'est-ce qui n'allait pas ?`,open:l,onCancel:()=>{H(i,`down`,null),B({type:`feedback_negative`,messageId:i,verbatim:null}),u(!1)},okText:`Envoyer`,cancelText:`Passer`,onOk:()=>{let e=d.trim();H(i,`down`,e||null),B({type:`feedback_negative`,messageId:i,verbatim:e||null}),u(!1),f(``)},width:380,okButtonProps:{disabled:d.trim().length===0},children:(0,W.jsx)(v.TextArea,{value:d,onChange:e=>f(e.target.value),placeholder:`Décrivez le problème avec cette réponse (facultatif)...`,autoSize:{minRows:3,maxRows:6},autoFocus:!0,maxLength:500,showCount:!0})})]})};function et(){let e=s();return b({mutationFn:({code:e,key:t})=>be({code:e,key:t}),meta:{successMessage:`Clé du copilote enregistrée`,errorMessage:`Erreur lors de l'enregistrement de la clé`},onSettled:async()=>{await e.invalidateQueries({queryKey:U.health()})}})}var X=({isConfigured:e,isSecureConnection:t,onCancel:n,onSaved:r})=>{let i=et(),[a]=E.useForm();return(0,W.jsxs)(`div`,{className:`copilote-key-form`,children:[(0,W.jsx)(`p`,{children:e?`Renseignez la nouvelle clé d'API fournie par Harris. Elle remplacera celle qui est en place.`:`Renseignez la clé d'API fournie par Harris pour activer IRIS sur ce serveur.`}),i.isError&&(0,W.jsx)(T,{type:`error`,showIcon:!0,message:`Enregistrement refusé`,description:i.error?.message}),!t&&(0,W.jsx)(T,{type:`warning`,showIcon:!0,message:`À saisir depuis le serveur`,description:`La connexion n'est pas chiffrée : assurez-vous d'être en RDP sur le serveur avant d'enregistrer, sinon la clé traverse le réseau.`}),(0,W.jsxs)(E,{form:a,onFinish:e=>{i.mutate({code:`matcha`,key:e.key},{onSuccess:()=>{a.resetFields(),r?.()}})},layout:`vertical`,children:[(0,W.jsx)(E.Item,{name:`key`,label:`Clé d'API`,rules:[{required:!0,message:`Veuillez renseigner ce champ`}],children:(0,W.jsx)(v.Password,{autoComplete:`off`})}),(0,W.jsxs)(g,{direction:`vertical`,size:`small`,className:`copilote-key-form-actions`,children:[(0,W.jsx)(m,{type:`primary`,htmlType:`submit`,loading:i.isPending,size:`large`,block:!0,children:`Enregistrer`}),n&&(0,W.jsx)(m,{type:`text`,onClick:n,size:`large`,block:!0,children:`Annuler`})]})]}),(0,W.jsx)(T,{className:`copilote-key-form-hint`,type:`info`,showIcon:!0,message:`Prérequis serveur`,description:(0,W.jsxs)(W.Fragment,{children:[`Le chiffrement de la clé demande l'extension mcrypt : décommenter`,` `,(0,W.jsx)(`code`,{children:`extension=php_mcrypt.dll`}),` dans`,` `,(0,W.jsx)(`code`,{children:`cti_server\\conf\\php\\5.2.5\\php.ini`}),`, puis redémarrer Apache.`]})})]})},{TextArea:tt}=v,Z=A.forwardRef(({onSend:e,isLoading:t},n)=>{let[r,i]=(0,A.useState)(``),a=()=>{let n=r.trim();n&&!t&&(e(n),i(``))};return(0,W.jsxs)(`div`,{className:`copilote-input`,children:[(0,W.jsx)(tt,{ref:n,value:r,onChange:e=>i(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),a())},placeholder:`Posez votre question...`,autoSize:{minRows:1,maxRows:4},disabled:t}),(0,W.jsx)(m,{type:`primary`,icon:(0,W.jsx)(ge,{}),onClick:a,disabled:!r.trim()||t,loading:t})]})});Z.displayName=`CopiloteInput`;var Q=`iris_disclaimer_accepted`,$=`dpo@harrisfrance.fr`,nt=()=>localStorage.getItem(Q)===`true`,rt=({onAccept:e})=>{let[t,n]=(0,A.useState)(!1);return(0,W.jsxs)(_,{title:`IRIS — Assistant IA iCTI`,open:!0,closable:!1,maskClosable:!1,footer:(0,W.jsx)(m,{type:`primary`,disabled:!t,onClick:()=>{localStorage.setItem(Q,`true`),B({type:`consent_accepted`}),e()},children:`Accéder à IRIS`}),width:560,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`IRIS`}),` fonctionne grâce à une combinaison de techniques d'intelligence artificielle qui lui permettent de simuler une conversation naturelle. En interagissant avec lui, vous communiquez des données non pas à un opérateur humain mais à un système automatisé basé sur la technologie de traitement du langage naturel (NLP) qui fonctionne en analysant vos requêtes et en générant des réponses textuelles en temps réel.`]}),(0,W.jsx)(`p`,{children:`Le modèle sous-jacent a été entraîné sur un ensemble de données volumineux et diversifié, ce qui lui permet de produire des textes cohérents et pertinents. Cependant, il est important de garder à l'esprit qu'il peut parfois :`}),(0,W.jsxs)(`ul`,{children:[(0,W.jsx)(`li`,{children:`générer des informations incorrectes ou inappropriées,`}),(0,W.jsx)(`li`,{children:`produire du contenu biaisé,`}),(0,W.jsx)(`li`,{children:`mal interpréter les requêtes ou questions complexes.`})]}),(0,W.jsxs)(`p`,{children:[`Si vous constatez ce type de réponse, n'hésitez pas à le signaler à`,` `,(0,W.jsx)(`a`,{href:`mailto:${$}`,children:$}),`.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`IRIS`}),` est conçu pour répondre à vos questions sur le fonctionnement de l'application iCTI et les règles de gestion métier mais il ne pourra pas répondre avec précision aux questions relatives à une situation personnelle.`]}),(0,W.jsx)(`p`,{children:`Par conséquent, vous garantissez ne pas fournir de données personnelles (nom, prénom, coordonnées…) ou d'informations personnelles de toute nature (opinion politique, état de santé, orientation sexuelle…) dans cette interface dans la mesure où elles ne sont pas nécessaires pour obtenir une réponse.`}),(0,W.jsxs)(`p`,{style:{marginBottom:0},children:[`En tout état de cause, les réponses fournies par `,(0,W.jsx)(`strong`,{children:`IRIS`}),` sont générées à partir des données disponibles et constituent des informations à titre indicatif. Elles ne doivent pas être utilisées pour prendre des décisions importantes.`]}),(0,W.jsx)(O,{checked:t,onChange:e=>n(e.target.checked),style:{marginTop:16},children:`J'accepte les conditions d'utilisation de IRIS.`})]})},it=()=>{let e=Ke(),t=e.data?.configured===!0,n=e.data?.isSecureConnection===!0,[r,i]=(0,A.useState)(!1),[a,o]=(0,A.useState)(!1),[s,u]=(0,A.useState)(nt),[d,f]=(0,A.useState)([]),[g,_]=(0,A.useState)(!1),v=(0,A.useRef)(null),y=(0,A.useRef)(0),b=(0,A.useRef)(null),x=a||e.isSuccess&&!t,S=t&&!a,C=()=>`${z()}-${++y.current}`;(0,A.useEffect)(()=>{let e=setInterval(V,300*1e3);return()=>clearInterval(e)},[]),(0,A.useEffect)(()=>{v.current?.scrollIntoView({behavior:`smooth`})},[d]);let T=()=>{b.current?.focus({preventScroll:!0})};(0,A.useEffect)(()=>{r&&t&&s&&T()},[r,t,s]);let E=async e=>{let t={id:C(),role:`user`,content:e},n=[...d,t];f(n),_(!0);try{let e=await We(n);f(e===F?n=>[...n.map(e=>e===t?{...e,isLocalOnly:!0}:e),{...e,id:C()}]:t=>[...t,{...e,id:C()}])}catch(e){let t=e.code===`ECONNABORTED`,n=t?`Le copilote a mis trop de temps à répondre. Réessayez avec une question plus courte.`:`Erreur de communication avec le copilote. Vérifiez la configuration.`;f(e=>[...e,{id:C(),role:`assistant`,content:n,isLocalOnly:!0}]),!t&&e.message&&p({message:`Le copilote n'a pas pu répondre`,description:e.message,duration:8})}finally{_(!1)}},D=()=>{B({type:`conversation_reset`,message_count:d.length}),f([])},O=()=>{V(),i(!1)};return ne(`i`,()=>{r?O():i(!0)},{},[r]),(0,W.jsxs)(W.Fragment,{children:[r&&!s&&(0,W.jsx)(rt,{onAccept:()=>u(!0)}),!r&&(0,W.jsx)(m,{className:`copilote-fab`,type:`primary`,shape:`circle`,size:`large`,icon:(0,W.jsx)(te,{}),onClick:()=>i(!0),title:`IRIS — Votre assistante iCTI`}),(0,W.jsxs)(ie,{title:`IRIS`,placement:`right`,width:420,onClose:O,open:r,afterOpenChange:e=>{e&&s&&T()},className:`copilote-drawer`,closeIcon:(0,W.jsx)(l,{}),extra:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(h,{title:`Configurer la clé d'API`,placement:`bottomRight`,arrowPointAtCenter:!0,children:(0,W.jsx)(m,{type:`text`,size:`large`,icon:(0,W.jsx)(w,{}),onClick:()=>o(!0),disabled:x||e.isPending})}),(0,W.jsx)(h,{title:`Réinitialiser la conversation`,placement:`bottomRight`,arrowPointAtCenter:!0,children:(0,W.jsx)(m,{type:`text`,size:`large`,icon:(0,W.jsx)(oe,{}),onClick:D,disabled:d.length===0})})]}),children:[(0,W.jsxs)(`div`,{className:`copilote-body`,children:[e.isPending&&(0,W.jsx)(`div`,{className:`copilote-unavailable`,children:(0,W.jsx)(`p`,{children:`Connexion à IRIS en cours...`})}),e.isError&&!a&&(0,W.jsxs)(`div`,{className:`copilote-unavailable`,children:[(0,W.jsx)(`p`,{children:`IRIS est momentanément indisponible.`}),(0,W.jsx)(m,{icon:(0,W.jsx)(re,{}),onClick:()=>e.refetch(),loading:e.isFetching,size:`small`,children:`Réessayer`})]}),x&&(0,W.jsx)(X,{isConfigured:t,isSecureConnection:n,onCancel:t?()=>o(!1):void 0,onSaved:()=>o(!1)}),S&&d.length===0&&(0,W.jsx)(`div`,{className:`copilote-welcome`,children:(0,W.jsx)(`p`,{children:`Bonjour, je suis IRIS. Posez-moi vos questions sur les indicateurs, le paramétrage et les règles de gestion iCTI.`})}),S&&(0,W.jsxs)(`div`,{className:`copilote-messages`,children:[d.map((e,t)=>(0,W.jsx)($e,{messageId:e.id,role:e.role,content:e.content,isLocalOnly:e.isLocalOnly,suggestions:!g&&t===d.length-1?e.suggestions:void 0,onSuggestionClick:E},e.id)),g&&(0,W.jsxs)(`div`,{className:`copilote-loading`,children:[(0,W.jsx)(ee,{indicator:(0,W.jsx)(c,{spin:!0}),size:`small`}),(0,W.jsx)(`span`,{children:`Réflexion en cours...`})]}),(0,W.jsx)(`div`,{ref:v})]})]}),S&&(0,W.jsx)(Z,{ref:b,onSend:E,isLoading:g})]})]})};export{it as default};