PageSourceSearch

https://clipo.ai/assets/RecordGeneratePage-CeA-HI_G.js

js clipo.ai collected 2026-10-05 11:57:27 UTC 6,507 bytes, 3 lines download raw bytes

1import{a as P,b as G,j as e,P as R,T as f,n as B,e as M,hr as E,aP as O,w as D,x as p,r as b,ah as w,a9 as A,S as F,B as L,m as j,gS as N,gT as Q,an as q,y as z,iH as W,fr as H,c as K,lP as V,a4 as $,t as U,D as X,X as I,c3 as J}from"./index-aREvobyF.js";import{S as Y}from"./StoryRecordLayout-DYZQk1IJ.js";import{S as Z}from"./SimpleTable-DF7EMZw0.js";import{C as ee}from"./vars-B8hcJ5CT.js";import{u as te}from"./useParamsStrict-CRxFNkx_.js";import"./PageMetaHeader-6lUw-EYb.js";import"./Stepper-B6Hsfzct.js";import"./ButtonWithTooltip-mLqxUQDU.js";import"./link-box-DcUyRFYn.js";import"./table-BqH1TAsn.js";try{let t=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},s=new t.Error().stack;s&&(t._sentryDebugIds=t._sentryDebugIds||{},t._sentryDebugIds[s]="14be87f0-aa1a-47cc-8cf8-eb6b4c20ff3c",t._sentryDebugIdIdentifier="sentry-dbid-14be87f0-aa1a-47cc-8cf8-eb6b4c20ff3c")}catch{}const re=({selectedCount:t,isLoading:s,onGenerate:o})=>{const d=P(),{open:u,onClose:h,setOpen:c,onOpen:m}=G(),y=t>0?`선택된 ${t}명의 학생 기록을 생성합니다. AI 크레딧 ${t}개가 사용됩니다.`:"선택한 학생의 AI 기록 초안을 만듭니다.",n=()=>{t>0?o():m()};return e.jsxs(e.Fragment,{children:[e.jsxs(R,{justify:"end",w:"100%",children:[e.jsx(f,{textStyle:"b2-medium-compact",color:"fg.muted",children:y}),e.jsxs(B,{circle:!0,loading:s,onClick:n,children:[e.jsx(M,{as:E,boxSize:5}),"기록 생성"]})]}),e.jsx(O,{trigger:{open:u,setOpen:c},description:"학생 기록 관리 화면에서도 기록 생성이 가능합니다.",title:`선택된 학생이 없습니다.
2그래도 기록 관리 화면으로 이동할까요?`,cancelButton:{label:"아니오, 선택할게요."},confirmButton:{label:"네, 이동할게요.",onConfirm:()=>{h(),d("../record")}}})]})},se=({groupKey:t,groupMembers:s,isPolling:o,setIsPolling:d,selectedMemberKey:u,getItemProps:h,setValue:c,...m})=>{const{data:y}=D({...p.activityCharacters.group._ctx.detail({groupKey:t})._ctx.recordsAiStatus,refetchInterval:o?5e3:!1}),n=b.useMemo(()=>(y??[]).reduce((r,a)=>(r.set(a.group_member.key,a),r),new Map),[y]),k=Array.from(n.values()).filter(r=>{var a;return((a=r.last_ai_generated_record)==null?void 0:a.status)==="S"}),x=Array.from(n.values()).filter(r=>{var a;return((a=r.last_ai_generated_record)==null?void 0:a.status)==="I"}),l=n.size>0&&k.length===n.size;return b.useEffect(()=>{l?d(!1):x.length>0&&d(!0)},[l,x,d]),e.jsx(Z,{width:"100%",...m,rows:s.map(r=>{var _,v;const{onCheckedChange:a,...C}=h({value:r.key}),S=!!r.story,i=((v=(_=n.get(r.key))==null?void 0:_.last_ai_generated_record)==null?void 0:v.status)==="I",g=!S||i;return{key:r.key,backgroundColor:"white",color:"black.400",_hover:g?{backgroundColor:"gray.50",cursor:"not-allowed"}:{backgroundColor:"skyBlue.50",cursor:"pointer"},onClick:T=>{T.preventDefault(),g||a()},cells:[{key:"checkbox",children:e.jsx(w,{borderColor:"gray.200",colorPalette:"skyBlue",onCheckedChange:a,...C,disabled:g})},{key:"학번",children:r.student.identity},{key:"이름",children:r.student.name},{key:"story",w:"50%",maxW:"10rem",children:r.story||"-"},{key:"상태",children:ae(n.get(r.key))}]}}),header:{backgroundColor:"gray.50",columns:[{key:"checkbox",children:e.jsx(w,{borderColor:"gray.200",colorPalette:"skyBlue",checked:u.length>0?u.length===s.length?!0:"indeterminate":!1,onCheckedChange:r=>{r.checked&&u.length===0?c(s.filter(a=>!!a.story).map(a=>a.key)):c([])}})},{key:"identity",children:"학번"},{key:"name",children:"이름"},{key:"story",maxWidth:"50%",children:"키워드 및 일화"},{key:"상태",children:"기록 생성"}]}})},ae=t=>{var o;if(t===void 0)return"-";const s=(o=t.last_ai_generated_record)==null?void 0:o.status;return s===void 0?"-":s==="S"?e.jsx(A,{colorPalette:"blue",children:"성공"}):s==="F"?e.jsx(A,{colorPalette:"red",children:"실패"}):e.jsx(F,{color:"blue.solid",borderWidth:"3px",size:"sm","data-scope":"spinner",css:{"--spinner-track-color":"colors.border.border"}})},oe=({value:t,onChange:s})=>e.jsx(L,{width:"100%",bgColor:"bg.panel",borderRadius:"xl",p:"1.5rem",shadow:"sm",children:e.jsxs(j,{flexDir:"column",w:"100%",children:[e.jsx(f,{textStyle:"t4-semibold-compact",color:"fg",children:"AI 기록 생성 분량"}),e.jsx(f,{textStyle:"b1-regular",color:"fg.fg",mt:3,children:"기록 생성 분량을 선택해 주세요. 입력하신 내용에 따라 실제 생성 분량은 달라질 수 있습니다."}),e.jsx(N,{mt:5,value:t.toString(),onValueChange:o=>{s(Number(o.value))},children:e.jsx(j,{flexDir:"column",gap:4,children:ee.map(o=>e.jsx(Q,{value:o.value.toString(),children:e.jsx(f,{textStyle:"b1-medium-compact",children:o.label})},o.value))})})]})}),me=()=>{const t=q(),{groupKey:s}=te(t),[o,d]=b.useState(500),[u,h]=b.useState(!1),c=z(),m=P(),{aiLackOfCreditDisclosure:y}=W(),{value:n,getItemProps:k,setValue:x}=H({}),{data:l}=D({...p.activityCharacters.group._ctx.detail({groupKey:s})}),r=b.useMemo(()=>(l==null?void 0:l.group_members.sort((i,g)=>
2i.student.identity.localeCompare(g.student.identity)))??[],[l]),{mutate:a,isPending:C}=K({mutationFn:i=>V.appsActivityCharactersApiActivityCharacterGroupRecordsAiGenerate({requestBody:i}),onSuccess:()=>{c.invalidateQueries(p.credits.myCredits),c.invalidateQueries(p.users.aiStatuses),c.invalidateQueries({queryKey:p.activityCharacters.group._ctx.detail({groupKey:s})._ctx.recordsAiStatus.queryKey}),m("../record")},onError:i=>{if(i instanceof $&&i.status===429){y.onOpen();return}U.create({title:X(i),type:"error"})}}),S=()=>{const i=n.filter(g=>J.isString(g));a({member_keys:i,target_characters_count:o},{onSuccess:()=>{x([]),h(!0)}})};return e.jsx(Y,{group:l,status:"generate",children:e.jsxs(I,{width:"100%",height:"100%",mt:"0.625rem",gap:"1.5rem",align:"start",children:[e.jsxs(j,{flexDir:"column",w:"100%",gap:"1.5rem",align:"start",bgColor:"bg.panel",p:"1.5rem",borderRadius:"xl",boxShadow:"sm",children:[e.jsxs(I,{width:"100%",gap:"0.75rem",align:"start",children:[e.jsx(f,{textStyle:"t4-semibold-compact",color:"fg",children:"학생 선택"}),e.jsx(f,{textStyle:"b1-medium",color:"fg.fg",children:"기록을 생성할 학생을 선택해 주세요. 일 AI 크레딧 한도 내에서 선택 가능합니다."})]}),e.jsx(se,{groupKey:s,groupMembers:r,isPolling:u,setIsPolling:h,selectedMemberKey:n,getItemProps:k,setValue:x})]}),e.jsx(oe,{value:o,onChange:d}),e.jsx(re,{selectedCount:n.length,isLoading:C,onGenerate:S})]})})};export{me as default};
3//# sourceMappingURL=RecordGeneratePage-CeA-HI_G.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.