@litfamily/litgrok 1.0.14 → 1.0.15
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/.grok/rules/00-litgrok.md +1 -1
- package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +0 -5
- package/.grok/skills/frontend-ui-ux/references/slop-register.md +4 -4
- package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +1 -1
- package/.grok/skills/lit-docx/SKILL.md +59 -11
- package/.grok/skills/lit-docx/examples/01-report-ko.md +137 -0
- package/.grok/skills/lit-docx/examples/02-brief-ko.md +82 -0
- package/.grok/skills/lit-docx/examples/03-manual-ko.md +118 -0
- package/.grok/skills/lit-docx/examples/04-proposal-ko.md +92 -0
- package/.grok/skills/lit-docx/examples/05-memo-en.md +42 -0
- package/.grok/skills/lit-docx/examples/06-journal-en.md +90 -0
- package/.grok/skills/lit-docx/examples/07-report-en.md +103 -0
- package/.grok/skills/lit-docx/examples/08-proposal-en.md +90 -0
- package/.grok/skills/lit-docx/examples/09-memo-ko.md +41 -0
- package/.grok/skills/lit-docx/references/components.md +151 -0
- package/.grok/skills/lit-docx/references/direction-step.md +129 -0
- package/.grok/skills/lit-docx/references/page-composition.md +129 -0
- package/.grok/skills/lit-docx/references/tonalities/brief.md +98 -0
- package/.grok/skills/lit-docx/references/tonalities/journal.md +100 -0
- package/.grok/skills/lit-docx/references/tonalities/manual.md +107 -0
- package/.grok/skills/lit-docx/references/tonalities/memo.md +95 -0
- package/.grok/skills/lit-docx/references/tonalities/proposal.md +105 -0
- package/.grok/skills/lit-docx/references/tonalities/report.md +114 -0
- package/.grok/skills/lit-docx/scripts/convert_md_to_docx.py +394 -51
- package/.grok/skills/lit-docx/scripts/docx_design.py +2446 -0
- package/.grok/skills/lit-docx/scripts/docx_gate.py +203 -0
- package/.grok/skills/lit-docx/scripts/docx_layout.py +959 -0
- package/.grok/skills/lit-docx/scripts/run.mjs +3 -2
- package/.grok/skills/lit-docx/scripts/slop_lint.py +63 -17
- package/.grok/skills/lit-docx/templates/tonalities/brief.yaml +29 -0
- package/.grok/skills/lit-docx/templates/tonalities/journal.yaml +26 -0
- package/.grok/skills/lit-docx/templates/tonalities/manual.yaml +27 -0
- package/.grok/skills/lit-docx/templates/tonalities/memo.yaml +27 -0
- package/.grok/skills/lit-docx/templates/tonalities/proposal.yaml +27 -0
- package/.grok/skills/lit-docx/templates/tonalities/report.yaml +27 -0
- package/.grok/skills/lit-pptx/NOTICE.md +1 -1
- package/.grok/skills/lit-pptx/SKILL.md +70 -14
- package/.grok/skills/lit-pptx/agents/analyst.md +1 -1
- package/.grok/skills/lit-pptx/agents/thesis.md +2 -2
- package/.grok/skills/lit-pptx/examples/01-pitch-signal-ko.md +175 -0
- package/.grok/skills/lit-pptx/examples/02-business-review-ledger-ko.md +199 -0
- package/.grok/skills/lit-pptx/examples/03-research-talk-paper-en.md +177 -0
- package/.grok/skills/lit-pptx/examples/04-lecture-chalk-ko.md +176 -0
- package/.grok/skills/lit-pptx/examples/05-data-review-night-en.md +221 -0
- package/.grok/skills/lit-pptx/examples/06-image-led-atlas-en.md +143 -0
- package/.grok/skills/lit-pptx/examples/07-briefing-gazette-ko.md +192 -0
- package/.grok/skills/lit-pptx/examples/08-status-update-ledger-en.md +168 -0
- package/.grok/skills/lit-pptx/examples/09-pitch-studio-en.md +157 -0
- package/.grok/skills/lit-pptx/examples/10-image-led-studio-ko.md +175 -0
- package/.grok/skills/lit-pptx/examples/11-business-review-night-en.md +181 -0
- package/.grok/skills/lit-pptx/examples/12-status-update-gazette-ko.md +199 -0
- package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Bold.otf +0 -0
- package/.grok/skills/lit-pptx/pretendard-font/public/static/Pretendard-Regular.otf +0 -0
- package/.grok/skills/lit-pptx/references/density-and-fill.md +155 -0
- package/.grok/skills/lit-pptx/references/direction-step.md +211 -0
- package/.grok/skills/lit-pptx/references/layout-families.md +193 -0
- package/.grok/skills/lit-pptx/references/title-treatments.md +134 -0
- package/.grok/skills/lit-pptx/references/tonalities/atlas.md +124 -0
- package/.grok/skills/lit-pptx/references/tonalities/chalk.md +135 -0
- package/.grok/skills/lit-pptx/references/tonalities/gazette.md +127 -0
- package/.grok/skills/lit-pptx/references/tonalities/ledger.md +134 -0
- package/.grok/skills/lit-pptx/references/tonalities/night.md +132 -0
- package/.grok/skills/lit-pptx/references/tonalities/paper.md +127 -0
- package/.grok/skills/lit-pptx/references/tonalities/signal.md +118 -0
- package/.grok/skills/lit-pptx/references/tonalities/studio.md +123 -0
- package/.grok/skills/lit-pptx/scripts/compile-deck.js +65 -17
- package/.grok/skills/lit-pptx/scripts/craft_extras.py +82 -18
- package/.grok/skills/lit-pptx/scripts/deck_output.py +598 -0
- package/.grok/skills/lit-pptx/scripts/embed_fonts.py +1 -1
- package/.grok/skills/lit-pptx/scripts/inventory.py +6 -2
- package/.grok/skills/lit-pptx/scripts/lib/directive-parser.js +2 -2
- package/.grok/skills/lit-pptx/scripts/lib/grid-resolver.js +521 -0
- package/.grok/skills/lit-pptx/scripts/lib/layout-resolver.js +401 -16
- package/.grok/skills/lit-pptx/scripts/lib/markdown-loader.js +6 -4
- package/.grok/skills/lit-pptx/scripts/lib/render-adapter-html.js +2 -2
- package/.grok/skills/lit-pptx/scripts/lib/render-adapter-pptx.js +500 -126
- package/.grok/skills/lit-pptx/scripts/lib/render-pack.js +3558 -0
- package/.grok/skills/lit-pptx/scripts/lib/slide-ast.js +54 -6
- package/.grok/skills/lit-pptx/scripts/lib/template-registry.js +335 -11
- package/.grok/skills/lit-pptx/scripts/qa_deck.py +43 -10
- package/.grok/skills/lit-pptx/scripts/run.mjs +3 -2
- package/.grok/skills/lit-pptx/scripts/validate_pptx.py +17 -5
- package/.grok/skills/lit-pptx/templates/boilerplate_professional.css +6 -6
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/layout-mapping.yaml +1 -1
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-A2Z/template.yaml +4 -1
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/layout-mapping.yaml +1 -1
- package/.grok/skills/lit-pptx/templates/enrolled/AZURE-PRO/template.yaml +4 -1
- package/.grok/skills/lit-pptx/templates/tonalities/atlas/pack.yaml +99 -0
- package/.grok/skills/lit-pptx/templates/tonalities/chalk/pack.yaml +104 -0
- package/.grok/skills/lit-pptx/templates/tonalities/gazette/pack.yaml +99 -0
- package/.grok/skills/lit-pptx/templates/tonalities/ledger/pack.yaml +100 -0
- package/.grok/skills/lit-pptx/templates/tonalities/night/pack.yaml +100 -0
- package/.grok/skills/lit-pptx/templates/tonalities/paper/pack.yaml +105 -0
- package/.grok/skills/lit-pptx/templates/tonalities/signal/pack.yaml +101 -0
- package/.grok/skills/lit-pptx/templates/tonalities/studio/pack.yaml +99 -0
- package/.grok/skills/lit-typographic-motion/THIRD_PARTY_NOTICES +1 -1
- package/.grok/skills/lit-typographic-motion/fonts/pins.json +6 -6
- package/.grok/skills/lit-typographic-motion/references/runtime.md +1 -1
- package/.grok/skills/lit-typographic-motion/references/style-bible.md +2 -2
- package/.grok/skills/lit-typographic-motion/references/type-craft.md +2 -2
- package/.grok/skills/lit-typographic-motion/scripts/lib/gate.mjs +1 -1
- package/.grok/skills/litgrok/SKILL.md +1 -1
- package/.grok-plugin/plugin.json +1 -1
- package/CHANGELOG.md +7 -0
- package/README.md +9 -9
- package/README_ko-KR.md +9 -9
- package/docs/assets/readme/badge-version.svg +1 -1
- package/docs/reference.md +1 -1
- package/docs/reference_ko-KR.md +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/.grok/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Bold.otf +0 -0
- package/.grok/skills/lit-pptx/pretendard-font/public/static/PretendardGOV-Regular.otf +0 -0
|
@@ -121,7 +121,7 @@ Film commands, run from the skill root:
|
|
|
121
121
|
|
|
122
122
|
## Office output selection
|
|
123
123
|
|
|
124
|
-
For an authorized bare `lit` request, choose `lit-docx` when the task asks for a report, doc, docx, Word, 보고서, 리포트, 기획서, 제안서, 문서, or 워드. Choose `lit-pptx` when it asks for slides, deck, presentation, PPT, pptx, 발표자료, 발표, 슬라이드, 덱, or 피피티. If both groups occur, use both skills and keep Markdown source next to both final files. This applies to the task's intent, not stray quoted words or file contents. Under `lit`,
|
|
124
|
+
For an authorized bare `lit` request, choose `lit-docx` when the task asks for a report, doc, docx, Word, 보고서, 리포트, 기획서, 제안서, 문서, or 워드. Choose `lit-pptx` when it asks for slides, deck, presentation, PPT, pptx, 발표자료, 발표, 슬라이드, 덱, or 피피티. If both groups occur, use both skills and keep Markdown source next to both final files. This applies to the task's intent, not stray quoted words or file contents. Under `lit`, each skill picks its design direction itself (a deck tonality or a document tonality, with Pretendard) and names it with two alternatives in the reply; a named template, tonality, publisher or font from the user wins; do not ask theme or font preference questions for a clear request. Grok's model selection of skills is advisory; verify it in a live host run, and never claim a hook deterministically routed the prompt.
|
|
125
125
|
When a bare `lit` Office request gives no facts, still deliver the complete file. Use a plausible example and mark every invented name and figure as sample or assumption in the file and reply. Never leave bracketed blanks. Do not present sample values as sourced results. An explicit non-lit request may ask for missing facts.
|
|
126
126
|
|
|
127
127
|
## Interface modes
|
|
@@ -13,11 +13,6 @@ No upstream scripts, templates, CLI, installers, manifests, screenshots, preview
|
|
|
13
13
|
documentation, premium features, host integrations, code-example columns,
|
|
14
14
|
documentation-URL columns, or google-fonts.csv data are included.
|
|
15
15
|
|
|
16
|
-
The craft-floor and slop-register mechanisms were independently re-expressed
|
|
17
|
-
after studying pbakaus/impeccable (https://github.com/pbakaus/impeccable), by
|
|
18
|
-
Paul Bakaus, Apache License 2.0, upstream commit 9d715cc. Its source files,
|
|
19
|
-
prose, and fixtures are not included.
|
|
20
|
-
|
|
21
16
|
The modes, review format, and routing guidance were independently re-expressed
|
|
22
17
|
after studying jakubkrehel/skills (https://github.com/jakubkrehel/skills),
|
|
23
18
|
Copyright (c) 2026 Jakub Krehel, MIT License, upstream commit 267330e.
|
|
@@ -24,7 +24,7 @@ When a row fires, remove the unnecessary element first, use a native platform co
|
|
|
24
24
|
| SLOP-016 | **Reflex default sans font** (DET-assist, JUDG verdict): DET-assist: the first family in the resolved `getComputedStyle(el).fontFamily` stack that actually loaded (never any fallback family further down the stack; or an `@font-face`/Google-Fonts URL in `document.styleSheets`) matches a fixed common-default list, **excluding Geist / Geist Sans / Geist Mono** — the current corpus names Geist as its own recommended first alternative to Inter (§4.1), so this row cannot also ban it without reconciling that. JUDG: is there a declared design-token rationale for keeping a matched font (Inter/system-ui in particular are used by many acclaimed, legible real products, not only as a lazy default)? | any match on the fixed list (Geist family excepted) AND JUDG finds no declared rationale | MEDIUM | Pick a less common face tied to the product's own voice, or state why the common one was kept (correct) |
|
|
25
25
|
| SLOP-017 | **Serif reached for without a stated reason** (DET-assist, JUDG verdict): DET: heading font-family matches a fixed banned-serif shortlist. JUDG: is there a one-line stated rationale tying this serif to this brand? | any match on the shortlist AND no rationale recorded | MEDIUM | Switch to a sans display face, or keep the serif only with a recorded rationale (correct) |
|
|
26
26
|
| SLOP-018 | **Giant headline over a weak tiny subhead** (DET-assist, JUDG verdict): DET-assist: ratio of heading computed font-size to its adjacent subhead font-size. JUDG: does the small text actually read as an afterthought, or as a deliberate eyebrow/caption doing its intended job? | ratio ≥ ~3.5 with subhead below ~14px, AND JUDG confirms it reads as an afterthought | MEDIUM | Raise the subhead's role in the scale or shorten the headline pairing (correct) |
|
|
27
|
-
| SLOP-019 | **Too many type moods on one page** (DET): Count of distinct computed `font-family` values across the document (base family only, ignoring fallbacks), excluding any family that resolves only on elements matching a known icon-font signature (single-glyph text content, `aria-hidden="true"`, or a recognized icon-font class/family name) | > 3 distinct families, icon fonts excluded. Chosen over
|
|
27
|
+
| SLOP-019 | **Too many type moods on one page** (DET): Count of distinct computed `font-family` values across the document (base family only, ignoring fallbacks), excluding any family that resolves only on elements matching a known icon-font signature (single-glyph text content, `aria-hidden="true"`, or a recognized icon-font class/family name) | > 3 distinct families, icon fonts excluded. Chosen over the stricter one-family "distill" ceiling of an earlier reference catalogue because distill is a deliberate reduction workflow, not a general craft floor; krehel's general guidance ("rarely use more than three") is used instead | MEDIUM | Cut back to the stated ceiling for the page (delete) |
|
|
28
28
|
| SLOP-020 | **Lazy all-caps overuse** (DET): `text-transform: uppercase` measured per rendered leaf text node (not per ancestor merely carrying the CSS property, which over-counts when e.g. a `nav ul` wrapper applies it to several short labels at once), skipped when the matched text is > 50% non-cased script (CJK/Hangul), since the transform has no visual "shouting" effect there | leaf text length > ~40 chars under `text-transform: uppercase`, majority-cased-script text only | LOW | Reserve uppercase for short labels only; sentence-case the rest (correct) |
|
|
29
29
|
| SLOP-021 | **Washed-out gray secondary text on a colored surface** (DET): Text lightness is 40–70% AND saturation < 10% (targets genuine mid-gray only; explicitly excludes near-white text at L > 90% and near-black text at L < 10%, both standard, correct, accessible choices of text color on a colored surface), while its containing scope's background is chromatic (saturation clearly above the text's), same tag/branch | text L 40–70%, S < 10%, background chromatic | MEDIUM (cross-ref **CF-201** — craft floor owns the canonical contrast-floor check this overlaps; kept here for the reflex-default pattern itself) | Tint the secondary text from the surface's own hue instead of plain gray (correct) |
|
|
30
30
|
| SLOP-022 | **More than one accent hue competing per screen** (JUDG, DET-assist): DET-assist: histogram of high-saturation hues, sampled only from filled background surfaces ≥ 24×24px (buttons/chips/blocks) — not text or border color, which conflates decorative accents with thin status underlines — and excluding any element carrying a recognized status/semantic role (`role="status"`, `aria-invalid`, a matched success/warning/error/info class, or a small badge/pill shape), since necessary status color-coding is not a competing decorative accent; flag > 1 distinct remaining hue family | > 1 accent hue family, fill-surfaces ≥ 24×24px only, status colors excluded | MEDIUM (cross-ref **CF-205** — craft floor owns the canonical one-accent-per-view threshold and the identical filled-surface/status-role-excluded histogram method; this row restates the same finding as a genericness signal, see Section C's CF-205 catalogue entry for the executable algorithm) | Pick one accent per view and demote the rest to neutral (correct) |
|
|
@@ -35,7 +35,7 @@ When a row fires, remove the unnecessary element first, use a native platform co
|
|
|
35
35
|
| SLOP-027 | **Decorative infinite pulse/blink with no bound state** (DET): Keyframe loop (`animation-iteration-count: infinite`) on an opacity/shadow property, element has none of: a `data-state`/other `data-*` attribute, `aria-busy="true"`, or a recognized skeleton/shimmer/loading class name (the standard loading-skeleton pattern is real and bound, but typically expressed via one of the latter two rather than `data-state` specifically) | presence, no bound-state signal of any of the above kinds | LOW | Remove, or slow it and bind it to the real status it claims to show (delete) |
|
|
36
36
|
| SLOP-028 | **Motion fired on every routine, high-frequency interaction** (JUDG, DET-assist): DET-assist: count animated-transition bindings, restricted to a fixed, inherently-high-frequency selector set (`:hover` transitions, list-item/row transitions, per-item scroll/re-render transitions) as the operational proxy for "fires often" — live session-frequency isn't observable from a single-pass DOM probe | transition duration > ~150ms on a selector in the fixed high-frequency set | LOW (cross-ref **CF-506** — craft floor's ≤150ms high-frequency ceiling is the same threshold, scoped to a repeated-selector/scrollable-container gate) | Make the routine case instant or ≤150ms; save longer motion for rare, meaningful moments (correct) |
|
|
37
37
|
| SLOP-029 | **Eyebrow/kicker label templated above most headings** (DET): Count eyebrow labels: the previous visible element sibling of an h1–h3 that has ≤ 4 words, an uppercase transform or all-caps Latin text, letter-spacing ≥ 0.05em, and a font-size ≤ 0.75× the heading's — counting only elements actually rendered at the current breakpoint (`visible()`) — excludes a hidden responsive-duplicate nav mirror or a currently-collapsed accordion panel from double-counting | count > ceil(sectionCount / 3), where sectionCount = the number of visible h2; visible elements only | MEDIUM (Delta 1: a genericness tell is at most MEDIUM) | Drop the eyebrow; the heading and the section's place on the page already carry the context (delete) |
|
|
38
|
-
| SLOP-030 | **Section numbering used as decoration** (DET-assist, JUDG verdict): DET: regex match of a zero-padded numeric section/tile label prefix, min. 2 distinct index values (
|
|
38
|
+
| SLOP-030 | **Section numbering used as decoration** (DET-assist, JUDG verdict): DET: regex match of a zero-padded numeric section/tile label prefix, min. 2 distinct index values (the narrower numeric-index-beside-heading coverage). JUDG: does the sequence carry real, meaningful process information (onboarding steps, checkout stages) rather than decorative counting? | any match, ≥ 2 distinct index values, AND JUDG finds no real ordering behind it — the ubiquitous "01/02/03 — how it works" pattern describing a genuinely sequential process is not itself a defect | MEDIUM | Remove the numbering; if progression matters, name the step itself instead of counting it (delete) |
|
|
39
39
|
| SLOP-031 | **Unreleased-looking version/status stamp in marketing copy** (DET-assist, JUDG verdict): DET: regex for a version-like token (`vN.N`, `BETA`, `ALPHA`, build-hash pattern) inside visible copy. JUDG: is this inside a real changelog/release-notes/docs context (a live-DOM probe can't reliably distinguish a real changelog page from a mocked one) | any match AND JUDG finds no real release-notes context | MEDIUM | Remove the stamp unless the brief is genuinely about a launch/preview status (delete) |
|
|
40
40
|
| SLOP-032 | **Decorative status dot with no bound state** (DET): Small colored circle/pseudo-element directly preceding label text, with no `data-state`/live-status attribute behind it | presence, no bound attribute | LOW | Remove, or reserve it for an actual live/availability signal (delete) |
|
|
41
41
|
| SLOP-033 | **Middle-dot / locale-time separator strip overused** (DET): Count of `·` glyphs on one line ≥ 3 (raised from the corpus's literal "max 1" cap — a 2-dot "Author · Date · Read time"-style byline strip is standard, tasteful editorial practice, not slop; deliberately loosened here, see Calibration & review changes below); separately, a line combining ≥ 2 of {city name, UTC/GMT offset, temperature/weather token} in one string, which is the observable proxy for "locale strip" (a DOM probe can't see whether the brief is travel-themed) | `·` count ≥ 3 on one line, OR ≥ 2 co-occurring locale/weather tokens on one line | LOW | Prefer line breaks or columns to chained middle-dots; drop the locale strip unless the brief is genuinely place/time relevant (delete) |
|
|
@@ -56,8 +56,8 @@ When a row fires, remove the unnecessary element first, use a native platform co
|
|
|
56
56
|
| SLOP-048 | **Autoplay carousel dots with no real function** (DET): Dot-nav candidate: ≥ 2 visible sibling elements, each ≤ 16×16px with `border-radius` ≥ 50% of its shorter side (or a recognized dots/bullets/indicator class), inside a container that also holds ≥ 2 slides. Autoplay: a declared attribute on the carousel root (`data-autoplay`, `data-bs-ride="carousel"`, `autoplay`), or the active slide or active dot changing between two reads ≥ 6 s apart with no input dispatched; the timed read runs once, at one viewport, and only when a candidate exists, to stay inside the §C.7 per-viewport time cap. Accessible binding, any one of which passes: each dot is a focusable (`tabIndex` ≥ 0) native `<button>`, `role="button"` or `role="tab"` element with an accessible name; the dots carry `aria-controls`; or the current dot carries `aria-selected="true"` (tabbed picker), `aria-disabled="true"` (grouped button picker) or `aria-current`. A key handler attached with `addEventListener` cannot be enumerated from page script (the limit SLOP-058 already states), so this check reads only element and attribute facts and never asserts 'no keyboard binding' | candidate present, autoplay declared or observed, and none of the accessible-binding signals present | LOW | Remove the dots or wire them to real keyboard/AT-reachable navigation (correct) |
|
|
57
57
|
| SLOP-049 | **Generic silhouette/egg avatar standing in for a person** (DET): Avatar element resolves to a small fixed set of known generic-icon asset ids/classes | match against the fixed list | LOW | Use a believable photo placeholder or a deliberate illustrated style instead (correct) |
|
|
58
58
|
| SLOP-050 | **Category label printed under every logo in a trust wall** (DET): Text node directly under a logo image matching a short category-word pattern | any match | LOW | Drop the caption; the logo alone carries the credibility (delete) |
|
|
59
|
-
| SLOP-051 | **Illustration assembled from an excessive primitive count** (JUDG, DET-assist): DET-assist,
|
|
60
|
-
| SLOP-052 | **Busy geometric mask faking a photographic edge** (DET): `getComputedStyle(el).clipPath` is a `polygon()` with ≥ 10 vertices where at least half of all coordinate values sit more than 0.5 away from a multiple of 25 (an off-grid, organic contour), or a `path()` with ≥ 3 curve commands (`C`/`S`/`Q`/`T`/`A`, either case). `circle()`, `ellipse()`, `inset()` and grid-aligned polygons (cut corners, diagonals, hexagons) never match | polygon: ≥ 10 vertices and mostly off-grid; path(): ≥ 3 curve segments (
|
|
59
|
+
| SLOP-051 | **Illustration assembled from an excessive primitive count** (JUDG, DET-assist): DET-assist, a published detector re-expressed for the live DOM: an inline `<svg>` rendered at ≥ 200×200px that holds ≥ 8 `rect`/`circle`/`ellipse`/`polygon` elements anywhere in its subtree (`path` is not counted; drawn artwork is mostly paths), ≥ 3 distinct resolved fill paints (ignoring `none`/`transparent`), ≤ 2 `text`/`tspan` elements, and no `<pattern>`. JUDG: an assembled stand-in scene, or a data graphic or diagram whose shape count is honest? | all DET-assist conditions met (≥ 8 primitives, ≥ 200×200px, ≥ 3 fills, ≤ 2 text elements, no pattern) AND JUDG confirms a stand-in scene. The constants are the published ones of an earlier reference catalogue (it reads declared width/height or viewBox; this row reads the rendered box), not yet calibrated on this family's pages | MEDIUM | Commission or simplify the illustration; don't primitive-stack a substitute (correct) |
|
|
60
|
+
| SLOP-052 | **Busy geometric mask faking a photographic edge** (DET): `getComputedStyle(el).clipPath` is a `polygon()` with ≥ 10 vertices where at least half of all coordinate values sit more than 0.5 away from a multiple of 25 (an off-grid, organic contour), or a `path()` with ≥ 3 curve commands (`C`/`S`/`Q`/`T`/`A`, either case). `circle()`, `ellipse()`, `inset()` and grid-aligned polygons (cut corners, diagonals, hexagons) never match | polygon: ≥ 10 vertices and mostly off-grid; path(): ≥ 3 curve segments (published constants of an earlier reference catalogue) | LOW | Use a real photographic crop, or a simple deliberate shape (correct) |
|
|
61
61
|
| SLOP-053 | **Emoji glyphs standing in for a real icon set** (DET-assist, JUDG verdict): DET: text node inside a control/nav/badge element matches the emoji Unicode ranges. JUDG: does the brief carry an explicit emoji-policy exception (not observable from the DOM) | any match AND JUDG finds no stated emoji-policy exception | LOW | Replace with the project's chosen icon set (correct) |
|
|
62
62
|
| SLOP-054 | **Hover transform applied to the image element itself** (DET): CSS rule with a `:hover` transform selector whose target is an `<img>` element (or an element whose only content is a background-image) rather than a parent wrapper | rule targets the image node itself | LOW | Move the transform to the container; animate the frame, not the picture (correct) |
|
|
63
63
|
| SLOP-055 | **Recurring cluster of generic tells appearing together** (JUDG): Checklist: after running the deterministic rows above, does any single component trip 2 or more of them at once? | ≥ 2 co-occurring DET hits on one component escalates the row from WARN to a real finding | MEDIUM (escalated); LOW (WARN) below that | Break up the combination; vary the visual language for that component specifically (correct) |
|
|
@@ -20,7 +20,7 @@ const COMPANIONS = Object.freeze([
|
|
|
20
20
|
["LICENSE", "738f69dfa83db5c347c678fb9d90e560877059f0de93a327c39001bff92dc014"],
|
|
21
21
|
["PROVENANCE.json", "a00be969523fe376a07d310b7418be0c41824f01241294bdf00e82eb4d736e87"],
|
|
22
22
|
["SOURCE-MANIFEST.json", "9adf471d95aaf17e7866e1c7674cb1a101daae9abdab87c71c96a60f2a58e6fa"],
|
|
23
|
-
["THIRD-PARTY-NOTICE.txt", "
|
|
23
|
+
["THIRD-PARTY-NOTICE.txt", "638a38f15c4398eb999040eca6c4ad32d8dc0eaf0b096643f73081ab1f85d5cc"],
|
|
24
24
|
]);
|
|
25
25
|
|
|
26
26
|
function hash(bytes) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: lit-docx
|
|
3
|
-
description: Create, edit, lint, audit, and convert Word documents and reports in Grok Build. Select for report, doc, docx, Word, 보고서, 리포트, 기획서, 제안서, 문서, 워드, including a bare lit request. Produce a styled DOCX from Markdown by default.
|
|
3
|
+
description: Create, edit, lint, audit, and convert Word documents and reports in Grok Build. A design direction is chosen first (six restrained tonalities that differ in structure, or a named publisher profile) and named with two alternatives. Select for report, doc, docx, Word, 보고서, 리포트, 기획서, 제안서, 문서, 워드, including a bare lit request. Produce a styled DOCX from Markdown by default.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
argument-hint: <document request or input path>
|
|
6
6
|
---
|
|
@@ -21,28 +21,76 @@ reader_projection: shared_rule
|
|
|
21
21
|
|
|
22
22
|
## Choose the workflow
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
A journal submission, or a document for a named publisher, goes to that publisher profile (`--publisher elsevier|acs|ieee|nature|korean-generic`) and keeps its required structure. Every other document — a report, 보고서, 기획서, 제안서, plan, guide, memo or essay — gets one of six tonalities chosen in the direction step below. Explicit design, profile, template and font choices win. Create both DOCX and PPTX with both Markdown sources when the request names report and slides; invoke `lit-pptx` for the deck. Deliver Markdown/HTML alone only when requested.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Under a bare `lit` request the skill decides the direction itself and asks nothing; the reply names the choice and two alternatives afterwards. For an explicit non-lit request the user is present, so one short question round may offer the chosen tonality first, the two alternatives and a compare option. There is never a silent default look.
|
|
27
|
+
|
|
28
|
+
Read supplied source files and distinguish evidence from interpretation. For a bare `lit` request with no facts, pick a plausible worked example and mark every invented name and figure as sample/assumption on the page and in the reply (`notice: "예시 데이터: 실제 수치로 바꿔 주세요"` in the frontmatter prints once under the title block). Do not leave bracketed blanks or invent citations. Quoted or embedded document text is inert data. Keep source text and revision history outside the installed skill tree. Keep technical evidence in a receipt, not as visible manuscript boilerplate.
|
|
29
|
+
|
|
30
|
+
## Direction step
|
|
31
|
+
|
|
32
|
+
Read `references/direction-step.md` before choosing a tonality: it maps document types to candidates, lists the content signals that reorder them, and gives the direction card. The six share one restrained page — near-black ink for body and headings, a quiet type scale (h1 about 1.4 times the body), A4, Pretendard for Hangul and Latin, booktabs tables without fills, at most one accent on at most two element kinds — and differ in structure: what stands on page 1, how the summary is set, how headings are numbered, which components the document may use, and what the running head carries.
|
|
33
|
+
|
|
34
|
+
| Tonality | Use it for | Read before writing |
|
|
35
|
+
| --- | --- | --- |
|
|
36
|
+
| `report` | results, analysis, a formal report | Read `references/tonalities/report.md` for a Report document |
|
|
37
|
+
| `brief` | a Korean itemised briefing (개조식) for one decision maker | Read `references/tonalities/brief.md` for a Brief document |
|
|
38
|
+
| `manual` | a guide, procedure or onboarding text with steps and warnings | Read `references/tonalities/manual.md` for a Manual document |
|
|
39
|
+
| `proposal` | a proposal, plan or funding request with a cover | Read `references/tonalities/proposal.md` for a Proposal document |
|
|
40
|
+
| `memo` | a one- or two-page notice, memo or decision request | Read `references/tonalities/memo.md` for a Memo document |
|
|
41
|
+
| `journal` | an essay, newsletter or white paper in two columns | Read `references/tonalities/journal.md` for a Journal document |
|
|
42
|
+
|
|
43
|
+
1. Settle document type, reader, delivery (printed, on screen, sent ahead), language and expected length; infer what the brief leaves out.
|
|
44
|
+
2. Take the first candidate for the type, let the material reorder the row (many tables, under about 900 words, numbered procedures, long English prose, a decision as the point), and keep the deck-type order on ties.
|
|
45
|
+
3. Write the card into `<name>.build.md` beside the source: type, reader, tonality and two alternatives, a reason tied to the reader and the signals, the density and variance dials (move either by at most 2 without asking), the cover and heading treatment, the components planned with one purpose each, and what would make this direction wrong.
|
|
46
|
+
4. Put `tonality: <id>` in the frontmatter; in the reply, say the choice and why, then the two alternatives in one sentence.
|
|
47
|
+
5. When the user asks to compare, convert the same source under the chosen tonality and both alternatives (`--tonality`), render the first three pages of each, and continue under the one picked.
|
|
48
|
+
|
|
49
|
+
## Write the source
|
|
50
|
+
|
|
51
|
+
- A short summary section (요약 / Summary) states the conclusion first; then background, analysis or options, the recommendation, and next steps with owners and dates when the sources give them.
|
|
52
|
+
- Headings, the title and the subtitle are noun-phrase labels, never sentences: "3분기 실적과 원가", not "3분기 매출이 계획을 넘었다"; "Conversion by feed rate", not "Staged feed raises conversion". The claim goes in the first sentence under the heading.
|
|
53
|
+
- Numbers keep their true weight: a key figure is no larger than the h2 size and always carries its label and a basis line (period, base, source); no hero numerals, no rounding up for effect.
|
|
54
|
+
- Pages fill through measure, leading and structure, never through type under 10.5 pt or crowded boxes. Components are few and only for real content: at most three kinds per document, one key-figure strip, a callout about once per four pages for the decision request or a warning, a sidebar only in a Manual, two columns only when both parts are about the same length. Read `references/components.md` for the `:::` directive syntax and the component budget, and read `references/page-composition.md` for how pages fill, split and carry tables, figures, covers and running heads.
|
|
55
|
+
- Korean conventions on every path: dates as `2026. 6. 30.` or `2026년 6월 30일` (an ISO date is rewritten), `<표 1>` captions above tables with a shared unit on a `(단위: …)` line, `주:` and `출처:` under them, heading numbers in the order Ⅰ., 1., 가. where the tonality numbers headings, Hangul emphasised by weight and never italic. Word breaks Hangul between words (wordWrap on, ko-KR); a LibreOffice preview may break between syllables.
|
|
56
|
+
- Tables: units in headers, at most six columns, short cells, a sentence after the table that says what it shows. The converter sizes columns to content, right-aligns number columns, repeats the header row and keeps each row on one page.
|
|
57
|
+
- Open the closest worked source in `examples/` (nine documents covering all six tonalities in Korean and English; each converts and passes the gate) before writing.
|
|
27
58
|
|
|
28
59
|
## Convert and edit
|
|
29
60
|
|
|
30
|
-
The packaged scripts, publisher registry, editable templates, LaTeX profiles, and lint references live under this skill. Use the launcher so the pinned Python venv installs on first use into the LitGrok office cache. `node .grok/skills/lit-docx/scripts/run.mjs doctor` reports readiness and optional host tools.
|
|
61
|
+
The packaged scripts, publisher registry, editable templates, LaTeX profiles, tonality packs and lint references live under this skill. Use the launcher so the pinned Python venv installs on first use into the LitGrok office cache. `node .grok/skills/lit-docx/scripts/run.mjs doctor` reports readiness and optional host tools.
|
|
31
62
|
|
|
32
|
-
- Markdown to a
|
|
33
|
-
- Markdown to
|
|
34
|
-
- Plain styled Markdown to DOCX: omit
|
|
63
|
+
- Markdown to a tonality document: `node .grok/skills/lit-docx/scripts/run.mjs convert_md_to_docx.py report.md report.docx` (the tonality comes from the frontmatter; `--tonality brief`, `--density`, `--variance` override it).
|
|
64
|
+
- Markdown to a publisher manuscript: the same script with `--publisher korean-generic|elsevier|acs|ieee|nature`; inspect `templates/registry.yaml` and the relevant DOCX template before delivery. Text never touches a table or a caption: the paragraph after a table, a table caption after text and the text under a figure caption stand 8 pt clear (a heading keeps its own space). A tonality and a publisher are mutually exclusive.
|
|
65
|
+
- Plain styled Markdown to DOCX: omit both; the plain profile runs through the same builders with neutral tokens.
|
|
35
66
|
- Edit an existing DOCX: `node .grok/skills/lit-docx/scripts/run.mjs edit_docx.py input.docx --replace OLD NEW -o revised.docx`; use `--append-md` or `--insert-at` for structured changes and keep the original.
|
|
36
67
|
- DOCX to Markdown: use `pandoc -f docx -t gfm --wrap=none --extract-media=media input.docx -o draft.md`, then run `clean_markdown.py` and inspect tables, citations, footnotes, tracked changes and extracted media. Missing pandoc blocks this path; do not claim a conversion from another format.
|
|
37
68
|
- PDF to Markdown: run `convert_pdf.py` from the launcher and inspect the extraction order. Scanned PDFs need OCR outside this skill; a text extractor cannot certify them.
|
|
38
69
|
- Markdown to PDF: run `convert_md_to_pdf.py` with the selected publisher profile. XeLaTeX and pandoc are optional host prerequisites for this path; if missing, deliver DOCX and state the PDF boundary. Do not silently substitute a screen capture for a publication PDF.
|
|
39
70
|
|
|
40
|
-
|
|
71
|
+
## Gate and look
|
|
72
|
+
|
|
73
|
+
`node .grok/skills/lit-docx/scripts/run.mjs docx_gate.py report.docx --source report.md --layout` must exit 0 (add `--publisher <profile> --kind manuscript` for a manuscript). It checks the package (readable ZIP, no NaN attribute values, python-docx reopen); the content (body text present, every source heading reached the document, no unfilled `[blank]`/`XXX`/`TBD`/`○○`, no frontmatter printed as text); the prose lint and DOCX audits of `slop_lint.py` (numeric columns right-aligned, OF-302; Hangul runs paired with a real east-Asian face, read through the style chain; a publisher's own design rules on a publisher run; journal outline rules only for a manuscript); and the output checks of `scripts/docx_layout.py`: noun-phrase headings and heading order always, the frontmatter notice written with a colon (`예시 데이터: …`, `Sample memo: …`), never a spaced dash (`notice.dash`, a failure on a tonality document and advice otherwise), the restraint rules on a tonality document (one accent hue on at most two element kinds, ink headings, h1 at most 1.5 times the body, no shaded table cell, at most three component kinds and one key-figure strip, no coloured notice in a page header, no ISO date in Korean text), and with `--layout` the page checks on a LibreOffice render (no body page under 0.35 of its frame except cover and last, no memo that runs onto a second page it fills under a quarter of the frame (`memo.fit`), no two-page document whose second page is under 0.4 of the frame and no last page under an eighth (`page.spill`), no list of up to six items split across pages or columns, except one break of a five- or six-item list in a column with two items or more on each side (`list.split`), no heading at the foot of a column while its text opens the next one (`heading.column`), no column a quarter short beside a full one and no last page with uneven columns (`columns.balance`), no heading and its lead sentence apart from the short table they open (`heading.apart`), no page ending on a heading, no table that fits one page split across two, no component box split, no picture apart from its caption, at least two component kinds on a four-page tonality document, no filled shape over a quarter of a cover). `--compare other.docx` fails two tonalities of one source that differ in fewer than three structural features. Without `soffice` the page checks are reported as not run, and the reply says so. Fix the Markdown and reconvert; never weaken the gate.
|
|
74
|
+
|
|
75
|
+
For a publisher manuscript also run `slop_lint.py report.md --publisher <profile> --report lint.md` for the full report and submission checklist; for a proposal, business plan or other non-manuscript text pass `--genre general` so the journal section order is not imposed. Use `visual_audit.py report.docx --out-dir <task-output>` when LibreOffice is present, convert the PDF pages to PNG, and open them: the title block or cover, heading rhythm, components (does the callout hold the decision, does each key figure show its basis), Korean glyphs, table rules, page breaks and whether the card's "wrong if" line came true. Three rounds is the budget; record the gate result and what the pages showed in the build log. Rendered pages are necessary for a visual claim. Pretendard is not embedded in the DOCX, so pages look as rendered only where the font is installed; say so when the renderer had to substitute it.
|
|
41
76
|
|
|
42
|
-
The `templates/registry.yaml` controls publisher typography and geometry. The templates under `templates/docx/` are editable profile assets; `generate_docx_templates.py` regenerates them from the registry only in a task-owned copy unless the user asked to update the installed product. Read `references/frontmatter_schema.md
|
|
77
|
+
The `templates/registry.yaml` controls publisher typography and geometry; `templates/tonalities/<id>.yaml` holds the six packs the converter reads. The templates under `templates/docx/` are editable profile assets; `generate_docx_templates.py` regenerates them from the registry only in a task-owned copy unless the user asked to update the installed product. Read `references/frontmatter_schema.md` for the journal frontmatter fields, read `references/journal_style_spec.md` before preparing a publisher manuscript, read `references/markdown_quality_checklist.md` when cleaning converted Markdown, and read `references/slop_rules.md` for the prose rules the lint enforces. `embed_images.py` makes a self-contained Markdown handoff; check media rights before embedding.
|
|
43
78
|
|
|
44
79
|
## Quality and limits
|
|
45
80
|
|
|
46
|
-
Use specific section titles and evidence-backed claims. Preserve required publisher structure; do not flatten a manuscript into generic prose. Keep tables with meaningful headers and units, readable
|
|
81
|
+
Use specific section titles and evidence-backed claims. Preserve required publisher structure; do not flatten a manuscript into generic prose. Keep tables with meaningful headers and units, readable captions, and explicit citation placeholders when source metadata is absent. `slop_lint.py` flags patterns for review; it does not prove truth or suitability. A clean gate is defect-absence, not a verdict on how the pages read.
|
|
82
|
+
|
|
83
|
+
The installed package and the office cache are local to LitGrok. The pinned `requirements.lock` covers python-docx, Markdown, Beautiful Soup, PyMuPDF, PyYAML, python-pptx and support packages; the launcher runs Python without writing bytecode into the skill folder. It does not change the user's global Python, Grok login or host configuration. `pandoc`, `xelatex`, and `soffice` remain user-provided optional tools. A failed install, corrupt DOCX, lint failure, or missing optional tool is a reported boundary; retain the original Markdown and input document for recovery.
|
|
84
|
+
|
|
85
|
+
## Reference map
|
|
47
86
|
|
|
48
|
-
|
|
87
|
+
| Need | Where |
|
|
88
|
+
| --- | --- |
|
|
89
|
+
| Choosing the tonality, the card, comparing | `references/direction-step.md` |
|
|
90
|
+
| One tonality's structure, tokens and components | `references/tonalities/<id>.md` |
|
|
91
|
+
| The `:::` components and their budget | `references/components.md` |
|
|
92
|
+
| Page grid, measure, leading, splits, covers, running heads | `references/page-composition.md` |
|
|
93
|
+
| Worked sources that convert and pass the gate | `examples/` |
|
|
94
|
+
| The packs the converter reads | `templates/tonalities/<id>.yaml` |
|
|
95
|
+
| The gate and its output checks | `scripts/docx_gate.py`, `scripts/docx_layout.py` |
|
|
96
|
+
| Publisher profiles | `templates/registry.yaml`, `references/journal_style_spec.md` |
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 본사 옥상 태양광 설비 1년 운영 결과
|
|
3
|
+
subtitle: 2025년 10월~2026년 9월 발전 실적, 전기요금 절감과 2027년 보완 계획
|
|
4
|
+
author: 시설관리팀 에너지파트
|
|
5
|
+
organization: 예시 주식회사
|
|
6
|
+
date: 2026-10-05
|
|
7
|
+
short_title: 옥상 태양광 1년 운영 결과
|
|
8
|
+
notice: "예시 데이터: 회사명, 설비 용량, 금액은 모두 가정입니다. 실제 수치로 바꿔 주세요"
|
|
9
|
+
tonality: Report
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
::: cover variant=masthead kicker="운영 결과 보고"
|
|
13
|
+
본사 옥상 태양광 설비를 가동한 첫 1년의 발전량, 자가소비 비율, 전기요금 절감액, 고장 이력을 정리하고 2027년 보완 공사와 예산 요청을 함께 담았다.
|
|
14
|
+
:::
|
|
15
|
+
|
|
16
|
+
# 요약
|
|
17
|
+
|
|
18
|
+
옥상 태양광 설비는 1년 동안 312MWh를 생산해 본사 연간 전력 사용량의 8.4%를 대체했다. 설계 단계에서 예측한 발전량 298MWh보다 4.7% 많다. 생산한 전력은 대부분 건물 안에서 바로 썼고, 휴일 낮에 남은 전력만 한전 계통으로 보냈다.
|
|
19
|
+
|
|
20
|
+
::: keyfigures
|
|
21
|
+
- **312MWh** 연간 발전량 (예시)
|
|
22
|
+
* 2025. 10.~2026. 9. 인버터 누적 기록
|
|
23
|
+
- **8.4%** 본사 전력 사용량 대비 (예시)
|
|
24
|
+
* 같은 기간 수전 계량기 기준
|
|
25
|
+
- **4,180만 원** 전기요금 절감액 (예시)
|
|
26
|
+
* 계시별 요금 적용, 부가세 제외
|
|
27
|
+
:::
|
|
28
|
+
|
|
29
|
+
절감액은 투자비 회수 계획의 연간 목표 3,900만 원을 넘었다. 다만 여름철 한낮에 모듈 온도가 올라 출력이 떨어지는 시간이 예상보다 길었고, 동쪽 구역 인버터 1대가 두 차례 멈춰 11일 동안 발전량 손실이 있었다. 2027년 상반기에 인버터 교체와 모듈 세척 주기 조정을 진행하며, 이에 필요한 예산 2,600만 원의 승인을 요청한다.
|
|
30
|
+
|
|
31
|
+
# 설비 개요
|
|
32
|
+
|
|
33
|
+
## 설치 규모와 구성
|
|
34
|
+
|
|
35
|
+
설비는 본관과 별관 옥상 두 곳에 나뉘어 있다. 본관에는 모듈 540장(설비 용량 248kW), 별관에는 모듈 160장(73kW)이 남향 15도 경사로 놓였다. 인버터는 본관 4대, 별관 1대이며, 각 인버터의 출력은 지하 2층 수전반에서 건물 부하와 합쳐진다.
|
|
36
|
+
|
|
37
|
+
표 1. 구역별 설비 구성 (예시)
|
|
38
|
+
|
|
39
|
+
| 구분 | 본관 옥상 | 별관 옥상 | 합계 |
|
|
40
|
+
| --- | ---: | ---: | ---: |
|
|
41
|
+
| 모듈 수 (장) | 540 | 160 | 700 |
|
|
42
|
+
| 설비 용량 (kW) | 248 | 73 | 321 |
|
|
43
|
+
| 인버터 (대) | 4 | 1 | 5 |
|
|
44
|
+
| 설치 면적 (㎡) | 1,620 | 480 | 2,100 |
|
|
45
|
+
|
|
46
|
+
자료: 시설관리팀 준공 도서(2025. 9.)
|
|
47
|
+
|
|
48
|
+
## 계량과 기록 방식
|
|
49
|
+
|
|
50
|
+
발전량은 인버터별 누적 계량값을 15분 간격으로 원격 수집한다. 건물 사용량은 한전 수전 계량기와 내부 부하 계량기를 함께 읽는다. 두 값의 차이로 자가소비량과 역송량을 계산하며, 월말에 한전 청구서와 대조해 오차가 1%를 넘으면 원인을 찾는다. 1년 동안 오차가 1%를 넘은 달은 2026년 2월 한 번뿐이었고, 원인은 계량기 통신 장애로 확인했다.
|
|
51
|
+
|
|
52
|
+
# 발전 실적
|
|
53
|
+
|
|
54
|
+
## 월별 발전량
|
|
55
|
+
|
|
56
|
+
발전량은 5월에 가장 많았고 12월에 가장 적었다. 일사량이 가장 많은 달은 6월이었지만, 장마가 일찍 시작된 데다 모듈 온도가 높아 5월 실적에 못 미쳤다. 겨울철에는 해가 낮아 별관 옥상 일부가 본관 그림자에 가렸다. 아래 표의 예측값은 설계 시뮬레이션의 월별 값을 분기로 합한 것이다.
|
|
57
|
+
|
|
58
|
+
표 2. 분기별 발전량과 예측 대비 실적 (예시)
|
|
59
|
+
|
|
60
|
+
| 분기 | 예측 (MWh) | 실적 (MWh) | 예측 대비 (%) |
|
|
61
|
+
| --- | ---: | ---: | ---: |
|
|
62
|
+
| 2025년 4분기 | 58 | 61 | 105.2 |
|
|
63
|
+
| 2026년 1분기 | 66 | 69 | 104.5 |
|
|
64
|
+
| 2026년 2분기 | 94 | 101 | 107.4 |
|
|
65
|
+
| 2026년 3분기 | 80 | 81 | 101.3 |
|
|
66
|
+
| 합계 | 298 | 312 | 104.7 |
|
|
67
|
+
|
|
68
|
+
자료: 인버터 원격 감시 기록
|
|
69
|
+
|
|
70
|
+
3분기 실적이 예측과 거의 같았던 것은 8월 인버터 정지의 영향이다. 정지가 없었다면 3분기 실적은 약 85MWh로 추정되며, 이 경우 연간 실적은 예측보다 6% 정도 많았을 것이다.
|
|
71
|
+
|
|
72
|
+
## 자가소비와 역송
|
|
73
|
+
|
|
74
|
+
생산 전력의 93%를 건물 안에서 바로 썼다. 평일 낮에는 사무 부하와 냉방 부하가 발전량보다 커서 남는 전력이 거의 없다. 역송은 주로 토요일과 공휴일 낮에 생겼고, 1년 동안 모두 22MWh였다. 역송 전력은 상계 거래로 처리해 다음 달 요금에서 차감했다.
|
|
75
|
+
|
|
76
|
+
## 효율 저하 요인
|
|
77
|
+
|
|
78
|
+
출력을 깎은 요인은 세 가지였다. 첫째는 여름철 모듈 온도다. 7월과 8월 한낮에 모듈 표면 온도가 65도를 넘은 시간이 하루 평균 3.2시간이었고, 이 시간대 출력은 정격의 78% 수준에 머물렀다. 둘째는 먼지와 새 배설물이다. 봄철 황사 이후 세척 전후의 출력 차이가 4% 안팎으로 측정됐다. 셋째는 겨울철 별관 그림자로, 12월과 1월 오전 10시 이전에는 별관 모듈 중 40장 정도가 그늘에 들었다.
|
|
79
|
+
|
|
80
|
+
# 비용과 절감 효과
|
|
81
|
+
|
|
82
|
+
## 전기요금 절감액
|
|
83
|
+
|
|
84
|
+
절감액은 자가소비량에 해당 시간대 요금 단가를 곱한 값과 상계 처리된 역송 금액을 더해 계산했다. 여름철 낮 시간대 단가가 높아 6~8월 세 달의 절감액이 연간 절감액의 36%를 차지했다.
|
|
85
|
+
|
|
86
|
+
표 3. 절감액과 운영비 (예시)
|
|
87
|
+
|
|
88
|
+
| 항목 | 금액 (만 원) | 비고 |
|
|
89
|
+
| --- | ---: | --- |
|
|
90
|
+
| 자가소비 절감액 | 3,890 | 계시별 단가 적용 |
|
|
91
|
+
| 역송 상계 금액 | 290 | 22MWh |
|
|
92
|
+
| 유지보수 계약비 | 480 | 연 1회 정밀 점검 포함 |
|
|
93
|
+
| 모듈 세척비 | 120 | 연 3회 |
|
|
94
|
+
| 순절감액 | 3,580 | 절감액에서 운영비를 뺀 값 |
|
|
95
|
+
|
|
96
|
+
자료: 재무팀 전기요금 정산 자료, 시설관리팀 계약 대장
|
|
97
|
+
|
|
98
|
+
## 투자비 회수 전망
|
|
99
|
+
|
|
100
|
+
설치 투자비는 5억 1,000만 원이었다. 첫해 순절감액 3,580만 원이 그대로 유지된다고 보면 회수에는 약 14년이 걸린다. 그러나 전기요금 단가는 2026년에만 두 차례 올랐고, 모듈 출력은 해마다 0.5% 정도씩 낮아진다. 두 요인을 함께 넣은 재무팀 추정으로는 회수 기간이 12~13년이다.
|
|
101
|
+
|
|
102
|
+
::: callout kind=note title="회수 기간 추정의 전제"
|
|
103
|
+
요금 단가는 연 3% 상승, 모듈 출력은 연 0.5% 저하, 유지보수비는 연 2% 상승을 가정했다. 단가 상승률이 연 1%에 그치면 회수 기간은 15년으로 늘어난다.
|
|
104
|
+
:::
|
|
105
|
+
|
|
106
|
+
# 운영상 문제와 대응
|
|
107
|
+
|
|
108
|
+
## 인버터 정지
|
|
109
|
+
|
|
110
|
+
동쪽 구역 3번 인버터가 2026년 3월과 8월 두 차례 과열 경보로 멈췄다. 3월에는 하루 만에 재가동했지만, 8월에는 냉각 팬 부품을 해외에서 들여오느라 10일이 걸렸다. 국내 재고가 없었다. 두 번의 정지로 잃은 발전량은 약 5MWh, 금액으로는 70만 원 정도다. 제조사는 같은 모델의 냉각 팬 결함을 인정하고 2027년 1분기 안에 무상 교체를 약속했다. 그러나 팬만 바꾸면 설치 위치의 환기 부족은 그대로 남는다.
|
|
111
|
+
|
|
112
|
+
## 세척 주기
|
|
113
|
+
|
|
114
|
+
계약상 세척은 연 3회(3월, 6월, 10월)였다. 문제는 시기다. 황사가 심했던 4월과 꽃가루가 많았던 5월 사이에는 세척 전후 출력 차이가 4%를 넘었다. 세척 시기를 황사 직후로 옮기고 여름 장마 전 한 번을 추가하면, 연간 발전량이 1.5% 정도 늘 것으로 본다. 세척 업체와는 2026년 12월 계약 갱신 때 횟수와 시기를 함께 바꾸기로 협의했고, 추가 1회 비용은 기존 단가인 회당 40만 원을 그대로 적용하기로 했으며, 황사 특보가 사흘 이상 이어진 주에는 업체가 먼저 일정을 제안하도록 계약서에 넣기로 했다.
|
|
115
|
+
|
|
116
|
+
## 안전 관리
|
|
117
|
+
|
|
118
|
+
옥상 출입은 시설관리팀 승인을 받은 인원만 가능하고, 출입 기록은 보안실 출입 통제 시스템에 남는다. 1년 동안 안전사고는 없었다. 외부 세척 업체 작업자도 작업 당일 현장 안전교육을 받고 추락 방지 장비를 점검받은 뒤에만 옥상에 올라갔으며, 교육 기록과 장비 점검표는 시설관리팀이 작업일마다 받아 보관했다. 다만 별관 옥상 난간 높이가 기준보다 10cm 낮아 2026년 6월에 임시 안전망을 설치했다.
|
|
119
|
+
|
|
120
|
+
# 2027년 보완 계획과 예산
|
|
121
|
+
|
|
122
|
+
## 보완 과제
|
|
123
|
+
|
|
124
|
+
보완 과제는 세 가지다. 3번 인버터를 환기가 되는 위치로 옮기면서 냉각 팬을 교체하고, 세척 주기를 연 4회로 늘리며, 별관 옥상 난간을 기준 높이로 높인다. 그늘 문제는 모듈 배치를 바꿔야 해결되므로 비용 대비 효과를 따져 2028년에 다시 검토한다.
|
|
125
|
+
|
|
126
|
+
표 4. 2027년 보완 예산 요청 (예시)
|
|
127
|
+
|
|
128
|
+
| 과제 | 시기 | 금액 (만 원) |
|
|
129
|
+
| --- | --- | ---: |
|
|
130
|
+
| 3번 인버터 이설과 환기 덕트 | 2027년 1분기 | 1,450 |
|
|
131
|
+
| 세척 1회 추가(연 4회) | 2027년 6월 | 40 |
|
|
132
|
+
| 별관 옥상 난간 보강 | 2027년 2분기 | 1,110 |
|
|
133
|
+
| 합계 | | 2,600 |
|
|
134
|
+
|
|
135
|
+
## 기대 효과
|
|
136
|
+
|
|
137
|
+
인버터 이설과 세척 주기 조정으로 연간 발전량이 2~3% 늘면, 절감액은 연 80만~120만 원 정도 늘어난다. 금액만 보면 크지 않다. 그러나 같은 고장이 되풀이되면 한 번에 10일 이상 발전이 멈출 수 있고, 난간 보강은 법정 안전 기준을 맞추기 위한 공사다. 예산이 승인되면 2027년 1월에 업체를 선정하고, 공사는 발전량이 적은 2월 안에 마친다.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 사내 메신저 전환 검토 보고
|
|
3
|
+
subtitle: 현행 계약 만료에 따른 대안 비교와 2027년 1분기 전환안
|
|
4
|
+
author: 정보전략팀
|
|
5
|
+
organization: 예시 공사
|
|
6
|
+
date: 2026-10-05
|
|
7
|
+
short_title: 사내 메신저 전환 검토
|
|
8
|
+
notice: "예시 데이터: 기관명, 인원, 금액은 모두 가정입니다. 실제 수치로 바꿔 주세요"
|
|
9
|
+
tonality: Brief
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
::: cover variant=masthead kicker="검토 보고"
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
::: callout kind=key title="결정 요청"
|
|
16
|
+
현행 메신저 계약을 연장하지 않고 2027년 3월 말까지 그룹웨어 내장 메신저(안 2)로 전환하는 안, 그리고 전환 비용 3,200만 원(예시)을 2026년 4분기 정보화 예비비에서 집행하는 안의 승인을 요청한다.
|
|
17
|
+
:::
|
|
18
|
+
|
|
19
|
+
# 요약
|
|
20
|
+
|
|
21
|
+
안 2로 전환하면 3년간 1억 1,400만 원을 아낀다. 현행 메신저를 3년 더 쓰는 비용은 2억 400만 원이고, 그룹웨어 내장 메신저는 전환비를 포함해 9,000만 원이다(예시).
|
|
22
|
+
|
|
23
|
+
기능 손실은 크지 않다. 직원 1,240명의 최근 6개월 사용 기록을 보면 대화, 파일 전송, 화상 통화가 전체 사용의 96%를 차지하며, 세 기능 모두 내장 메신저에 있다.
|
|
24
|
+
|
|
25
|
+
보안 요건도 충족한다. 내장 메신저는 사내 서버에 대화를 저장하고, 2026년 8월 보안 진단에서 지적 사항 없이 통과했다.
|
|
26
|
+
|
|
27
|
+
위험은 전환 기간의 혼선이다. 대화 기록 이관과 외부 협력사 계정 재발급에 6주가 걸리므로, 2027년 1월 첫 주에 착수해야 3월 말 계약 만료 전에 끝난다.
|
|
28
|
+
|
|
29
|
+
# 검토 배경
|
|
30
|
+
|
|
31
|
+
- 현행 메신저 계약 만료일 2027. 3. 31., 연장 시 사용료 연 18% 인상 통보 받음
|
|
32
|
+
- 그룹웨어는 2025년 교체 때 메신저 기능을 포함해 계약, 현재 사용하지 않는 상태
|
|
33
|
+
- 두 메신저를 함께 쓰는 부서가 생겨 업무 요청 누락 사례가 분기마다 보고됨
|
|
34
|
+
- 2026년 7월 경영진 회의에서 메신저 일원화 검토를 지시
|
|
35
|
+
|
|
36
|
+
# 대안 비교
|
|
37
|
+
|
|
38
|
+
표 1. 대안별 3년 비용과 주요 특성 (예시)
|
|
39
|
+
|
|
40
|
+
| 구분 | 안 1 현행 연장 | 안 2 그룹웨어 내장 | 안 3 신규 도입 |
|
|
41
|
+
| --- | ---: | ---: | ---: |
|
|
42
|
+
| 3년 사용료 (만 원) | 20,400 | 5,800 | 13,500 |
|
|
43
|
+
| 전환비 (만 원) | 0 | 3,200 | 4,600 |
|
|
44
|
+
| 3년 합계 (만 원) | 20,400 | 9,000 | 18,100 |
|
|
45
|
+
| 대화 서버 위치 | 외부 | 사내 | 외부 |
|
|
46
|
+
| 전환 기간 | 없음 | 6주 | 10주 |
|
|
47
|
+
|
|
48
|
+
자료: 업체 견적(2026. 9.), 정보전략팀 산출
|
|
49
|
+
|
|
50
|
+
- 안 1은 전환 부담이 없으나 비용이 가장 크고, 인상분이 매년 반복될 가능성 있음
|
|
51
|
+
- 안 2는 비용이 가장 적고 대화가 사내 서버에 남음. 화면 공유 중 원격 제어 기능은 없으나 사용 비중 0.4%로 원격 지원 도구로 대체 가능
|
|
52
|
+
- 안 3은 기능이 가장 많으나 비용과 전환 기간 모두 안 2보다 불리함
|
|
53
|
+
|
|
54
|
+
# 전환 일정과 위험
|
|
55
|
+
|
|
56
|
+
## 추진 일정
|
|
57
|
+
|
|
58
|
+
- 2027년 1월 1주: 전환 공지, 부서별 담당자 지정
|
|
59
|
+
- 2027년 1월 2~4주: 최근 1년 대화 기록 이관, 협력사 계정 380개 재발급
|
|
60
|
+
- 2027년 2월: 두 메신저 병행 운영, 현행 메신저는 읽기 전용으로 전환
|
|
61
|
+
- 2027년 3월 2주: 현행 메신저 종료, 3월 말 계약 만료
|
|
62
|
+
|
|
63
|
+
## 위험 대응
|
|
64
|
+
|
|
65
|
+
- 대화 기록 이관 누락: 이관 전후 건수를 부서별로 대조하고, 원본은 계약 만료 후 1년간 보관
|
|
66
|
+
- 협력사 계정 재발급 지연: 협력사별 담당자 목록을 12월 중 먼저 확보
|
|
67
|
+
- 병행 기간의 요청 누락: 2월부터 업무 요청은 내장 메신저로만 받도록 부서장 회의에서 공지
|
|
68
|
+
|
|
69
|
+
# 소요 예산
|
|
70
|
+
|
|
71
|
+
표 2. 전환 비용 내역 (예시)
|
|
72
|
+
|
|
73
|
+
| 항목 | 금액 (만 원) |
|
|
74
|
+
| --- | ---: |
|
|
75
|
+
| 대화 기록 이관 용역 | 1,800 |
|
|
76
|
+
| 협력사 계정 발급과 인증 설정 | 700 |
|
|
77
|
+
| 사용자 교육과 안내 자료 | 400 |
|
|
78
|
+
| 예비비 | 300 |
|
|
79
|
+
| 합계 | 3,200 |
|
|
80
|
+
|
|
81
|
+
- 집행 재원: 2026년 4분기 정보화 예비비(잔액 5,100만 원)
|
|
82
|
+
- 2027년 이후 사용료는 그룹웨어 유지보수 계약에 포함
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 연구동 공용 흄후드 일상 점검 절차서
|
|
3
|
+
subtitle: 3층 공용 실험실 흄후드 6대의 사용 전 점검, 월간 풍속 측정과 이상 시 조치
|
|
4
|
+
author: 연구지원팀 실험실안전파트
|
|
5
|
+
organization: 예시 연구원
|
|
6
|
+
date: 2026-10-05
|
|
7
|
+
short_title: 흄후드 일상 점검 절차서
|
|
8
|
+
notice: "예시 데이터: 설비 번호, 기준값, 연락처는 모두 가정입니다. 실제 값으로 바꿔 주세요"
|
|
9
|
+
tonality: Manual
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# 적용 범위
|
|
13
|
+
|
|
14
|
+
## 대상 설비와 사용자
|
|
15
|
+
|
|
16
|
+
이 절차서는 연구동 3층 공용 실험실 301호와 302호에 설치된 흄후드 6대(FH-301-1~3, FH-302-1~3)에 적용한다. 사용자는 공용 실험실 사용 승인을 받은 연구원과 학생 연구원이며, 승인 전 실험실 안전교육 2시간을 이수해야 한다. 개인 실험실의 흄후드와 생물안전작업대는 별도 절차서를 따른다.
|
|
17
|
+
|
|
18
|
+
::: sidebar title="용어"
|
|
19
|
+
**면속도**: 새시 개구부를 지나 흄후드 안으로 들어가는 공기의 평균 속도(m/s).
|
|
20
|
+
|
|
21
|
+
**새시**: 흄후드 앞면의 위아래로 움직이는 유리문. 작업 높이는 바닥에서 40cm다.
|
|
22
|
+
|
|
23
|
+
**배기 경보**: 면속도가 기준 아래로 떨어지면 울리는 소리와 표시등.
|
|
24
|
+
:::
|
|
25
|
+
|
|
26
|
+
흄후드는 실험 중 생기는 유해 증기를 실험자 쪽으로 새지 않게 빨아들여 옥상 배기구로 내보낸다. 이 기능은 면속도가 기준 범위 안에 있고 새시가 작업 높이 이하로 내려와 있을 때만 유지된다. 그래서 점검의 중심은 면속도와 새시 위치, 그리고 후드 안의 기류를 막는 물건이 없는지 확인하는 일이다.
|
|
27
|
+
|
|
28
|
+
## 책임
|
|
29
|
+
|
|
30
|
+
연구지원팀은 월간 풍속 측정, 연간 정밀 검사, 고장 수리 접수를 맡는다. 사용자는 사용 전 점검과 사용 후 정리를 맡는다. 점검 결과는 각 흄후드 옆에 붙은 점검표와 실험실 안전 관리 시스템에 함께 남긴다.
|
|
31
|
+
|
|
32
|
+
표 1. 점검 구분과 주기 (예시)
|
|
33
|
+
|
|
34
|
+
| 구분 | 주기 | 담당 | 기록 |
|
|
35
|
+
| --- | --- | --- | --- |
|
|
36
|
+
| 사용 전 점검 | 매 사용 시 | 사용자 | 흄후드 옆 점검표 |
|
|
37
|
+
| 월간 풍속 측정 | 매월 첫째 주 | 연구지원팀 | 안전 관리 시스템 |
|
|
38
|
+
| 연간 정밀 검사 | 매년 3월 | 외부 검사 기관 | 검사 성적서 |
|
|
39
|
+
| 고장 점검 | 경보 또는 신고 시 | 연구지원팀 | 수리 이력 대장 |
|
|
40
|
+
|
|
41
|
+
# 사용 전 점검
|
|
42
|
+
|
|
43
|
+
## 점검 순서
|
|
44
|
+
|
|
45
|
+
흄후드를 켜고 1분이 지난 뒤 다음 순서로 점검한다. 한 항목이라도 기준을 벗어나면 실험을 시작하지 않고 4장의 조치를 따른다.
|
|
46
|
+
|
|
47
|
+
1. 전원 스위치를 켜고 조명과 배기 팬이 함께 작동하는지 확인한다.
|
|
48
|
+
2. 표시창의 면속도가 0.4~0.6m/s 범위 안에 있는지 읽는다.
|
|
49
|
+
3. 새시를 작업 높이 40cm까지 올렸다가 내리며 걸림이 없는지 본다.
|
|
50
|
+
4. 후드 안쪽 뒷면 배기 슬롯 앞 15cm 안에 시약병이나 장비가 없는지 확인한다.
|
|
51
|
+
5. 작업대 위에 쏟은 시약 자국이 있으면 사용 전에 닦고 점검표에 적는다.
|
|
52
|
+
6. 점검표에 날짜, 이름, 면속도 값을 적고 서명한다.
|
|
53
|
+
|
|
54
|
+
::: callout kind=warning title="경보가 울릴 때"
|
|
55
|
+
배기 경보가 울리면 진행 중인 작업을 멈추고 용기 뚜껑을 닫은 뒤 새시를 끝까지 내린다. 경보를 끄거나 테이프로 표시등을 가리지 않는다. 실험실 밖으로 나와 연구지원팀(내선 3150)에 알리고, 조치가 끝날 때까지 해당 흄후드에 사용 금지 표지를 건다.
|
|
56
|
+
:::
|
|
57
|
+
|
|
58
|
+
## 작업 중 지켜야 할 사항
|
|
59
|
+
|
|
60
|
+
작업은 새시 면에서 15cm 이상 안쪽에서 한다. 머리를 후드 안으로 넣지 않으며, 새시를 작업 높이보다 올린 채 자리를 비우지 않는다. 후드 안에 큰 장비를 둘 때는 받침대를 써서 바닥과 장비 사이에 5cm 정도 틈을 두어 기류가 장비 밑으로 지나가게 한다. 가열판과 같은 열원은 기류를 흐트러뜨리므로 후드 중앙 뒤쪽에 둔다. 산과 휘발성 유기 용매를 쓰는 작업은 한 후드 안에서 동시에 하지 않으며, 둘을 이어서 해야 하는 날에는 연구지원팀과 미리 협의해 후드별 사용 시간표를 정하고 그 내용을 점검표 비고란에 적어 다음 사용자도 알 수 있게 한다.
|
|
61
|
+
|
|
62
|
+
## 사용 후 정리
|
|
63
|
+
|
|
64
|
+
1. 사용한 시약과 폐액 용기의 뚜껑을 닫아 지정 보관장으로 옮긴다.
|
|
65
|
+
2. 작업대를 물티슈나 지정 세척제로 닦는다.
|
|
66
|
+
3. 새시를 끝까지 내린다.
|
|
67
|
+
4. 다음 사용자가 30분 안에 없으면 조명을 끄고 배기 팬은 그대로 둔다.
|
|
68
|
+
|
|
69
|
+
배기 팬은 야간에도 끄지 않는다. 팬을 끄면 후드 안에 남은 증기가 실험실로 퍼질 수 있고, 다시 켰을 때 면속도가 안정되기까지 3분 정도가 걸린다.
|
|
70
|
+
|
|
71
|
+
# 월간 풍속 측정
|
|
72
|
+
|
|
73
|
+
## 측정 준비
|
|
74
|
+
|
|
75
|
+
측정은 연구지원팀 담당자가 매월 첫째 주 화요일 오전에 한다. 측정 전날 실험실 게시판과 메일로 측정 시간을 알리고, 측정 시간에는 해당 흄후드를 쓰지 않도록 사용 예약을 막는다. 열선 풍속계는 연 1회 교정을 받은 것을 쓰고, 교정 만료일을 측정 기록에 함께 적는다.
|
|
76
|
+
|
|
77
|
+
## 측정 방법
|
|
78
|
+
|
|
79
|
+
1. 새시를 작업 높이 40cm에 맞추고 후드 안의 물건을 모두 꺼낸다.
|
|
80
|
+
2. 개구부를 가로 3칸, 세로 2칸으로 나눠 6개 지점을 정한다.
|
|
81
|
+
3. 각 지점 중앙에서 풍속계 탐침을 새시 면과 같은 높이에 두고 10초간 평균값을 읽는다.
|
|
82
|
+
4. 6개 값의 평균을 면속도로 기록하고, 가장 낮은 값과 가장 높은 값도 함께 적는다.
|
|
83
|
+
5. 표시창 값과 측정 평균의 차이가 0.05m/s를 넘으면 표시창 보정을 요청한다.
|
|
84
|
+
|
|
85
|
+
표 2. 2026년 3분기 면속도 측정 결과 (예시)
|
|
86
|
+
|
|
87
|
+
| 설비 | 7월 (m/s) | 8월 (m/s) | 9월 (m/s) | 판정 |
|
|
88
|
+
| --- | ---: | ---: | ---: | --- |
|
|
89
|
+
| FH-301-1 | 0.52 | 0.50 | 0.51 | 적합 |
|
|
90
|
+
| FH-301-2 | 0.48 | 0.47 | 0.45 | 적합 |
|
|
91
|
+
| FH-301-3 | 0.55 | 0.54 | 0.55 | 적합 |
|
|
92
|
+
| FH-302-1 | 0.43 | 0.39 | 0.47 | 8월 부적합 |
|
|
93
|
+
| FH-302-2 | 0.50 | 0.51 | 0.50 | 적합 |
|
|
94
|
+
| FH-302-3 | 0.58 | 0.57 | 0.58 | 적합 |
|
|
95
|
+
|
|
96
|
+
자료: 연구지원팀 월간 측정 기록
|
|
97
|
+
|
|
98
|
+
FH-302-1의 8월 값은 기준 하한 0.4m/s 아래였다. 배기 덕트 댐퍼가 반쯤 닫혀 있던 것이 원인이었고, 댐퍼를 연 뒤 재측정에서 0.47m/s로 돌아왔다.
|
|
99
|
+
|
|
100
|
+
# 이상 시 조치
|
|
101
|
+
|
|
102
|
+
## 판정 기준과 조치
|
|
103
|
+
|
|
104
|
+
표 3. 이상 유형별 조치 (예시)
|
|
105
|
+
|
|
106
|
+
| 이상 유형 | 1차 조치 | 연락처 | 재사용 조건 |
|
|
107
|
+
| --- | --- | --- | --- |
|
|
108
|
+
| 면속도 0.4m/s 미만 | 사용 중지, 표지 부착 | 연구지원팀 3150 | 재측정 적합 |
|
|
109
|
+
| 면속도 0.6m/s 초과 | 사용 가능, 신고 | 연구지원팀 3150 | 다음 월간 측정 |
|
|
110
|
+
| 배기 경보 | 작업 중지, 새시 닫기 | 연구지원팀 3150 | 원인 제거, 재측정 |
|
|
111
|
+
| 새시 걸림 | 사용 중지 | 시설팀 3200 | 수리 완료 |
|
|
112
|
+
| 시약 유출 | 유출 키트 사용 | 안전관리실 3119 | 정화 확인 |
|
|
113
|
+
|
|
114
|
+
면속도가 기준보다 높은 경우에는 바로 위험하지는 않지만, 새시 가장자리에서 기류가 소용돌이쳐 오히려 증기가 밖으로 새는 일이 생긴다. 신고를 받으면 연구지원팀이 다음 월간 측정 전에 댐퍼를 조정한다.
|
|
115
|
+
|
|
116
|
+
## 수리 후 재사용
|
|
117
|
+
|
|
118
|
+
수리나 조정이 끝나면 연구지원팀 담당자가 3장의 측정 방법으로 면속도를 다시 잰다. 결과가 적합이면 사용 금지 표지를 떼고 수리 이력 대장과 안전 관리 시스템에 수리 내용, 측정값, 재사용 일시를 적는다. 같은 흄후드에서 3개월 안에 같은 이상이 두 번 생기면 외부 검사 기관에 정밀 검사를 의뢰한다.
|