@8btc/finance-assistant-mcp 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +53 -3
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -21,6 +21,7 @@ const tailwindMerge = require("tailwind-merge");
|
|
|
21
21
|
const qrcode_react = require("qrcode.react");
|
|
22
22
|
const echarts = require("echarts");
|
|
23
23
|
const path = require("node:path");
|
|
24
|
+
const winston = require("winston");
|
|
24
25
|
function _interopNamespaceDefault(e) {
|
|
25
26
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
26
27
|
if (e) {
|
|
@@ -762,7 +763,7 @@ function Chapter4({ data, rsiSvg, kdjSvg }) {
|
|
|
762
763
|
] });
|
|
763
764
|
}
|
|
764
765
|
function Warn({ content }) {
|
|
765
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-[#DC2626] border bg-[#FEF2F2]", children: [
|
|
766
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "border-[#DC2626] border bg-[#FEF2F2] break-inside-avoid", children: [
|
|
766
767
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-[#DC2626] text-white px-[14px] py-1 font-bold", children: "风险提示" }),
|
|
767
768
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "", children: [
|
|
768
769
|
content,
|
|
@@ -914,7 +915,7 @@ function Chapter6({
|
|
|
914
915
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.volume_indicator.retail_sentiment })
|
|
915
916
|
] });
|
|
916
917
|
}
|
|
917
|
-
function Chapter7({ data }) {
|
|
918
|
+
function Chapter7({ data, klineSupportSvg }) {
|
|
918
919
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chapterPage", children: [
|
|
919
920
|
/* @__PURE__ */ jsxRuntime.jsx(SectionHeader, { index: 7, title: "形态分析与关键价位" }),
|
|
920
921
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: data.pattern_analysis.pattern_analysis_summary }),
|
|
@@ -944,6 +945,26 @@ function Chapter7({ data }) {
|
|
|
944
945
|
"¥220"
|
|
945
946
|
] })
|
|
946
947
|
] }),
|
|
948
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
949
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
950
|
+
"div",
|
|
951
|
+
{
|
|
952
|
+
className: "w-[651px] h-[284px]",
|
|
953
|
+
dangerouslySetInnerHTML: {
|
|
954
|
+
__html: klineSupportSvg
|
|
955
|
+
}
|
|
956
|
+
}
|
|
957
|
+
),
|
|
958
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center text-[13px] opacity-50", children: [
|
|
959
|
+
"图6-2 ",
|
|
960
|
+
data.name,
|
|
961
|
+
"(",
|
|
962
|
+
data.code,
|
|
963
|
+
".",
|
|
964
|
+
data.market,
|
|
965
|
+
") 支撑位"
|
|
966
|
+
] })
|
|
967
|
+
] }),
|
|
947
968
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "indentP", children: "策略参考:" }),
|
|
948
969
|
/* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "pl-6 list-disc", children: [
|
|
949
970
|
/* @__PURE__ */ jsxRuntime.jsx("li", { children: "靠近支撑带 + 量能配合:可分批配置" }),
|
|
@@ -1012,7 +1033,7 @@ function End({ data }) {
|
|
|
1012
1033
|
}
|
|
1013
1034
|
);
|
|
1014
1035
|
}
|
|
1015
|
-
const style = '/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",\n "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",\n "Courier New", monospace;\n --color-cyan-600: oklch(60.9% 0.126 221.723);\n --color-cyan-700: oklch(52% 0.105 223.128);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: 0.25rem;\n --radius-lg: 0.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .visible {\n visibility: visible;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .z-0 {\n z-index: 0;\n }\n .z-50 {\n z-index: 50;\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .my-8 {\n margin-block: calc(var(--spacing) * 8);\n }\n .my-10 {\n margin-block: calc(var(--spacing) * 10);\n }\n .my-11 {\n margin-block: calc(var(--spacing) * 11);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mr-\\[10px\\] {\n margin-right: 10px;\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-7 {\n margin-bottom: calc(var(--spacing) * 7);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-\\[5px\\] {\n margin-bottom: 5px;\n }\n .mb-\\[21px\\] {\n margin-bottom: 21px;\n }\n .mb-\\[31px\\] {\n margin-bottom: 31px;\n }\n .mb-\\[48px\\] {\n margin-bottom: 48px;\n }\n .mb-\\[50px\\] {\n margin-bottom: 50px;\n }\n .mb-\\[52px\\] {\n margin-bottom: 52px;\n }\n .mb-\\[150px\\] {\n margin-bottom: 150px;\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .table {\n display: table;\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-\\[79px\\] {\n height: 79px;\n }\n .h-\\[284px\\] {\n height: 284px;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[var\\(--a4-height\\)\\] {\n height: var(--a4-height);\n }\n .h-\\[var\\(--a4-height-with-padding\\)\\] {\n height: var(--a4-height-with-padding);\n }\n .h-full {\n height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-1\\/4 {\n width: calc(1/4 * 100%);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-\\[79px\\] {\n width: 79px;\n }\n .w-\\[400px\\] {\n width: 400px;\n }\n .w-\\[414px\\] {\n width: 414px;\n }\n .w-\\[490px\\] {\n width: 490px;\n }\n .w-\\[651px\\] {\n width: 651px;\n }\n .w-\\[var\\(--a4-width\\)\\] {\n width: var(--a4-width);\n }\n .w-\\[var\\(--a4-width-with-padding\\)\\] {\n width: var(--a4-width-with-padding);\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[582px\\] {\n max-width: 582px;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-auto {\n flex: auto;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .resize {\n resize: both;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .space-y-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#737373\\] {\n border-color: #737373;\n }\n .border-\\[\\#DC2626\\] {\n border-color: #DC2626;\n }\n .border-\\[\\#e5e5e5\\] {\n border-color: #e5e5e5;\n }\n .border-\\[\\#fff\\] {\n border-color: #fff;\n }\n .border-black {\n border-color: var(--color-black);\n }\n .border-gray-700 {\n border-color: var(--color-gray-700);\n }\n .bg-\\[\\#4A3AFF\\] {\n background-color: #4A3AFF;\n }\n .bg-\\[\\#737373\\] {\n background-color: #737373;\n }\n .bg-\\[\\#DC2626\\] {\n background-color: #DC2626;\n }\n .bg-\\[\\#F5F5F5\\] {\n background-color: #F5F5F5;\n }\n .bg-\\[\\#FEF2F2\\] {\n background-color: #FEF2F2;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-cyan-600 {\n background-color: var(--color-cyan-600);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .object-cover {\n object-fit: cover;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-\\[10px\\] {\n padding: 10px;\n }\n .p-\\[21px\\] {\n padding: 21px;\n }\n .px-\\[5px\\] {\n padding-inline: 5px;\n }\n .px-\\[14px\\] {\n padding-inline: 14px;\n }\n .px-\\[85px\\] {\n padding-inline: 85px;\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .pt-\\[15px\\] {\n padding-top: 15px;\n }\n .pt-\\[102px\\] {\n padding-top: 102px;\n }\n .pt-\\[123px\\] {\n padding-top: 123px;\n }\n .pb-\\[177px\\] {\n padding-bottom: 177px;\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .indent-8 {\n text-indent: calc(var(--spacing) * 8);\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-\\[13px\\] {\n font-size: 13px;\n }\n .text-\\[18\\.5px\\] {\n font-size: 18.5px;\n }\n .text-\\[18px\\] {\n font-size: 18px;\n }\n .text-\\[21px\\] {\n font-size: 21px;\n }\n .text-\\[24px\\] {\n font-size: 24px;\n }\n .text-\\[31px\\] {\n font-size: 31px;\n }\n .text-\\[40px\\] {\n font-size: 40px;\n }\n .text-\\[42px\\] {\n font-size: 42px;\n }\n .text-\\[48px\\] {\n font-size: 48px;\n }\n .text-\\[52px\\] {\n font-size: 52px;\n }\n .text-\\[94px\\] {\n font-size: 94px;\n }\n .text-\\[126px\\] {\n font-size: 126px;\n }\n .leading-\\[1\\.2\\] {\n --tw-leading: 1.2;\n line-height: 1.2;\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[48px\\] {\n --tw-leading: 48px;\n line-height: 48px;\n }\n .leading-\\[149px\\] {\n --tw-leading: 149px;\n line-height: 149px;\n }\n .leading-\\[150\\%\\] {\n --tw-leading: 150%;\n line-height: 150%;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-\\[0\\.74px\\] {\n --tw-tracking: 0.74px;\n letter-spacing: 0.74px;\n }\n .tracking-\\[0\\.529px\\] {\n --tw-tracking: 0.529px;\n letter-spacing: 0.529px;\n }\n .tracking-\\[0\\.634px\\] {\n --tw-tracking: 0.634px;\n letter-spacing: 0.634px;\n }\n .text-\\[\\#0a0a0a\\] {\n color: #0a0a0a;\n }\n .text-\\[\\#000\\] {\n color: #000;\n }\n .text-\\[\\#737373\\] {\n color: #737373;\n }\n .text-\\[\\#DC2626\\] {\n color: #DC2626;\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-55 {\n opacity: 55%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n}\n:root {\n --a4-width: 795px;\n --a4-height: 1123px;\n --a4-width-with-padding: 669px;\n --a4-height-with-padding: 827px;\n}\nhtml {\n font-size: 16px;\n}\nbody {\n margin: calc(var(--spacing) * 0);\n font-family: "source-han-serif-cn-subset", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.5;\n}\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;\n}\n.indentP {\n margin-block: calc(var(--spacing) * 4);\n text-indent: calc(var(--spacing) * 8);\n}\n.section-sub-header {\n font-size: 18px;\n font-weight: 700;\n line-height: 150%;\n}\n.chapterCoverDimension {\n width: var(--a4-width);\n height: 1040px;\n}\n.chapterPage {\n margin-inline: auto;\n box-sizing: border-box;\n width: var(--a4-width-with-padding);\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n}\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ease {\n syntax: "*";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n';
|
|
1036
|
+
const style = '/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji",\n "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono",\n "Courier New", monospace;\n --color-cyan-600: oklch(60.9% 0.126 221.723);\n --color-cyan-700: oklch(52% 0.105 223.128);\n --color-gray-700: oklch(37.3% 0.034 259.733);\n --color-gray-800: oklch(27.8% 0.033 256.848);\n --color-gray-900: oklch(21% 0.034 264.665);\n --color-black: #000;\n --color-white: #fff;\n --spacing: 0.25rem;\n --text-base: 1rem;\n --text-base--line-height: calc(1.5 / 1);\n --text-xl: 1.25rem;\n --text-xl--line-height: calc(1.75 / 1.25);\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --radius-sm: 0.25rem;\n --radius-lg: 0.5rem;\n --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n --default-transition-duration: 150ms;\n --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden="until-found"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n .visible {\n visibility: visible;\n }\n .absolute {\n position: absolute;\n }\n .fixed {\n position: fixed;\n }\n .relative {\n position: relative;\n }\n .top-0 {\n top: calc(var(--spacing) * 0);\n }\n .right-0 {\n right: calc(var(--spacing) * 0);\n }\n .bottom-0 {\n bottom: calc(var(--spacing) * 0);\n }\n .left-0 {\n left: calc(var(--spacing) * 0);\n }\n .z-0 {\n z-index: 0;\n }\n .z-50 {\n z-index: 50;\n }\n .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n .mx-auto {\n margin-inline: auto;\n }\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\n }\n .my-8 {\n margin-block: calc(var(--spacing) * 8);\n }\n .my-10 {\n margin-block: calc(var(--spacing) * 10);\n }\n .my-11 {\n margin-block: calc(var(--spacing) * 11);\n }\n .mt-1 {\n margin-top: calc(var(--spacing) * 1);\n }\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n .mr-\\[10px\\] {\n margin-right: 10px;\n }\n .mb-1 {\n margin-bottom: calc(var(--spacing) * 1);\n }\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n .mb-7 {\n margin-bottom: calc(var(--spacing) * 7);\n }\n .mb-10 {\n margin-bottom: calc(var(--spacing) * 10);\n }\n .mb-\\[5px\\] {\n margin-bottom: 5px;\n }\n .mb-\\[21px\\] {\n margin-bottom: 21px;\n }\n .mb-\\[31px\\] {\n margin-bottom: 31px;\n }\n .mb-\\[48px\\] {\n margin-bottom: 48px;\n }\n .mb-\\[50px\\] {\n margin-bottom: 50px;\n }\n .mb-\\[52px\\] {\n margin-bottom: 52px;\n }\n .mb-\\[150px\\] {\n margin-bottom: 150px;\n }\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n .block {\n display: block;\n }\n .contents {\n display: contents;\n }\n .flex {\n display: flex;\n }\n .grid {\n display: grid;\n }\n .table {\n display: table;\n }\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n .h-\\[79px\\] {\n height: 79px;\n }\n .h-\\[284px\\] {\n height: 284px;\n }\n .h-\\[300px\\] {\n height: 300px;\n }\n .h-\\[var\\(--a4-height\\)\\] {\n height: var(--a4-height);\n }\n .h-\\[var\\(--a4-height-with-padding\\)\\] {\n height: var(--a4-height-with-padding);\n }\n .h-full {\n height: 100%;\n }\n .min-h-screen {\n min-height: 100vh;\n }\n .w-1 {\n width: calc(var(--spacing) * 1);\n }\n .w-1\\/4 {\n width: calc(1/4 * 100%);\n }\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n .w-80 {\n width: calc(var(--spacing) * 80);\n }\n .w-\\[79px\\] {\n width: 79px;\n }\n .w-\\[400px\\] {\n width: 400px;\n }\n .w-\\[414px\\] {\n width: 414px;\n }\n .w-\\[490px\\] {\n width: 490px;\n }\n .w-\\[651px\\] {\n width: 651px;\n }\n .w-\\[var\\(--a4-width\\)\\] {\n width: var(--a4-width);\n }\n .w-\\[var\\(--a4-width-with-padding\\)\\] {\n width: var(--a4-width-with-padding);\n }\n .w-full {\n width: 100%;\n }\n .max-w-\\[582px\\] {\n max-width: 582px;\n }\n .flex-1 {\n flex: 1;\n }\n .flex-auto {\n flex: auto;\n }\n .flex-shrink {\n flex-shrink: 1;\n }\n .shrink-0 {\n flex-shrink: 0;\n }\n .border-collapse {\n border-collapse: collapse;\n }\n .-translate-x-full {\n --tw-translate-x: -100%;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .translate-x-0 {\n --tw-translate-x: calc(var(--spacing) * 0);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .transform {\n transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,);\n }\n .resize {\n resize: both;\n }\n .list-decimal {\n list-style-type: decimal;\n }\n .list-disc {\n list-style-type: disc;\n }\n .break-inside-avoid {\n break-inside: avoid;\n }\n .flex-col {\n flex-direction: column;\n }\n .flex-wrap {\n flex-wrap: wrap;\n }\n .items-center {\n align-items: center;\n }\n .justify-between {\n justify-content: space-between;\n }\n .justify-center {\n justify-content: center;\n }\n .justify-end {\n justify-content: flex-end;\n }\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n .space-y-5 {\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)));\n }\n }\n .space-x-2 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .space-x-2\\.5 {\n :where(& > :not(:last-child)) {\n --tw-space-x-reverse: 0;\n margin-inline-start: calc(calc(var(--spacing) * 2.5) * var(--tw-space-x-reverse));\n margin-inline-end: calc(calc(var(--spacing) * 2.5) * calc(1 - var(--tw-space-x-reverse)));\n }\n }\n .overflow-y-auto {\n overflow-y: auto;\n }\n .rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .border-\\[\\#737373\\] {\n border-color: #737373;\n }\n .border-\\[\\#DC2626\\] {\n border-color: #DC2626;\n }\n .border-\\[\\#e5e5e5\\] {\n border-color: #e5e5e5;\n }\n .border-\\[\\#fff\\] {\n border-color: #fff;\n }\n .border-black {\n border-color: var(--color-black);\n }\n .border-gray-700 {\n border-color: var(--color-gray-700);\n }\n .bg-\\[\\#4A3AFF\\] {\n background-color: #4A3AFF;\n }\n .bg-\\[\\#737373\\] {\n background-color: #737373;\n }\n .bg-\\[\\#DC2626\\] {\n background-color: #DC2626;\n }\n .bg-\\[\\#F5F5F5\\] {\n background-color: #F5F5F5;\n }\n .bg-\\[\\#FEF2F2\\] {\n background-color: #FEF2F2;\n }\n .bg-black {\n background-color: var(--color-black);\n }\n .bg-cyan-600 {\n background-color: var(--color-cyan-600);\n }\n .bg-gray-800 {\n background-color: var(--color-gray-800);\n }\n .bg-gray-900 {\n background-color: var(--color-gray-900);\n }\n .bg-white {\n background-color: var(--color-white);\n }\n .object-cover {\n object-fit: cover;\n }\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n .p-\\[10px\\] {\n padding: 10px;\n }\n .p-\\[21px\\] {\n padding: 21px;\n }\n .px-\\[5px\\] {\n padding-inline: 5px;\n }\n .px-\\[14px\\] {\n padding-inline: 14px;\n }\n .px-\\[85px\\] {\n padding-inline: 85px;\n }\n .py-1 {\n padding-block: calc(var(--spacing) * 1);\n }\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n .pt-\\[15px\\] {\n padding-top: 15px;\n }\n .pt-\\[102px\\] {\n padding-top: 102px;\n }\n .pt-\\[123px\\] {\n padding-top: 123px;\n }\n .pb-\\[177px\\] {\n padding-bottom: 177px;\n }\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n .pl-8 {\n padding-left: calc(var(--spacing) * 8);\n }\n .text-center {\n text-align: center;\n }\n .indent-8 {\n text-indent: calc(var(--spacing) * 8);\n }\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n .text-\\[13px\\] {\n font-size: 13px;\n }\n .text-\\[18\\.5px\\] {\n font-size: 18.5px;\n }\n .text-\\[18px\\] {\n font-size: 18px;\n }\n .text-\\[21px\\] {\n font-size: 21px;\n }\n .text-\\[24px\\] {\n font-size: 24px;\n }\n .text-\\[31px\\] {\n font-size: 31px;\n }\n .text-\\[40px\\] {\n font-size: 40px;\n }\n .text-\\[42px\\] {\n font-size: 42px;\n }\n .text-\\[48px\\] {\n font-size: 48px;\n }\n .text-\\[52px\\] {\n font-size: 52px;\n }\n .text-\\[94px\\] {\n font-size: 94px;\n }\n .text-\\[126px\\] {\n font-size: 126px;\n }\n .leading-\\[1\\.2\\] {\n --tw-leading: 1.2;\n line-height: 1.2;\n }\n .leading-\\[1\\.5\\] {\n --tw-leading: 1.5;\n line-height: 1.5;\n }\n .leading-\\[48px\\] {\n --tw-leading: 48px;\n line-height: 48px;\n }\n .leading-\\[149px\\] {\n --tw-leading: 149px;\n line-height: 149px;\n }\n .leading-\\[150\\%\\] {\n --tw-leading: 150%;\n line-height: 150%;\n }\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\n }\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n .tracking-\\[0\\.74px\\] {\n --tw-tracking: 0.74px;\n letter-spacing: 0.74px;\n }\n .tracking-\\[0\\.529px\\] {\n --tw-tracking: 0.529px;\n letter-spacing: 0.529px;\n }\n .tracking-\\[0\\.634px\\] {\n --tw-tracking: 0.634px;\n letter-spacing: 0.634px;\n }\n .text-\\[\\#0a0a0a\\] {\n color: #0a0a0a;\n }\n .text-\\[\\#000\\] {\n color: #000;\n }\n .text-\\[\\#737373\\] {\n color: #737373;\n }\n .text-\\[\\#DC2626\\] {\n color: #DC2626;\n }\n .text-white {\n color: var(--color-white);\n }\n .underline {\n text-decoration-line: underline;\n }\n .opacity-20 {\n opacity: 20%;\n }\n .opacity-50 {\n opacity: 50%;\n }\n .opacity-55 {\n opacity: 55%;\n }\n .opacity-80 {\n opacity: 80%;\n }\n .shadow-2xl {\n --tw-shadow: 0 25px 50px -12px var(--tw-shadow-color, rgb(0 0 0 / 0.25));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n .duration-300 {\n --tw-duration: 300ms;\n transition-duration: 300ms;\n }\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n}\n:root {\n --a4-width: 795px;\n --a4-height: 1123px;\n --a4-width-with-padding: 669px;\n --a4-height-with-padding: 827px;\n}\nhtml {\n font-size: 16px;\n}\nbody {\n margin: calc(var(--spacing) * 0);\n font-family: "source-han-serif-cn-subset", sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.5;\n}\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;\n}\n.indentP {\n margin-block: calc(var(--spacing) * 4);\n text-indent: calc(var(--spacing) * 8);\n}\n.section-sub-header {\n font-size: 18px;\n font-weight: 700;\n line-height: 150%;\n}\n.chapterCoverDimension {\n width: var(--a4-width);\n height: 1040px;\n}\n.chapterPage {\n margin-inline: auto;\n box-sizing: border-box;\n width: var(--a4-width-with-padding);\n :where(& > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)));\n }\n}\n@property --tw-translate-x {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-rotate-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-rotate-z {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-x {\n syntax: "*";\n inherits: false;\n}\n@property --tw-skew-y {\n syntax: "*";\n inherits: false;\n}\n@property --tw-space-y-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-space-x-reverse {\n syntax: "*";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: "*";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: "*";\n inherits: false;\n}\n@property --tw-tracking {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: "<percentage>";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: "*";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: "<length>";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: "*";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: "*";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: "*";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: "*";\n inherits: false;\n}\n@property --tw-ease {\n syntax: "*";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-space-y-reverse: 0;\n --tw-space-x-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n';
|
|
1016
1037
|
const generateData$a = (rawData) => {
|
|
1017
1038
|
const categoryData = [];
|
|
1018
1039
|
const values2 = [];
|
|
@@ -2686,6 +2707,33 @@ async function generatePDFWithDifferentHeaders(params) {
|
|
|
2686
2707
|
}
|
|
2687
2708
|
return outputPath;
|
|
2688
2709
|
}
|
|
2710
|
+
const logger = winston.createLogger({
|
|
2711
|
+
level: "info",
|
|
2712
|
+
format: winston.format.json(),
|
|
2713
|
+
defaultMeta: { service: "user-service" },
|
|
2714
|
+
transports: [
|
|
2715
|
+
//
|
|
2716
|
+
// - Write all logs with importance level of `error` or higher to `error.log`
|
|
2717
|
+
// (i.e., error, fatal, but not other levels)
|
|
2718
|
+
//
|
|
2719
|
+
new winston.transports.File({
|
|
2720
|
+
filename: "loggererror.log",
|
|
2721
|
+
level: "error"
|
|
2722
|
+
}),
|
|
2723
|
+
//
|
|
2724
|
+
// - Write all logs with importance level of `info` or higher to `combined.log`
|
|
2725
|
+
// (i.e., fatal, error, warn, and info, but not trace)
|
|
2726
|
+
//
|
|
2727
|
+
new winston.transports.File({ filename: "logercombined.log" })
|
|
2728
|
+
]
|
|
2729
|
+
});
|
|
2730
|
+
if (process.env.NODE_ENV !== "production") {
|
|
2731
|
+
logger.add(
|
|
2732
|
+
new winston.transports.Console({
|
|
2733
|
+
format: winston.format.simple()
|
|
2734
|
+
})
|
|
2735
|
+
);
|
|
2736
|
+
}
|
|
2689
2737
|
const tool = {
|
|
2690
2738
|
name: "generate_finance_pdf",
|
|
2691
2739
|
description: "通过股票数据,生成pdf",
|
|
@@ -2693,6 +2741,7 @@ const tool = {
|
|
|
2693
2741
|
};
|
|
2694
2742
|
const toolHandler = async (args) => {
|
|
2695
2743
|
try {
|
|
2744
|
+
logger.info(`start: ${(/* @__PURE__ */ new Date()).getTime()}`);
|
|
2696
2745
|
const kline_daily2 = await getJsonDataIfExists(args.kline_data_path, []);
|
|
2697
2746
|
const resp = generatePdfHtml({ ...args, kline_daily: kline_daily2 });
|
|
2698
2747
|
const pdfUrl = await generatePDFWithDifferentHeaders({
|
|
@@ -2701,6 +2750,7 @@ const toolHandler = async (args) => {
|
|
|
2701
2750
|
headerSubTitle: "宁德时代(300750.SZ)- 技术指标分析报告",
|
|
2702
2751
|
footerTitle: "本报告由 Wujie Agent 生成"
|
|
2703
2752
|
});
|
|
2753
|
+
logger.info(`end: ${(/* @__PURE__ */ new Date()).getTime()}`);
|
|
2704
2754
|
return {
|
|
2705
2755
|
content: [
|
|
2706
2756
|
{
|