PageSourceSearch

https://xynergy.ai/_next/static/chunks/3462-95bc934c6492a5ae.js

js xynergy.ai collected 2026-10-05 16:01:45 UTC 22,624 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3462],{7786:(e,t,r)=>{r.d(t,{s:()=>o});var a=r(76458),i=r(24571);let o={async saveMandate(e,t){if(!a.db)throw Error("Firestore 未初始化");let r=i.Timestamp.now(),o=(0,i.doc)((0,i.rJ)(a.db,"guardianshipMandates")),n={id:o.id,userId:e,answers:t,createdAt:r,updatedAt:r};return await (0,i.setDoc)(o,n),o.id},async updateMandate(e,t){if(!a.db)throw Error("Firestore 未初始化");let r=(0,i.doc)(a.db,"guardianshipMandates",e),o=i.Timestamp.now();await (0,i.mZ)(r,{answers:t,updatedAt:o})},async getMandate(e){if(!a.db)throw Error("Firestore 未初始化");let t=(0,i.P)((0,i.rJ)(a.db,"guardianshipMandates"),(0,i._M)("userId","==",e)),r=await (0,i.GG)(t);if(r.empty)return null;let o=r.docs.sort((e,t)=>{let r=e.data();return t.data().updatedAt.toDate().getTime()-r.updatedAt.toDate().getTime()});return{...o[0].data(),id:o[0].id}},async deleteMandate(e){if(!a.db)throw Error("Firestore 未初始化");let t=(0,i.doc)(a.db,"guardianshipMandates",e);await (0,i.kd)(t)},async hasMandate(e){if(!a.db)throw Error("Firestore 未初始化");let t=(0,i.P)((0,i.rJ)(a.db,"guardianshipMandates"),(0,i._M)("userId","==",e));return!(await (0,i.GG)(t)).empty}}},13130:(e,t,r)=>{r.d(t,{m:()=>n});var a=r(76458),i=r(18654),o=r(24571);let n={async saveAdvanceDirective(e,t){try{if(!a.db)throw Error("Firestore 未初始化");let r=o.Timestamp.now(),i=(0,o.doc)((0,o.rJ)(a.db,"advanceDirectives")),n={id:i.id,userId:e,answers:t,createdAt:r,updatedAt:r};return await (0,o.setDoc)(i,n),i.id}catch(e){throw(0,i.vV)("儲存預立醫療決定書時發生錯誤:",e),e}},async updateAdvanceDirective(e,t){try{if(!a.db)throw Error("Firestore 未初始化");let r=(0,o.doc)(a.db,"advanceDirectives",e),i=o.Timestamp.now();await (0,o.mZ)(r,{answers:t,updatedAt:i})}catch(e){throw(0,i.vV)("更新預立醫療決定書時發生錯誤:",e),e}},async getAdvanceDirective(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.P)((0,o.rJ)(a.db,"advanceDirectives"),(0,o._M)("userId","==",e)),r=await (0,o.GG)(t);if(r.empty)return null;let i=r.docs.sort((e,t)=>{let r=e.data();return t.data().updatedAt.toDate().getTime()-r.updatedAt.toDate().getTime()});return{...i[0].data(),id:i[0].id}}catch(e){throw(0,i.vV)("獲取預立醫療決定書時發生錯誤:",e),e}},async deleteAdvanceDirective(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.doc)(a.db,"advanceDirectives",e);await (0,o.kd)(t)}catch(e){throw(0,i.vV)("刪除預立醫療決定書時發生錯誤:",e),e}},async hasAdvanceDirective(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.P)((0,o.rJ)(a.db,"advanceDirectives"),(0,o._M)("userId","==",e));return!(await (0,o.GG)(t)).empty}catch(e){throw(0,i.vV)("檢查預立醫療決定書時發生錯誤:",e),e}}}},39182:(e,t,r)=>{r.d(t,{G0:()=>l,iY:()=>d});var a=r(97769),i=r(3198),o=r(53855);function n(e){let t="string"==typeof e?e.trim():"";return t?(0,i.Dy)("medical",t)??"other":"other"}function l(e){if(null==e||"object"!=typeof e)return;let t=a.MJ.safeParse(e);if(t.success)return t.data}function d(e){let t=Object.fromEntries(Object.entries(e.medicalTypeData).map(([e,t])=>[e,{current:t.current,target:t.target}])),r={},a=e=>{t[e]||(t[e]={current:0,target:0})};for(let r of(a("hospitalDaily"),a("actualExpense"),a("surgery"),e.policies)){if("medical"!==r.category)continue;let a="string"==typeof r.productId?r.productId.trim():"";if(!a)continue;let i=e.productRulesByProductId[a];if(!i||"actualExpense"!==n(r.insuranceType))continue;let l=(0,o.J)(r),d=i.dailyFromActualExpense??{mode:"none"},s=e.benefitItemsByProductId?.[a],u=d&&"none"!==d.mode?"percentOfCoverage"===d.mode?Math.round(l*Math.min(100,Math.max(0,d.percent))/100):"fixedWanPerDay"===d.mode?Math.round(1e4*d.wanPerDay):"fromBenefitTag"===d.mode?function(e,t){if(!e?.length||!t.trim())return 0;let r=t.trim().toLowerCase(),a=0;for(let t of e){if(!`${t.name??""} ${t.category??""} ${t.description??""}`.toLowerCase().includes(r))continue;let e=t.amount;if("string"!=typeof e||!e.trim())continue;let i=e.trim(),o=i.match(/(\d+(?:\.\d+)?)\s*萬/),n=i.match(/(\d+(?:,\d{3})*(?:\.\d+)?)\s*元/);if(o)a+=Number(o[1]);else if(n){let e=Number(n[1].replace(/,/g,""));Number.isFinite(e)&&(a+=e/1e4)}}return Math.round(1e4*a)}(s,d.tag):0:0;u>0&&(t.hospitalDaily.current+=u)}let i=0;for(let t of e.policies){if("medical"!==t.category)continue;let r="string"==typeof t.productId?t.productId.trim():"";if(!r)continue;let a=e.productRulesByProductId[r];a?.hospitalMedicalAndSurgerySharedLimit&&"actualExpense"===n(t.insuranceType)&&(i+=(0,o.J)(t))}if(i>0){let e=t.actualExpense?.target??0,r=t.surgery?.target??0,a=t.actualExpense.current,o=t.surgery.current,n=a-i,{ca:l,cs:d}=function(e,t,r){if(e<=0)return{ca:0,cs:0};let a=Math.max(0,t),i=Math.max(0,r);if(a+i<=0)return{ca:0,cs:0};let o=Math.min(a,Math.round(e*a/(a+i))),n=Math.min(i,e-o),l=e-o-n;
1if(l>0){let e=Math.min(l,a-o);o+=e,l-=e}if(l>0){let e=Math.min(l,i-n);n+=e,l-=e}return l>0&&(o+=l),{ca:o,cs:n}}(i,e,r);t.actualExpense.current=n+l,t.surgery.current=o+d}let l=function(e,t){let r=t?.surgerySplit?.outpatientShareOfSurgeryTarget;if(null==r||!Number.isFinite(r)||r<=0||e<=0)return;let a=Math.round(e*r),i=Math.max(0,e-a);return`手術建議目標拆估(商品設定):門診手術約 ${a.toLocaleString("zh-TW")} 元、住院手術約 ${i.toLocaleString("zh-TW")} 元(門診占比 ${Math.round(100*r)}%)`}(t.surgery?.target??0,Object.values(e.productRulesByProductId).find(e=>e?.surgerySplit?.outpatientShareOfSurgeryTarget!=null&&e.surgerySplit.outpatientShareOfSurgeryTarget>0));return l&&(r.surgery=l),{medicalTypeData:t,gaugeNotes:r}}},41442:(e,t,r)=>{r.d(t,{Kh:()=>c,Rs:()=>u,zJ:()=>p});var a=r(3198),i=r(53855),o=r(39182);let n=Object.fromEntries((0,a.wS)("medical").map(e=>[e.pageKey,e.tabLabel]));function l(e,t){e[t]||(e[t]={current:0,target:0})}function d(e,t,r={},n={}){let s={},u={life:{current:0,target:0,name:"壽險"}},c=0;for(let t of e){let e=(0,i.J)(t),r=t.category;if("medical"===r){let{pageKey:r,isUncategorized:i}=function(e){let t="string"==typeof e?e.trim():"";if(!t)return{pageKey:"other",isUncategorized:!0};let r=(0,a.Dy)("medical",t);return void 0===r?{pageKey:"other",isUncategorized:!0}:{pageKey:r,isUncategorized:!1}}(t.insuranceType);i&&c++,l(s,r),s[r].current+=e}else"life"===r&&(u.life.current+=e)}for(let e of t)if("medical"===e.category){let t=e.type;l(s,t),s[t].target+=e.targetCoverage}else"life"===e.category&&"lifeGap"===e.type&&(u.life.target=u.life.current+e.targetCoverage);let{medicalTypeData:p,gaugeNotes:m}=(0,o.iY)({medicalTypeData:s,policies:e,productRulesByProductId:r,benefitItemsByProductId:n});return{medicalTypeData:p,categoryTotals:u,uncategorizedMedicalCount:c,...m.surgery?{gaugeNotes:m}:{}}}function s(e,t,r,a){let i=r>0?r:Math.max(t,1),o=r>0?Math.min(t,r):t,n=r>0?Math.min(t/r*100,100):100*(t>0);return{name:e,current:t,target:r,gaugeMax:i,fillValue:o,ratioPercent:n,noRecommendationTarget:r<=0&&t>0,...a?{tooltipSupplement:a}:{}}}function u(e,t,r={},i={}){if(0===t.length)return{items:[],uncategorizedMedicalCount:0};let o=d(e,t,r,i),{uncategorizedMedicalCount:l}=o,c=[],p=[],m=[],f=[];for(let e of new Set([...(0,a.wS)("medical").map(e=>e.pageKey),...Object.keys(o.medicalTypeData)])){let{current:t,target:r}=o.medicalTypeData[e]??{current:0,target:0};if(r<=0&&t<=0)continue;let a="surgery"===e?o.gaugeNotes?.surgery:void 0,i=s(n[e]||e,t,r,a);r>0&&t<r?c.push(i):r>0&&t>=r?p.push(i):r<=0&&t>0?m.push(i):f.push(i)}for(let{current:e,target:t,name:r}of(c.sort((e,t)=>t.target-t.current-(e.target-e.current)),p.sort((e,t)=>t.target-e.target),m.sort((e,t)=>t.current-e.current),f.sort((e,t)=>t.target-e.target),Object.values(o.categoryTotals))){if(t<=0&&e<=0)continue;let a=s(r,e,t);t>0&&e<t?c.push(a):t>0&&e>=t?p.push(a):t<=0&&e>0?m.push(a):f.push(a)}let g=[...c,...p,...m,...f];return g.sort((e,t)=>t.ratioPercent!==e.ratioPercent?t.ratioPercent-e.ratioPercent:e.name.localeCompare(t.name,"zh-Hant")),{items:g,uncategorizedMedicalCount:l}}function c(e,t,r={},a={}){let i=d(e,t,r,a);return{byPageKey:i.medicalTypeData,uncategorizedMedicalCount:i.uncategorizedMedicalCount}}function p(){return(0,a.wS)("medical")}},53855:(e,t,r)=>{r.d(t,{J:()=>i});var a=r(47026);function i(e){let t,r=e?.coverage;if(null==r||"number"!=typeof r||r<0)return 0;if(r>=1e3)return Math.round(r);let i=1e4*r,o=null==(t=e.premiumCurrency)||"string"!=typeof t||""===t.trim()?"twd":(0,a.WC)(t);return"twd"===o?Math.round(i):Math.round((0,a.A7)(i,o))}},61325:(e,t,r)=>{r.d(t,{b:()=>c});var a=r(76458),i=r(18654),o=r(24571),n=r(15418);let l=n.Ik({name:n.Yj().min(1,"受益人姓名不能為空"),relationship:n.Yj().min(1,"關係不能為空"),distributionRatio:n.ai().min(0,"分配比例不能為負數").max(100,"分配比例不能超過100")}),d=n.Ik({beneficiaries:n.YO(l).optional(),executor:n.Yj().optional(),notes:n.Yj().optional()}).optional(),s=n.k5(["traditional","holographic","notarized","custom"]),u=n.Ik({userId:n.Yj().min(1,"userId 不能為空"),type:s,title:n.Yj().min(1,"遺囑標題不能為空"),content:n.Yj().min(100,"遺囑內容至少需要100字"),metadata:d,createdAt:n.bz(),updatedAt:n.bz()});n.Ik({type:s,userInfo:n.Ik({name:n.Yj().min(1,"姓名不能為空"),idNumber:n.Yj().optional(),address:n.Yj().optional()}
1),beneficiaries:n.YO(n.Ik({name:n.Yj().min(1),relationship:n.Yj(),distributionRatio:n.ai().min(0).max(100)})).optional(),executor:n.Yj().optional(),specialInstructions:n.Yj().optional()}),n.Ik({title:n.Yj().min(1,"遺囑標題不能為空").optional(),content:n.Yj().min(100,"遺囑內容至少需要100字").optional(),metadata:d}).refine(e=>void 0!==e.title||void 0!==e.content||void 0!==e.metadata,{message:"至少需要提供一個要更新的欄位"});let c={async saveWill(e,t){try{if(!a.db)throw Error("Firestore 未初始化");let r=o.Timestamp.now(),i=(0,o.doc)((0,o.rJ)(a.db,"wills")),n={id:i.id,userId:e,type:t.type,title:t.title,content:t.content,createdAt:r,updatedAt:r};return null!=t.metadata&&Object.keys(t.metadata).length>0&&(n.metadata=t.metadata),u.parse({userId:e,type:n.type,title:n.title,content:n.content,metadata:n.metadata,createdAt:r,updatedAt:r}),await (0,o.setDoc)(i,n),i.id}catch(e){throw(0,i.vV)("儲存遺囑時發生錯誤:",e),e}},async updateWill(e,t){try{if(!a.db)throw Error("Firestore 未初始化");let r=(0,o.doc)(a.db,"wills",e),i=o.Timestamp.now();if(t.title||t.content||t.metadata){let e=await (0,o.getDoc)(r);if(!e.exists())throw Error("遺囑不存在");let a=e.data();u.partial().parse({title:t.title??a.title,content:t.content??a.content,metadata:t.metadata??a.metadata})}await (0,o.mZ)(r,{...t,updatedAt:i})}catch(e){throw(0,i.vV)("更新遺囑時發生錯誤:",e),e}},async getUserWills(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.P)((0,o.rJ)(a.db,"wills"),(0,o._M)("userId","==",e)),r=await (0,o.GG)(t);if(r.empty)return[];return r.docs.map(e=>({...e.data(),id:e.id})).sort((e,t)=>t.updatedAt.toDate().getTime()-e.updatedAt.toDate().getTime())}catch(e){throw(0,i.vV)("獲取遺囑列表時發生錯誤:",e),e}},async getWill(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.doc)(a.db,"wills",e),r=await (0,o.getDoc)(t);if(!r.exists())return null;return{...r.data(),id:r.id}}catch(e){throw(0,i.vV)("獲取遺囑時發生錯誤:",e),e}},async deleteWill(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.doc)(a.db,"wills",e);await (0,o.kd)(t)}catch(e){throw(0,i.vV)("刪除遺囑時發生錯誤:",e),e}},async hasWill(e){try{if(!a.db)throw Error("Firestore 未初始化");let t=(0,o.P)((0,o.rJ)(a.db,"wills"),(0,o._M)("userId","==",e));return!(await (0,o.GG)(t)).empty}catch(e){throw(0,i.vV)("檢查遺囑時發生錯誤:",e),e}}}},61595:(e,t,r)=>{r.d(t,{j:()=>s});var a=r(31615),i=r(57376),o=r(24571),n=r(76458),l=r(39182);async function d(e){let t=[...new Set(e.map(e=>e.trim()).filter(Boolean))].sort();if(0===t.length||!n.db)return{productRulesByProductId:{},benefitItemsByProductId:{}};let r={},a={};for(let e=0;e<t.length;e+=30){let i=t.slice(e,e+30),d=(0,o.P)((0,o.rJ)(n.db,"insuranceProducts"),(0,o._M)((0,o.Fs)(),"in",i));for(let e of(await (0,o.GG)(d)).docs){let t=e.data(),i=(0,l.G0)(t.medicalGapRules);i&&(i.dailyFromActualExpense&&"none"!==i.dailyFromActualExpense.mode||!0===i.hospitalMedicalAndSurgerySharedLimit||i.surgerySplit?.outpatientShareOfSurgeryTarget!=null&&i.surgerySplit.outpatientShareOfSurgeryTarget>0)&&(r[e.id]=i);let o=t.benefitItems;Array.isArray(o)&&o.length>0&&(a[e.id]=o)}}return{productRulesByProductId:r,benefitItemsByProductId:a}}function s(e){let t=(0,a.useMemo)(()=>{let t=new Set;for(let r of e){if(!r||"medical"!==r.category)continue;let e="string"==typeof r.productId?r.productId.trim():"";e&&t.add(e)}return[...t].sort().join(",")},[e]),r=t.length>0?["medical-gap-product-rules",t]:null,{data:o,error:n,isLoading:l}=(0,i.Ay)(r,async()=>d(t.split(",").filter(Boolean)),{revalidateOnFocus:!1});return{productRulesByProductId:o?.productRulesByProductId??{},benefitItemsByProductId:o?.benefitItemsByProductId??{},isLoading:l,error:n?.message??null}}},63600:(e,t,r)=>{r.d(t,{Q:()=>n});var a=r(57376),i=r(31615),o=r(30233);function n(e,t){let r=(0,i.useMemo)(()=>(0,o.l)(),[]),n=(0,i.useMemo)(()=>[],[]),{data:l,error:d,isLoading:s,mutate:u}=(0,a.Ay)(e?["insurance/recommendations",e,t]:null,async([,e,t])=>{let a=await r.insurance.getRecommendations(e,t);if(!a.ok)throw Error(a.error||"fetch_failed");return a.data||[]}),c=async(t,a)=>{if(!e)throw Error("missing_user");let i=await r.insurance.saveRecommendation(e,t,a);if(!i.ok)throw Error(i.error||"save_failed");return await u(),i.data},p=async e=>{let t=await r.insurance.deleteRecommendation(e);if(!t.ok)throw Error(t.error||"delete_failed");await u()};return{recommendations:l??n,loading:s,error:d?.message||null,saveRecommendation:c,deleteRecommendation:p,getRecommendationByType:e=>l?.find(t=>t.type===e),getRecommendationsByCategory:e=>l?.filter(t=>t.category===e)||[],mutate:u}}},75116:(e,t,r)=>{r.d(t,{PC:()=>d});var a=r(15418);r(2687);var i=r(96813);let o=a.Yj().regex(/^\d{4}-(0[1-9]|1[0-2])$/,"月份格式應為 YYYY-MM"),n=a.Ik({month:o,income:a.ai().finite(),expense:a.ai().finite()}),l=a.YO(n);function d(e,t=6,r=new Date){if(!t||t<=0)return l.parse([]);let a=(0,i.$9)(t,r).slice().reverse(),o=(0,i.gR)(Array.isArray(e)?e:[],a);return l.parse(o)}},93750:(e,t,r)=>{r.d(t,{Gt:()=>l,S9:()=>n});var a=r(15418);let i=a.k5(["家族信託","特定目的信託","自益信託","他益信託","公益信託"]),o=a.k5(["active","pending","expired"]),n=a.Ik({name:a.Yj().min(1,"信託名稱不能為空"),type:i,description:a.Yj().optional(),settlor:a.Yj().optional(),trustee:a.Yj().optional(),supervisor:a.Yj().optional(),benef
1iciaries:a.YO(a.Yj()).default([]),assets:a.Yj().default(""),value:a.KC([a.ai(),a.Yj()]).transform(e=>"number"==typeof e?e:parseFloat(String(e).replace(/[^0-9.-]/g,""))||0),status:o.default("active"),accountId:a.Yj().optional(),otherTerms:a.Yj().optional()}),l=n.omit({value:!0}).extend({id:a.Yj().optional(),userId:a.Yj().min(1),value:a.KC([a.ai(),a.Yj()]).transform(e=>"number"==typeof e?e:parseFloat(String(e).replace(/[^0-9.-]/g,""))||0),createdAt:a.L5().optional(),updatedAt:a.L5().optional()})},94277:(e,t,r)=>{r.d(t,{IG:()=>s,Zg:()=>u,a8:()=>p,qx:()=>c});var a=r(24571),i=r(76458),o=r(93750),n=r(19548);let l=i.TRUSTS;function d(e){let t={...e};for(let e of Object.keys(t))void 0===t[e]&&delete t[e];return t}async function s(e){if(!i.db)return n.Cp(Error("db is null"),{level:"error",extra:{message:"Firestore 尚未初始化",context:"listTrusts"},tags:{source:"listTrusts"}}),[];try{let t=(0,a.P)((0,a.rJ)(i.db,l),(0,a._M)("userId","==",e)),r=await (0,a.GG)(t),n=[];for(let e of r.docs){let t=e.data(),r=o.Gt.safeParse({id:e.id,...t});r.success&&n.push({...r.data,id:e.id})}return n.sort((e,t)=>{let r=null!=e.createdAt?"string"==typeof e.createdAt?new Date(e.createdAt).getTime():e.createdAt?.toMillis?.()??0:0;return(null!=t.createdAt?"string"==typeof t.createdAt?new Date(t.createdAt).getTime():t.createdAt?.toMillis?.()??0:0)-r}),n}catch(t){return n.Cp(t instanceof Error?t:Error(String(t)),{level:"error",extra:{message:"讀取信託列表失敗",userId:e,context:"listTrusts"},tags:{source:"listTrusts"}}),[]}}async function u(e,t){if(!i.db){let e=Error("Firestore 尚未初始化");throw n.Cp(e,{level:"error",extra:{message:"Firestore 尚未初始化",context:"createTrust"},tags:{source:"createTrust"}}),e}let r=o.S9.safeParse(t);if(!r.success)throw Error(r.error.issues.map(e=>e.message).join("; "));let s=d({...r.data,userId:e,beneficiaries:r.data.beneficiaries??[],assets:r.data.assets??"",status:r.data.status??"active",createdAt:(0,a.serverTimestamp)(),updatedAt:(0,a.serverTimestamp)()});return(await (0,a.gS)((0,a.rJ)(i.db,l),s)).id}async function c(e,t){if(!i.db){let e=Error("Firestore 尚未初始化");throw n.Cp(e,{level:"error",extra:{message:"Firestore 尚未初始化",context:"updateTrust"},tags:{source:"updateTrust"}}),e}let r=(0,a.doc)(i.db,l,e),o=d({...t,updatedAt:(0,a.serverTimestamp)()});await (0,a.mZ)(r,o)}async function p(e){if(!i.db){let e=Error("Firestore 尚未初始化");throw n.Cp(e,{level:"error",extra:{message:"Firestore 尚未初始化",context:"deleteTrust"},tags:{source:"deleteTrust"}}),e}await (0,a.kd)((0,a.doc)(i.db,l,e))}},97769:(e,t,r)=>{r.d(t,{Qp:()=>s,tW:()=>w,MJ:()=>c});var a=r(15418),i=r(3198);let o=[...i.tC,...i.pe].map(e=>e.value),n=a.Yj().refine(e=>o.includes(e),{message:`insurerCode 必須為下列之一:${o.join(", ")}`}),l=a.k5(["life","property","medical"],{message:"category 必須為 life、property 或 medical"}),d=a.k5(["listed","unlisted"],{message:"reviewStatus 必須為 listed(上架)或 unlisted(下架)"}),s=a.Ik({name:a.Yj().min(1,"項目名稱不能為空"),description:a.Yj().optional(),amount:a.Yj().optional(),amountByPlan:a.g1(a.Yj().min(1,"計劃代碼不可為空"),a.Yj()).optional(),category:a.Yj().optional()}),u=a.gM("mode",[a.Ik({mode:a.eu("none")}),a.Ik({mode:a.eu("percentOfCoverage"),percent:a.ai().min(0).max(100)}),a.Ik({mode:a.eu("fixedWanPerDay"),wanPerDay:a.ai().nonnegative()}),a.Ik({mode:a.eu("fromBenefitTag"),tag:a.Yj().min(1)})]),c=a.Ik({dailyFromActualExpense:u.optional(),hospitalMedicalAndSurgerySharedLimit:a.zM().optional(),surgerySplit:a.Ik({outpatientShareOfSurgeryTarget:a.ai().min(0).max(1).optional()}).optional()}),p=a.Ik({plan:a.Yj().optional(),gender:a.k5(["male","female"]).optional(),term:a.Yj().optional(),age:a.ai().int().min(0),premium:a.ai().nonnegative()}),m=a.Ik({occupationClass:a.Yj().min(1),premium:a.ai().nonnegative()}),f=a.Ik({label:a.Yj().optional(),description:a.Yj().optional(),amount:a.Yj().optional()}),g=a.Ik({title:a.Yj(),items:a.YO(f),supplement:a.Yj().optional()}),y=a.Ik({sections:a.YO(g)}),h=a.Ik({title:a.Yj().optional(),content:a.Yj()}),Y=a.Ik({blocks:a.YO(h)}),j=a.Ik({confidence:a.ai().min(0).max(1).optional(),sourcePage:a.ai().int().positive().optional(),sourceSnippet:a.Yj().max(500).optional(),sourceFileId:a.Yj().optional(),extractedAt:a.KC([a.p6(),a.Yj()]).optional(),model:a.Yj().optional()}),v=a.Ik({verifiedBy:a.Yj().min(1),verifiedAt:a.KC([a.p6(),a.Yj()]),valueHash:a.Yj().optional()}),w=a.Ik({insurerCode:n,category:l,productType:a.Yj().min(1,"險種不能為空"),productName:a.Yj().min(1,"商品名稱不能為空"),productC
1ode:a.Yj().optional(),premiumCurrency:a.k5(["twd","usd","jpy","eur"]).optional(),premiumRateType:a.k5(["自然費率","平準費率"]).optional(),ageRange:a.Yj().optional(),coveragePeriod:a.Yj().optional(),productRole:a.Yj().optional(),minInsuredAmountWan:a.ai().nonnegative().optional(),maxInsuredAmountWan:a.ai().nonnegative().optional(),termOption:a.Yj().optional(),termOptions:a.YO(a.Yj()).optional(),referencePremium:a.ai().nonnegative("參考保費不能為負數").optional(),rateTable:a.YO(p).optional(),rateTablePremiumBasis:a.k5(["perWan","perThousand","full"]).optional(),accidentRateTable:a.YO(m).optional(),planAmounts:a.g1(a.Yj(),a.ai().nonnegative()).optional(),benefitItems:a.YO(s).optional(),medicalGapRules:c.optional(),coverageSummary:a.vk(function(e){if(null!=e){if("string"==typeof e){let t=e.trim();if(!t)return;return{sections:[{title:"保障摘要",items:[{description:t}]}]}}if("object"==typeof e&&Array.isArray(e.sections))return e}},y.optional()),termsSummary:a.vk(function(e){if(null!=e){if("string"==typeof e){let t=e.trim();if(!t)return;return{blocks:[{content:t}]}}if("object"==typeof e&&Array.isArray(e.blocks))return e}},Y.optional()),underwritingRules:a.Yj().optional(),isDiscontinued:a.zM().optional(),effectiveDate:a.KC([a.Yj(),a.p6()]).optional(),salesPeriodStart:a.KC([a.Yj(),a.p6()]).optional(),salesPeriodEnd:a.KC([a.Yj(),a.p6()]).optional().nullable(),normalizedProductName:a.Yj().optional(),normalizedEffectiveDate:a.Yj().optional(),updatedAt:a.KC([a.p6(),a.Yj()]),sourceUrl:a.Yj().url().optional().or(a.eu("")),reviewStatus:d.optional(),sourceFileName:a.Yj().optional(),sourceStoragePath:a.Yj().optional(),createdBy:a.Yj().optional(),updatedBy:a.Yj().optional(),createdAt:a.KC([a.p6(),a.Yj()]).optional(),ingestStatus:a.k5(["ok","running","error"]).optional(),lastIngestAt:a.KC([a.p6(),a.Yj()]).optional(),needsReview:a.zM().optional(),ingestError:a.Yj().optional(),extractionProvenance:a.g1(a.Yj().min(1),j).optional(),fieldVerifications:a.g1(a.Yj().min(1),v).optional(),supersedesProductId:a.Yj().optional(),supersededByProductId:a.Yj().optional()});w.required({updatedAt:!0}),w.required({updatedAt:!0,effectiveDate:!0});let b=a.k5(["rate","terms","general"]);a.Ik({fileName:a.Yj().min(1),storagePath:a.Yj().min(1),type:b,partialAmendmentOrder:a.ai().int().nonnegative().optional(),uploadedAt:a.KC([a.p6(),a.Yj()]).optional()});let I=a.k5(["manual-edit","ingest","import","batch-set-listed","verify-field"]);a.Ik({changedBy:a.Yj().min(1),changedAt:a.KC([a.p6(),a.Yj()]),source:I,diff:a.g1(a.Yj().min(1),a.Ik({before:a.L5().optional(),after:a.L5().optional()})),note:a.Yj().optional()});let A=a.k5(["pending","running","done","error","skipped"]),k=a.Ik({productId:a.Yj().min(1),status:A,startedAt:a.KC([a.p6(),a.Yj()]).optional(),finishedAt:a.KC([a.p6(),a.Yj()]).optional(),notes:a.YO(a.Yj()).optional(),error:a.Yj().optional(),needsReview:a.zM().optional()}),M=a.k5(["queued","running","done","error","cancelled"]);a.Ik({status:M,progress:a.Ik({total:a.ai().int().nonnegative(),processed:a.ai().int().nonnegative(),succeeded:a.ai().int().nonnegative(),failed:a.ai().int().nonnegative(),needsReview:a.ai().int().nonnegative()}),items:a.YO(k),createdBy:a.Yj().min(1),createdAt:a.KC([a.p6(),a.Yj()]),updatedAt:a.KC([a.p6(),a.Yj()]),cancelRequested:a.zM().optional()})}}]);

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.