@promptbook/components 0.103.0-20 → 0.103.0-22

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/umd/index.umd.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('react'), require('spacetrim'), require('react-dom'), require('path'), require('crypto'), require('@monaco-editor/react'), require('rxjs'), require('waitasecond'), require('crypto-js/enc-hex'), require('crypto-js/sha256'), require('crypto-js'), require('mime-types'), require('papaparse'), require('moment'), require('colors'), require('highlight.js'), require('katex'), require('showdown')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', 'react', 'spacetrim', 'react-dom', 'path', 'crypto', '@monaco-editor/react', 'rxjs', 'waitasecond', 'crypto-js/enc-hex', 'crypto-js/sha256', 'crypto-js', 'mime-types', 'papaparse', 'moment', 'colors', 'highlight.js', 'katex', 'showdown'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-components"] = {}, global.jsxRuntime, global.react, global.spaceTrim, global.reactDom, global.path, global.crypto, global.Editor, global.rxjs, global.waitasecond, global.hexEncoder, global.sha256, global.cryptoJs, global.mimeTypes, global.papaparse, null, null, global.hljs, global.katex, global.showdown));
5
- })(this, (function (exports, jsxRuntime, react, spaceTrim, reactDom, path, crypto, Editor, rxjs, waitasecond, hexEncoder, sha256, cryptoJs, mimeTypes, papaparse, moment, colors, hljs, katex, showdown) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('react'), require('spacetrim'), require('react-dom'), require('path'), require('crypto'), require('@monaco-editor/react'), require('rxjs'), require('waitasecond'), require('crypto-js/enc-hex'), require('crypto-js/sha256'), require('crypto-js'), require('mime-types'), require('papaparse'), require('moment'), require('colors'), require('highlight.js'), require('katex'), require('showdown'), require('qrcode')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', 'react', 'spacetrim', 'react-dom', 'path', 'crypto', '@monaco-editor/react', 'rxjs', 'waitasecond', 'crypto-js/enc-hex', 'crypto-js/sha256', 'crypto-js', 'mime-types', 'papaparse', 'moment', 'colors', 'highlight.js', 'katex', 'showdown', 'qrcode'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["promptbook-components"] = {}, global.jsxRuntime, global.react, global.spaceTrim, global.reactDom, global.path, global.crypto, global.Editor, global.rxjs, global.waitasecond, global.hexEncoder, global.sha256, global.cryptoJs, global.mimeTypes, global.papaparse, null, null, global.hljs, global.katex, global.showdown, global.QRCode));
5
+ })(this, (function (exports, jsxRuntime, react, spaceTrim, reactDom, path, crypto, Editor, rxjs, waitasecond, hexEncoder, sha256, cryptoJs, mimeTypes, papaparse, moment, colors, hljs, katex, showdown, QRCode) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -12,6 +12,7 @@
12
12
  var sha256__default = /*#__PURE__*/_interopDefaultLegacy(sha256);
13
13
  var hljs__default = /*#__PURE__*/_interopDefaultLegacy(hljs);
14
14
  var katex__default = /*#__PURE__*/_interopDefaultLegacy(katex);
15
+ var QRCode__default = /*#__PURE__*/_interopDefaultLegacy(QRCode);
15
16
 
16
17
  // ⚠️ WARNING: This code has been generated so that any manual changes will be overwritten
17
18
  /**
@@ -27,7 +28,7 @@
27
28
  * @generated
28
29
  * @see https://github.com/webgptorg/promptbook
29
30
  */
30
- const PROMPTBOOK_ENGINE_VERSION = '0.103.0-20';
31
+ const PROMPTBOOK_ENGINE_VERSION = '0.103.0-22';
31
32
  /**
32
33
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
33
34
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -5701,9 +5702,9 @@
5701
5702
  var styles$3 = {"BookEditor":"BookEditor-module_BookEditor__s-0PU","bookEditorContainer":"BookEditor-module_bookEditorContainer__wLMwM","isVerbose":"BookEditor-module_isVerbose__VQ6iL","bookEditorWrapper":"BookEditor-module_bookEditorWrapper__twppD","isBorderRadiusDisabled":"BookEditor-module_isBorderRadiusDisabled__h1I3v","dropOverlay":"BookEditor-module_dropOverlay__xWWoX","bookEditorActionbar":"BookEditor-module_bookEditorActionbar__KW6dc","button":"BookEditor-module_button__hS390"};
5702
5703
  styleInject(css_248z$4);
5703
5704
 
5704
- const version="0.103.0-20";
5705
+ const version="0.103.0-22";
5705
5706
 
5706
- var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book",formfactorName:"GENERIC",parameters:[{name:"knowledgeContent",description:"Markdown document content",isInput:true,isOutput:false},{name:"knowledgePieces",description:"The knowledge JSON object",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}",resultingParameterName:"knowledgePieces",dependentParameterNames:["knowledgeContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge from Markdown\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book`\n- INPUT PARAMETER `{knowledgeContent}` Markdown document content\n- OUTPUT PARAMETER `{knowledgePieces}` The knowledge JSON object\n\n## Knowledge\n\n<!-- TODO: [🍆] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}\n```\n\n`-> {knowledgePieces}`\n"}],sourceFile:"./books/prepare-knowledge-from-markdown.book"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-keywords.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"keywords",description:"Keywords separated by comma",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}",resultingParameterName:"keywords",dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Keywords\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-keywords.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{keywords}` Keywords separated by comma\n\n## Knowledge\n\n<!-- TODO: [🍆] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}\n```\n\n`-> {keywords}`\n"}],sourceFile:"./books/prepare-knowledge-keywords.book"},{title:"Prepare Knowledge-piece Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-title.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"title",description:"The title of the document",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}",resultingParameterName:"title",expectations:{words:{min:1,max:8}},dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge-piece Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-title.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{title}` The title of the document\n\n## Knowledge\n\n- EXPECT MIN 1 WORD\n- EXPECT MAX 8 WORDS\n\n```markdown\nYou are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-knowledge-title.book"},{title:"Prepare Persona",pipelineUrl:"https://promptbook.studio/promptbook/prepare-persona.book",formfactorName:"GENERIC",parameters:[{name:"availableModels",description:"List of available model names together with their descriptions as JSON",isInput:true,isOutput:false},{name:"personaDescription",description:"Description of the persona",isInput:true,isOutput:false},{name:"modelsRequirements",description:"Specific requirements for the model",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-model-requirements",title:"Make modelRequirements",content:"You are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n```json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n```\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n```json\n{availableModels}\n```\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}",resultingParameterName:"modelsRequirements",format:"JSON",dependentParameterNames:["availableModels","personaDescription"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Persona\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-persona.book`\n- INPUT PARAMETER `{availableModels}` List of available model names together with their descriptions as JSON\n- INPUT PARAMETER `{personaDescription}` Description of the persona\n- OUTPUT PARAMETER `{modelsRequirements}` Specific requirements for the model\n\n## Make modelRequirements\n\n- FORMAT JSON\n\n```markdown\nYou are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n\\`\\`\\`json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n\\`\\`\\`\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n\\`\\`\\`json\n{availableModels}\n\\`\\`\\`\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}\n```\n\n`-> {modelsRequirements}`\n"}],sourceFile:"./books/prepare-persona.book"},{title:"Prepare Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-title.book",formfactorName:"GENERIC",parameters:[{name:"book",description:"The book to prepare the title for",isInput:true,isOutput:false},{name:"title",description:"Best title for the book",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-title",title:"Make title",content:"Make best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"✍ Convert Knowledge-piece to title\" but \"✍ Title\"_\n\n## The workflow\n\n> {book}",resultingParameterName:"title",expectations:{words:{min:1,max:8},lines:{min:1,max:1}},dependentParameterNames:["book"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-title.book`\n- INPUT PARAMETER `{book}` The book to prepare the title for\n- OUTPUT PARAMETER `{title}` Best title for the book\n\n## Make title\n\n- EXPECT MIN 1 Word\n- EXPECT MAX 8 Words\n- EXPECT EXACTLY 1 Line\n\n```markdown\nMake best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"✍ Convert Knowledge-piece to title\" but \"✍ Title\"_\n\n## The workflow\n\n> {book}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-title.book"},{title:"📊 Curriculum Audit",pipelineUrl:"https://promptbook.studio/promptbook//examples/lsvp-asistent.book",formfactorName:"GENERIC",parameters:[{name:"result",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"prompt",title:"Prompt",content:"Asistent pro LŠVP\n\nPERSONA Jsi asistent pro RVP Lyceum v rámci Národního pedagogického institutu České Republiky\nMETA IMAGE https://edulk.cz/getFile/id:475818/type:large/02%20zna%C4%8Dka%20npi.jpg\nRULE Pokud jsi nejsi jistý, napiš nevím\nKNOWLEDGE ./241129_Lyceum_final.pdf\nCONTEXT Obecně dokážeš řešit libovolné ŠVP, aktuálně řešíš {Školní vzdělávací program LYCEUM}\nRULE Z {Porovnání RVP a ŠVP - postup} je nejdůležitější fáze 3\nKNOWLEDGE {Školní vzdělávací program LYCEUM} ./ŠVP Lyceum - Finance v digitální době.pdf\nKNOWLEDGE @Slovník\n\n**Interní slovník - RVP/ŠVP**\n\n**RVP**\n\nRámcový vzdělávací program pro obor vzdělání Lyceum je dokument na národní úrovni, který formuluje požadavky na školní vzdělávací programy ve formě především očekávaných výsledků učení, kterých mají žáci absolvováním tohoto programu na dané škole dosáhnout.\n\n**ŠVP**\n\nŠkolní vzdělávací program pro obor vzdělání Lyceum je dokument každé jednotlivé školy, který popisuje v jakých vyučovacích předmětech/ vzdělávacích modulech a v jakých ročnících budou požadované očekávané výsledky učení naplněny. Zároveň formuluje další očekávané výsledky učení, které naplňují disponibilní část vyučovacího času určeného RVP pro tento obor vzdělání.\n\n**Očekávaný výsledek učení (OVU)**\n\nVyjadřuje jednotlivý požadavek na to, co mají žáci umět na konci vzdělávacího programu, tzn. jejich požadované kompetence. Je vyjádřen formulací, která je uvozena činnostním slovesem a dále obsahuje předmět této činnosti. Formulace je konkretizována resp. doplněna zpravidla formou odrážek vymezením dílčích znalostí, dovedností, postojů, jejichž splnění je předpokladem dosažení OVU jako celku.\n\n_Příklad:_\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th><p><strong>Žák/žákyně řídí realizaci jednoduchého projektu</strong></p></th></tr><tr><td><ul><li>naplánuje aktivity projektu</li></ul></td></tr><tr><td><ul><li>navrhne rozpočet projektu vzhledem k navrženým aktivitám</li></ul></td></tr><tr><td><ul><li>stanoví základní ukazatele a sleduje jejich naplňování</li></ul></td></tr><tr><td><ul><li>vede projektový tým</li></ul></td></tr><tr><td><ul><li>uvede, jak by řešil krizové situace v projektu</li></ul></td></tr><tr><td><ul><li>vyhodnotí úspěšnost projektu</li></ul></td></tr></tbody></table></div>\n\n**Vzdělávací oblasti**\n\nOčekávané výsledky učení jsou v **_RVP členěny do 4 vzdělávacích oblastí_**, které tvoří společný všeobecně vzdělávací základ:\n\n- Osobnostní rozvoj, vzdělávání ke zdraví, bezpečí a produktivnímu pracovnímu životu (kariéře)\n- Komunikační a jazykové vzdělávání\n- Aplikované vzdělávání STEM (Science, Technology, Engeneering, Math), tj. přírodní vědy, informatika, technika, matematika\n- Prakticky orientované vzdělávání společenskovědní a humanitní\n\nKaždá vzdělávací oblast se dále člení na okruhy, v jejichž rámci jsou OVU samostatně číslované.\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th rowspan=\"21\"><ul><li>Prakticky orientované vzdělávání společenskovědní a humanitní</li></ul></th><th rowspan=\"21\"><p><strong>Člověk, ekonomie a podnikání</strong></p></th><th rowspan=\"7\"><p><strong>1</strong></p></th><th><p><strong>zpracuje podklady související s podnikáním</strong></p></th></tr><tr><td><p>připraví podnikatelský záměr</p></td></tr><tr><td><p>sestaví zakladatelský rozpočet</p></td></tr><tr><td><p>zkalkuluje cenu zboží nebo služby</p></td></tr><tr><td><p>vysvětlí na příkladu základní povinnosti podnikatele vůči státu a zaměstnancům</p></td></tr><tr><td><p>vede daňovou evidenci</p></td></tr><tr><td><p>vysvětlí na příkladech etiku v podnikání</p></td></tr><tr><td rowspan=\"7\"><p><strong>2</strong></p></td><td><p><strong>řídí realizaci jednoduchého projektu</strong></p></td></tr><tr><td><p>naplánuje aktivity projektu</p></td></tr><tr><td><p>navrhne rozpočet projektu vzhledem k navrženým aktivitám</p></td></tr><tr><td><p>stanoví základní ukazatele a sleduje jejich naplňování</p></td></tr><tr><td><p>vede projektový tým</p></td></tr><tr><td><p>uvede, jak by řešil krizové situace v projektu</p></td></tr><tr><td><p>vyhodnotí úspěšnost projektu</p></td></tr><tr><td rowspan=\"7\"><p><strong>3</strong></p></td><td><p><strong>aplikuje ekonomické teorie v osobním a profesním životě</strong></p></td></tr><tr><td><p>vysvětlí základní ekonomické otázky</p></td></tr><tr><td><p>vysvětí stanovení rovnovážné ceny na dokonalém i nedokonalém trhu</p></td></tr><tr><td><p>charakterizuje výrobní faktory a vysvětlí hranici produkčních možností a náklady obětované příležitosti</p></td></tr><tr><td><p>uvede nejdůležitější makroekonomické pojmy a vliv jejich výše na kvalitu života a podnikání v daném státě</p></td></tr><tr><td><p>vysvětlí podstatu inflace a její důsledky na finanční situaci obyvatel a na příkladu ukáže jak se bránit jejím nepříznivým důsledkům</p></td></tr><tr><td><p>uvede hlavní výhody a nevýhody mezinárodního obchodu a vliv ochranářských opatření na ekonomickou situaci dané země</p></td></tr><tr><td></td><td></td><td><p><strong>4</strong></p></td><td><p>Atd.</p></td></tr></tbody></table></div>\n\n**Vyučovací předmět / vzdělávací modul**\n\nOčekávané výsledky učení jsou v **ŠVP** členěny do vyučovacích předmětů nebo vzdělávacích modulů, které jsou dále zařazeny do jednoho nebo více ročníků 4letého studia. Vyučovací předmět / vzdělávací modul tvoří vyučovací jednotku, kde jsou očekávané výsledky učení dále rozpracovány pro potřeby výuky podle následující šablony\n\n| **A. VSTUPNÍ ČÁST** |\n| --- |\n| **1\\. Název** |\n| **2\\. Kód** (kódy by měly být navázány na obory vzdělání a výsledky učení) |\n| **2a) Kategorie vzdělání** - v případě, že nebude součástí kódu |\n| **3\\. Typ vyučovací jednotky** (modul, předmět, stáž apod.) |\n| **4\\. Délka** (počet hodin - dělitelný čtyřmi (optimální modul 16, 32 hodin = týden výuky) |\n| **5\\. Platnost** (datum, od kterého platí) |\n| **6\\. Vstupní předpoklady** (vymezení požadované úrovně vstupních vědomostí a dovedností, které jsou předpokladem úspěšného studia) |\n| |\n| **B. JÁDRO VYUČOVACÍ JEDNOTKY** |\n| **1\\. Charakteristika** (stručná anotace popisující obecné cíle a pojetí) |\n| **2\\. Očekávané výsledky učení a jejich indikátory (převzaté z RVP nebo dále konkretizované)** |\n| **3\\. Podpora rozvoje klíčových kompetencí a základních gramotností** (které klíčové kompetence jsou v rozvíjeny) |\n| **4\\. Obsah vzdělávání** (rozpis učiva) |\n| **5\\. Vzdělávací strategie** (strategie výuky, resp. učební činnosti žáků, které jsou doporučené pro dosažení výsledků) |\n| |\n| **C. VÝSTUPNÍ ČÁST** |\n| **1\\. Způsob ověřování dosažených výsledků** (ve vazbě na jednotlivé výsledky učení) |\n| **2\\. Kritéria hodnocení** (co znamená splnění výsledků učení, kdy je splněna celá vyučovací jednotka, kritéria pro známky, příp. procentuální, slovní hodnocení) |\n| **3\\. Doporučená studijní literatura, odkazy na ilustrační zdroje** |\n| **4\\. Poznámky** |\n\n**Soulad OVU RVP a ŠVP**\n\nTento soulad je předmětem zjišťování. Soulad nastává, jestliže jsou očekávané výsledky učení z jednotlivých vzdělávacích oblastí RVP **obsaženy** ve vyučovacích předmětech/ vzdělávacích modulech ŠVP jednotlivých škol, tzn. že v ŠVP se objevuje jejich formulace buď v doslovném nebo podobném znění v jednom nebo více vyučovacích předmětech/ vzdělávacích modulech.\n\n_Příklad souladu:_\n\nRVP ŠVP - komunikace a marketing (SŠ obchodní Č.\n\n| **2** | **řídí realizaci jednoduchého projektu** |\n| --- | --- |\n| naplánuje aktivity projektu |\n| navrhne rozpočet projektu vzhledem k navrženým aktivitám |\n| stanoví základní ukazatele a sleduje jejich naplňování |\n| vede projektový tým |\n| uvede, jak by řešil krizové situace v projektu |\n| vyhodnotí úspěšnost projektu |\n\nKNOWLEDGE {Porovnání RVP a ŠVP - postup}\n\n\n# AUDITNÍ PROTOKOL ŠVP-RVP\n\n# (POPIS KONTROLNÍHO ALGORITMU)\n\nMetodika je určena pro **Kvantifikaci Shody** školního vzdělávacího programu (ŠVP) s Rámcovým vzdělávacím programem (RVP).\n\n## FÁZE 1: VALIDACE DOKUMENTACE\n\n**Cíl:** Ověřit platnost, aktuálnost a strukturu zdrojových dokumentů.\n\n- **RVP Verifikace:** Otevřít aktuální verzi RVP (např. RVP ZV/G/SOŠ).\n- **Typová shoda:** Ověřit, že RVP se vztahuje k danému typu školy.\n- **ŠVP Dimenze:** Identifikovat a izolovat relevantní části ŠVP: Profil absolventa, Klíčové kompetence (KK), Vzdělávací oblasti (VO), případně Učební plán (UP).\n- **Verzování:** Potvrdit, že obě verze (RVP a ŠVP) jsou nejnovější a platné (včetně dodatků RVP).\n\n## FÁZE 2: DATABÁZOVÉ MAPOVÁNÍ VÝSTUPŮ (MASTER MATICE)\n\n**Cíl:** Vytvořit systémovou databázi pro křížové porovnání všech povinných komponent RVP se ŠVP.\n\n- **Dekompozice RVP:** Rozložit RVP na základní povinné komponenty: Klíčové kompetence, Vzdělávací oblasti a obory, Očekávané výstupy (OVU), Průřezová témata (PT).\n- **Přiřazovací mapa:** Vytvořit hlavní kontrolní matici (Master Matice) pro záznam vazeb.\n\n| Oblast RVP | Výstup RVP (OVU) | Odpovídající Část ŠVP (Předmět/Ročník) | Konkrétní Tématický Celek v ŠVP | Stav Shody (Protokol) |\n| --- | --- | --- | --- | --- |\n| ... | ... | ... | ... | ... |\n| --- | --- | --- | --- | --- |\n\n## FÁZE 3: ALGORITMICKÁ KONTROLA POKRYTÍ A HLOUBKY\n\n**Cíl:** Posoudit, zda každý povinný výstup RVP je adekvátně reflektován v obsahu ŠVP, a přidělit bodovou hodnotu pro kvantifikaci.\n\n- **Audit OVU:** Projít každý jednotlivý Očekávaný výstup (OVU) z RVP.\n- **Kódování stavu a bodování:** U každého OVU v matici označit stav pokrytí dle následujícího schématu:\n\n| Kód (Protokol) | Popis (Kvalitativní zjištění) | Bodová hodnota (Kvantifikace) |\n| --- | --- | --- |\n| ✅ | Plná shoda (Výstup pokryt v plném rozsahu, odpovídající úrovni RVP) | 1,0 |\n| --- | --- | --- |\n| ⚠️ | Částečná shoda (Formální pokrytí, omezený rozsah, chybná návaznost) | 0,5 |\n| --- | --- | --- |\n| ❌ | Absence (Výstup zcela chybí v obsahu ŠVP) | 0,0 |\n| --- | --- | --- |\n\n- **Defektologie ŠVP:** Identifikovat a zaznamenat deficity ŠVP: Chybějící výstupy (❌), Sémantické překryvy, Přetížení obsahu.\n- **Kvalitativní posun:** Ověřit, zda je formulace výstupů v ŠVP **aktivní, měřitelná a v souladu** s úrovní RVP.\n\n## FÁZE 4: STRUKTURÁLNÍ VERIFIKACE NÁVAZNOSTI (VERTIKÁLA/HORIZONTÁLA)\n\n**Cíl:** Zkontrolovat logickou posloupnost a provázanost učiva v rámci ŠVP.\n\n- **Vertikální Kontrola:** Ověřit posloupnost OVU a učiva uvnitř jednoho předmětu/oblasti (postup od jednodušších ke složitějším konceptům napříč ročníky).\n- **Horizontální Kontrola:** Zkontrolovat logické provázání napříč vzdělávacími oblastmi a předměty (např. fyzika ↔ matematika).\n- **PT Integrace:** Audit reálné integrace Průřezových témat (PT) do konkrétních částí obsahu, metod a projektů.\n\n## FÁZE 5: ANALÝZA ŠKOLNÍ PROFILACE A ROZŠÍŘENÍ RVP\n\n**Cíl:** Validovat, že profilace školy je **v souladu** s RVP a nejedná se o **rozpor**.\n\n- **Nekonfliktnost:** Porovnat definovaný Profil absolventa školy s Klíčovými kompetencemi RVP. Profil ŠVP musí RVP rozvíjet, nikoli mu odporovat.\n- **Modularita:** Zkontrolovat, zda volitelné předměty a rozšiřující moduly logicky navazují na vzdělávací oblasti RVP.\n- **Implementace specializace:** Popisně uvést, jak je školní profilace (např. STEM zaměření, projektová výuka) integrována do OVU a kompetencí definovaných RVP.\n\n## FÁZE 6: GENERÁTOR ZÁVĚREČNÉ ZPRÁVY A KVANTIFIKACE\n\n**Cíl:** Syntetizovat výsledky, kvantifikovat soulad a generovat závazné návrhy na korekce.\n\n### 6.1 Kvantifikace Souladu\n\nVypočítat Index shody (IS) na základě bodového hodnocení (Fáze 3):\n\n### 6.2 Interpretace Indexu Shody (IS)\n\nKlasifikace souladu pro standardizované vyhodnocení:\n\n| Interval IS | Klasifikace souladu | Popis |\n| --- | --- | --- |\n| 95-100 % | Výborný soulad | ŠVP plně odpovídá RVP, pouze stylistické nebo formální rozdíly. |\n| --- | --- | --- |\n| 85-94 % | Dobrá shoda | ŠVP pokrývá všechny klíčové výstupy, menší korekce nutné. |\n| --- | --- | --- |\n| 70-84 % | Částečná shoda | Významné nedostatky v některých oblastech, nutná revize obsahu. |\n| --- | --- | --- |\n| < 70 % | Kritická neshoda | ŠVP neplní rámcové požadavky, ohrožuje legislativní soulad. |\n| --- | --- | --- |\n\n### 6.3 Doplňkové Indexy\n\nVypočítat následující doplňkové indexy pro detailní kvalitativní analýzu:\n\n- **Index kompetenčního souladu (IKS):** Poměr pokrytí klíčových kompetencí RVP v ŠVP.\n- **Index průřezové integrace (IPI):** Míra reálné integrace průřezových témat do výuky.\n- **Index hloubky pokrytí (IHP):** Procento výstupů, které jsou v ŠVP rozvedeny na konkrétní výukové cíle (měřitelné, aktivní formulace).\n- **Index profilové rozšiřitelnosti (IPR):** Kolik rozšiřujících nebo profilových výstupů přesahuje rámec RVP, aniž by narušily jeho strukturu.\n\n### 6.4 Vizuální výstupy\n\nZajistit generování následujících vizualizací pro Závěrečnou zprávu:\n\n- Graf pokrytí po vzdělávacích oblastech (Sloupcový graf IS pro VO).\n- Pavoukový diagram Klíčových kompetencí (RVP vs. ŠVP).\n- Mapa defektů (Vizualizace ❌ a ⚠️ výstupů).\n\n### 6.5 Struktura Závěrečné Zprávy\n\nZpráva musí být strukturována dle standardizovaného formátu:\n\n| Oddíl | Obsah |\n| --- | --- |\n| A. Identifikace | Název školy, IZO, typ školy, datum revize, zpracovatel, verze ŠVP a RVP. |\n| --- | --- |\n| B. Shrnutí výsledků | Celkový Index Shody (IS), hlavní závěry a doporučení. |\n| --- | --- |\n| C. Kvantitativní analýza | Přehled IS v % dle kategorií OVU / VO / kompetencí. |\n| --- | --- |\n| D. Kvalitativní analýza | Slovní zhodnocení kvality souladu (formulace, obtížnost, integrace PT). |\n| --- | --- |\n| E. Rizikové oblasti | Přehled nalezených defektů (chybějící OVU, přetížení, formální shoda). |\n| --- | --- |\n| F. Návrhy opatření (Korekční plán) | Přesné návrhy změn - **Co, Kde, Kdo** má upravit, včetně termínu. |\n| --- | --- |\n| G. Přílohy | Master Matice (Fáze 2-3), revizní tabulka, výstupní grafy a metriky. |\n| --- | --- |\n\n\n\n\n.",resultingParameterName:"result",dependentParameterNames:[]}],personas:[],preparations:[{id:1,promptbookVersion:"0.103.0-19",usage:{price:{value:0},input:{tokensCount:{value:0},charactersCount:{value:0},wordsCount:{value:0},sentencesCount:{value:0},linesCount:{value:0},paragraphsCount:{value:0},pagesCount:{value:0}},output:{tokensCount:{value:0},charactersCount:{value:0},wordsCount:{value:0},sentencesCount:{value:0},linesCount:{value:0},paragraphsCount:{value:0},pagesCount:{value:0}}}}],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"Asistent pro LŠVP\n\nPERSONA Jsi asistent pro RVP Lyceum v rámci Národního pedagogického institutu České Republiky\nMETA IMAGE https://edulk.cz/getFile/id:475818/type:large/02%20zna%C4%8Dka%20npi.jpg\nRULE Pokud jsi nejsi jistý, napiš nevím\nKNOWLEDGE ./241129_Lyceum_final.pdf\nCONTEXT Obecně dokážeš řešit libovolné ŠVP, aktuálně řešíš {Školní vzdělávací program LYCEUM}\nRULE Z {Porovnání RVP a ŠVP - postup} je nejdůležitější fáze 3\nKNOWLEDGE {Školní vzdělávací program LYCEUM} ./ŠVP Lyceum - Finance v digitální době.pdf\nKNOWLEDGE @Slovník\n\n**Interní slovník - RVP/ŠVP**\n\n**RVP**\n\nRámcový vzdělávací program pro obor vzdělání Lyceum je dokument na národní úrovni, který formuluje požadavky na školní vzdělávací programy ve formě především očekávaných výsledků učení, kterých mají žáci absolvováním tohoto programu na dané škole dosáhnout.\n\n**ŠVP**\n\nŠkolní vzdělávací program pro obor vzdělání Lyceum je dokument každé jednotlivé školy, který popisuje v jakých vyučovacích předmětech/ vzdělávacích modulech a v jakých ročnících budou požadované očekávané výsledky učení naplněny. Zároveň formuluje další očekávané výsledky učení, které naplňují disponibilní část vyučovacího času určeného RVP pro tento obor vzdělání.\n\n**Očekávaný výsledek učení (OVU)**\n\nVyjadřuje jednotlivý požadavek na to, co mají žáci umět na konci vzdělávacího programu, tzn. jejich požadované kompetence. Je vyjádřen formulací, která je uvozena činnostním slovesem a dále obsahuje předmět této činnosti. Formulace je konkretizována resp. doplněna zpravidla formou odrážek vymezením dílčích znalostí, dovedností, postojů, jejichž splnění je předpokladem dosažení OVU jako celku.\n\n_Příklad:_\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th><p><strong>Žák/žákyně řídí realizaci jednoduchého projektu</strong></p></th></tr><tr><td><ul><li>naplánuje aktivity projektu</li></ul></td></tr><tr><td><ul><li>navrhne rozpočet projektu vzhledem k navrženým aktivitám</li></ul></td></tr><tr><td><ul><li>stanoví základní ukazatele a sleduje jejich naplňování</li></ul></td></tr><tr><td><ul><li>vede projektový tým</li></ul></td></tr><tr><td><ul><li>uvede, jak by řešil krizové situace v projektu</li></ul></td></tr><tr><td><ul><li>vyhodnotí úspěšnost projektu</li></ul></td></tr></tbody></table></div>\n\n**Vzdělávací oblasti**\n\nOčekávané výsledky učení jsou v **_RVP členěny do 4 vzdělávacích oblastí_**, které tvoří společný všeobecně vzdělávací základ:\n\n- Osobnostní rozvoj, vzdělávání ke zdraví, bezpečí a produktivnímu pracovnímu životu (kariéře)\n- Komunikační a jazykové vzdělávání\n- Aplikované vzdělávání STEM (Science, Technology, Engeneering, Math), tj. přírodní vědy, informatika, technika, matematika\n- Prakticky orientované vzdělávání společenskovědní a humanitní\n\nKaždá vzdělávací oblast se dále člení na okruhy, v jejichž rámci jsou OVU samostatně číslované.\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th rowspan=\"21\"><ul><li>Prakticky orientované vzdělávání společenskovědní a humanitní</li></ul></th><th rowspan=\"21\"><p><strong>Člověk, ekonomie a podnikání</strong></p></th><th rowspan=\"7\"><p><strong>1</strong></p></th><th><p><strong>zpracuje podklady související s podnikáním</strong></p></th></tr><tr><td><p>připraví podnikatelský záměr</p></td></tr><tr><td><p>sestaví zakladatelský rozpočet</p></td></tr><tr><td><p>zkalkuluje cenu zboží nebo služby</p></td></tr><tr><td><p>vysvětlí na příkladu základní povinnosti podnikatele vůči státu a zaměstnancům</p></td></tr><tr><td><p>vede daňovou evidenci</p></td></tr><tr><td><p>vysvětlí na příkladech etiku v podnikání</p></td></tr><tr><td rowspan=\"7\"><p><strong>2</strong></p></td><td><p><strong>řídí realizaci jednoduchého projektu</strong></p></td></tr><tr><td><p>naplánuje aktivity projektu</p></td></tr><tr><td><p>navrhne rozpočet projektu vzhledem k navrženým aktivitám</p></td></tr><tr><td><p>stanoví základní ukazatele a sleduje jejich naplňování</p></td></tr><tr><td><p>vede projektový tým</p></td></tr><tr><td><p>uvede, jak by řešil krizové situace v projektu</p></td></tr><tr><td><p>vyhodnotí úspěšnost projektu</p></td></tr><tr><td rowspan=\"7\"><p><strong>3</strong></p></td><td><p><strong>aplikuje ekonomické teorie v osobním a profesním životě</strong></p></td></tr><tr><td><p>vysvětlí základní ekonomické otázky</p></td></tr><tr><td><p>vysvětí stanovení rovnovážné ceny na dokonalém i nedokonalém trhu</p></td></tr><tr><td><p>charakterizuje výrobní faktory a vysvětlí hranici produkčních možností a náklady obětované příležitosti</p></td></tr><tr><td><p>uvede nejdůležitější makroekonomické pojmy a vliv jejich výše na kvalitu života a podnikání v daném státě</p></td></tr><tr><td><p>vysvětlí podstatu inflace a její důsledky na finanční situaci obyvatel a na příkladu ukáže jak se bránit jejím nepříznivým důsledkům</p></td></tr><tr><td><p>uvede hlavní výhody a nevýhody mezinárodního obchodu a vliv ochranářských opatření na ekonomickou situaci dané země</p></td></tr><tr><td></td><td></td><td><p><strong>4</strong></p></td><td><p>Atd.</p></td></tr></tbody></table></div>\n\n**Vyučovací předmět / vzdělávací modul**\n\nOčekávané výsledky učení jsou v **ŠVP** členěny do vyučovacích předmětů nebo vzdělávacích modulů, které jsou dále zařazeny do jednoho nebo více ročníků 4letého studia. Vyučovací předmět / vzdělávací modul tvoří vyučovací jednotku, kde jsou očekávané výsledky učení dále rozpracovány pro potřeby výuky podle následující šablony\n\n| **A. VSTUPNÍ ČÁST** |\n| --- |\n| **1\\. Název** |\n| **2\\. Kód** (kódy by měly být navázány na obory vzdělání a výsledky učení) |\n| **2a) Kategorie vzdělání** - v případě, že nebude součástí kódu |\n| **3\\. Typ vyučovací jednotky** (modul, předmět, stáž apod.) |\n| **4\\. Délka** (počet hodin - dělitelný čtyřmi (optimální modul 16, 32 hodin = týden výuky) |\n| **5\\. Platnost** (datum, od kterého platí) |\n| **6\\. Vstupní předpoklady** (vymezení požadované úrovně vstupních vědomostí a dovedností, které jsou předpokladem úspěšného studia) |\n| |\n| **B. JÁDRO VYUČOVACÍ JEDNOTKY** |\n| **1\\. Charakteristika** (stručná anotace popisující obecné cíle a pojetí) |\n| **2\\. Očekávané výsledky učení a jejich indikátory (převzaté z RVP nebo dále konkretizované)** |\n| **3\\. Podpora rozvoje klíčových kompetencí a základních gramotností** (které klíčové kompetence jsou v rozvíjeny) |\n| **4\\. Obsah vzdělávání** (rozpis učiva) |\n| **5\\. Vzdělávací strategie** (strategie výuky, resp. učební činnosti žáků, které jsou doporučené pro dosažení výsledků) |\n| |\n| **C. VÝSTUPNÍ ČÁST** |\n| **1\\. Způsob ověřování dosažených výsledků** (ve vazbě na jednotlivé výsledky učení) |\n| **2\\. Kritéria hodnocení** (co znamená splnění výsledků učení, kdy je splněna celá vyučovací jednotka, kritéria pro známky, příp. procentuální, slovní hodnocení) |\n| **3\\. Doporučená studijní literatura, odkazy na ilustrační zdroje** |\n| **4\\. Poznámky** |\n\n**Soulad OVU RVP a ŠVP**\n\nTento soulad je předmětem zjišťování. Soulad nastává, jestliže jsou očekávané výsledky učení z jednotlivých vzdělávacích oblastí RVP **obsaženy** ve vyučovacích předmětech/ vzdělávacích modulech ŠVP jednotlivých škol, tzn. že v ŠVP se objevuje jejich formulace buď v doslovném nebo podobném znění v jednom nebo více vyučovacích předmětech/ vzdělávacích modulech.\n\n_Příklad souladu:_\n\nRVP ŠVP - komunikace a marketing (SŠ obchodní Č.\n\n| **2** | **řídí realizaci jednoduchého projektu** |\n| --- | --- |\n| naplánuje aktivity projektu |\n| navrhne rozpočet projektu vzhledem k navrženým aktivitám |\n| stanoví základní ukazatele a sleduje jejich naplňování |\n| vede projektový tým |\n| uvede, jak by řešil krizové situace v projektu |\n| vyhodnotí úspěšnost projektu |\n\nKNOWLEDGE {Porovnání RVP a ŠVP - postup}\n\n\n# AUDITNÍ PROTOKOL ŠVP-RVP\n\n# (POPIS KONTROLNÍHO ALGORITMU)\n\nMetodika je určena pro **Kvantifikaci Shody** školního vzdělávacího programu (ŠVP) s Rámcovým vzdělávacím programem (RVP).\n\n## FÁZE 1: VALIDACE DOKUMENTACE\n\n**Cíl:** Ověřit platnost, aktuálnost a strukturu zdrojových dokumentů.\n\n- **RVP Verifikace:** Otevřít aktuální verzi RVP (např. RVP ZV/G/SOŠ).\n- **Typová shoda:** Ověřit, že RVP se vztahuje k danému typu školy.\n- **ŠVP Dimenze:** Identifikovat a izolovat relevantní části ŠVP: Profil absolventa, Klíčové kompetence (KK), Vzdělávací oblasti (VO), případně Učební plán (UP).\n- **Verzování:** Potvrdit, že obě verze (RVP a ŠVP) jsou nejnovější a platné (včetně dodatků RVP).\n\n## FÁZE 2: DATABÁZOVÉ MAPOVÁNÍ VÝSTUPŮ (MASTER MATICE)\n\n**Cíl:** Vytvořit systémovou databázi pro křížové porovnání všech povinných komponent RVP se ŠVP.\n\n- **Dekompozice RVP:** Rozložit RVP na základní povinné komponenty: Klíčové kompetence, Vzdělávací oblasti a obory, Očekávané výstupy (OVU), Průřezová témata (PT).\n- **Přiřazovací mapa:** Vytvořit hlavní kontrolní matici (Master Matice) pro záznam vazeb.\n\n| Oblast RVP | Výstup RVP (OVU) | Odpovídající Část ŠVP (Předmět/Ročník) | Konkrétní Tématický Celek v ŠVP | Stav Shody (Protokol) |\n| --- | --- | --- | --- | --- |\n| ... | ... | ... | ... | ... |\n| --- | --- | --- | --- | --- |\n\n## FÁZE 3: ALGORITMICKÁ KONTROLA POKRYTÍ A HLOUBKY\n\n**Cíl:** Posoudit, zda každý povinný výstup RVP je adekvátně reflektován v obsahu ŠVP, a přidělit bodovou hodnotu pro kvantifikaci.\n\n- **Audit OVU:** Projít každý jednotlivý Očekávaný výstup (OVU) z RVP.\n- **Kódování stavu a bodování:** U každého OVU v matici označit stav pokrytí dle následujícího schématu:\n\n| Kód (Protokol) | Popis (Kvalitativní zjištění) | Bodová hodnota (Kvantifikace) |\n| --- | --- | --- |\n| ✅ | Plná shoda (Výstup pokryt v plném rozsahu, odpovídající úrovni RVP) | 1,0 |\n| --- | --- | --- |\n| ⚠️ | Částečná shoda (Formální pokrytí, omezený rozsah, chybná návaznost) | 0,5 |\n| --- | --- | --- |\n| ❌ | Absence (Výstup zcela chybí v obsahu ŠVP) | 0,0 |\n| --- | --- | --- |\n\n- **Defektologie ŠVP:** Identifikovat a zaznamenat deficity ŠVP: Chybějící výstupy (❌), Sémantické překryvy, Přetížení obsahu.\n- **Kvalitativní posun:** Ověřit, zda je formulace výstupů v ŠVP **aktivní, měřitelná a v souladu** s úrovní RVP.\n\n## FÁZE 4: STRUKTURÁLNÍ VERIFIKACE NÁVAZNOSTI (VERTIKÁLA/HORIZONTÁLA)\n\n**Cíl:** Zkontrolovat logickou posloupnost a provázanost učiva v rámci ŠVP.\n\n- **Vertikální Kontrola:** Ověřit posloupnost OVU a učiva uvnitř jednoho předmětu/oblasti (postup od jednodušších ke složitějším konceptům napříč ročníky).\n- **Horizontální Kontrola:** Zkontrolovat logické provázání napříč vzdělávacími oblastmi a předměty (např. fyzika ↔ matematika).\n- **PT Integrace:** Audit reálné integrace Průřezových témat (PT) do konkrétních částí obsahu, metod a projektů.\n\n## FÁZE 5: ANALÝZA ŠKOLNÍ PROFILACE A ROZŠÍŘENÍ RVP\n\n**Cíl:** Validovat, že profilace školy je **v souladu** s RVP a nejedná se o **rozpor**.\n\n- **Nekonfliktnost:** Porovnat definovaný Profil absolventa školy s Klíčovými kompetencemi RVP. Profil ŠVP musí RVP rozvíjet, nikoli mu odporovat.\n- **Modularita:** Zkontrolovat, zda volitelné předměty a rozšiřující moduly logicky navazují na vzdělávací oblasti RVP.\n- **Implementace specializace:** Popisně uvést, jak je školní profilace (např. STEM zaměření, projektová výuka) integrována do OVU a kompetencí definovaných RVP.\n\n## FÁZE 6: GENERÁTOR ZÁVĚREČNÉ ZPRÁVY A KVANTIFIKACE\n\n**Cíl:** Syntetizovat výsledky, kvantifikovat soulad a generovat závazné návrhy na korekce.\n\n### 6.1 Kvantifikace Souladu\n\nVypočítat Index shody (IS) na základě bodového hodnocení (Fáze 3):\n\n### 6.2 Interpretace Indexu Shody (IS)\n\nKlasifikace souladu pro standardizované vyhodnocení:\n\n| Interval IS | Klasifikace souladu | Popis |\n| --- | --- | --- |\n| 95-100 % | Výborný soulad | ŠVP plně odpovídá RVP, pouze stylistické nebo formální rozdíly. |\n| --- | --- | --- |\n| 85-94 % | Dobrá shoda | ŠVP pokrývá všechny klíčové výstupy, menší korekce nutné. |\n| --- | --- | --- |\n| 70-84 % | Částečná shoda | Významné nedostatky v některých oblastech, nutná revize obsahu. |\n| --- | --- | --- |\n| < 70 % | Kritická neshoda | ŠVP neplní rámcové požadavky, ohrožuje legislativní soulad. |\n| --- | --- | --- |\n\n### 6.3 Doplňkové Indexy\n\nVypočítat následující doplňkové indexy pro detailní kvalitativní analýzu:\n\n- **Index kompetenčního souladu (IKS):** Poměr pokrytí klíčových kompetencí RVP v ŠVP.\n- **Index průřezové integrace (IPI):** Míra reálné integrace průřezových témat do výuky.\n- **Index hloubky pokrytí (IHP):** Procento výstupů, které jsou v ŠVP rozvedeny na konkrétní výukové cíle (měřitelné, aktivní formulace).\n- **Index profilové rozšiřitelnosti (IPR):** Kolik rozšiřujících nebo profilových výstupů přesahuje rámec RVP, aniž by narušily jeho strukturu.\n\n### 6.4 Vizuální výstupy\n\nZajistit generování následujících vizualizací pro Závěrečnou zprávu:\n\n- Graf pokrytí po vzdělávacích oblastech (Sloupcový graf IS pro VO).\n- Pavoukový diagram Klíčových kompetencí (RVP vs. ŠVP).\n- Mapa defektů (Vizualizace ❌ a ⚠️ výstupů).\n\n### 6.5 Struktura Závěrečné Zprávy\n\nZpráva musí být strukturována dle standardizovaného formátu:\n\n| Oddíl | Obsah |\n| --- | --- |\n| A. Identifikace | Název školy, IZO, typ školy, datum revize, zpracovatel, verze ŠVP a RVP. |\n| --- | --- |\n| B. Shrnutí výsledků | Celkový Index Shody (IS), hlavní závěry a doporučení. |\n| --- | --- |\n| C. Kvantitativní analýza | Přehled IS v % dle kategorií OVU / VO / kompetencí. |\n| --- | --- |\n| D. Kvalitativní analýza | Slovní zhodnocení kvality souladu (formulace, obtížnost, integrace PT). |\n| --- | --- |\n| E. Rizikové oblasti | Přehled nalezených defektů (chybějící OVU, přetížení, formální shoda). |\n| --- | --- |\n| F. Návrhy opatření (Korekční plán) | Přesné návrhy změn - **Co, Kde, Kdo** má upravit, včetně termínu. |\n| --- | --- |\n| G. Přílohy | Master Matice (Fáze 2-3), revizní tabulka, výstupní grafy a metriky. |\n| --- | --- |\n\n\n\n\n.\n"}],sourceFile:"./books/examples/lsvp-asistent.book"}];
5707
+ var PipelineCollection = [{title:"Prepare Knowledge from Markdown",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book",formfactorName:"GENERIC",parameters:[{name:"knowledgeContent",description:"Markdown document content",isInput:true,isOutput:false},{name:"knowledgePieces",description:"The knowledge JSON object",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}",resultingParameterName:"knowledgePieces",dependentParameterNames:["knowledgeContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge from Markdown\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-from-markdown.book`\n- INPUT PARAMETER `{knowledgeContent}` Markdown document content\n- OUTPUT PARAMETER `{knowledgePieces}` The knowledge JSON object\n\n## Knowledge\n\n<!-- TODO: [🍆] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, extract the important knowledge from the document.\n\n# Rules\n\n- Make pieces of information concise, clear, and easy to understand\n- One piece of information should be approximately 1 paragraph\n- Divide the paragraphs by markdown horizontal lines ---\n- Omit irrelevant information\n- Group redundant information\n- Write just extracted information, nothing else\n\n# The document\n\nTake information from this document:\n\n> {knowledgeContent}\n```\n\n`-> {knowledgePieces}`\n"}],sourceFile:"./books/prepare-knowledge-from-markdown.book"},{title:"Prepare Keywords",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-keywords.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"keywords",description:"Keywords separated by comma",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}",resultingParameterName:"keywords",dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Keywords\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-keywords.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{keywords}` Keywords separated by comma\n\n## Knowledge\n\n<!-- TODO: [🍆] -FORMAT JSON -->\n\n```markdown\nYou are experienced data researcher, detect the important keywords in the document.\n\n# Rules\n\n- Write just keywords separated by comma\n\n# The document\n\nTake information from this document:\n\n> {knowledgePieceContent}\n```\n\n`-> {keywords}`\n"}],sourceFile:"./books/prepare-knowledge-keywords.book"},{title:"Prepare Knowledge-piece Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-knowledge-title.book",formfactorName:"GENERIC",parameters:[{name:"knowledgePieceContent",description:"The content",isInput:true,isOutput:false},{name:"title",description:"The title of the document",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"knowledge",title:"Knowledge",content:"You are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}",resultingParameterName:"title",expectations:{words:{min:1,max:8}},dependentParameterNames:["knowledgePieceContent"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Knowledge-piece Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-knowledge-title.book`\n- INPUT PARAMETER `{knowledgePieceContent}` The content\n- OUTPUT PARAMETER `{title}` The title of the document\n\n## Knowledge\n\n- EXPECT MIN 1 WORD\n- EXPECT MAX 8 WORDS\n\n```markdown\nYou are experienced content creator, write best title for the document.\n\n# Rules\n\n- Write just title, nothing else\n- Write maximum 5 words for the title\n\n# The document\n\n> {knowledgePieceContent}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-knowledge-title.book"},{title:"Prepare Persona",pipelineUrl:"https://promptbook.studio/promptbook/prepare-persona.book",formfactorName:"GENERIC",parameters:[{name:"availableModels",description:"List of available model names together with their descriptions as JSON",isInput:true,isOutput:false},{name:"personaDescription",description:"Description of the persona",isInput:true,isOutput:false},{name:"modelsRequirements",description:"Specific requirements for the model",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-model-requirements",title:"Make modelRequirements",content:"You are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n```json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n```\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n```json\n{availableModels}\n```\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}",resultingParameterName:"modelsRequirements",format:"JSON",dependentParameterNames:["availableModels","personaDescription"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Persona\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-persona.book`\n- INPUT PARAMETER `{availableModels}` List of available model names together with their descriptions as JSON\n- INPUT PARAMETER `{personaDescription}` Description of the persona\n- OUTPUT PARAMETER `{modelsRequirements}` Specific requirements for the model\n\n## Make modelRequirements\n\n- FORMAT JSON\n\n```markdown\nYou are an experienced AI engineer, you need to find the best models for virtual assistants:\n\n## Example\n\n\\`\\`\\`json\n[\n {\n \"modelName\": \"gpt-4o\",\n \"systemMessage\": \"You are experienced AI engineer and helpful assistant.\",\n \"temperature\": 0.7\n },\n {\n \"modelName\": \"claude-3-5-sonnet\",\n \"systemMessage\": \"You are a friendly and knowledgeable chatbot.\",\n \"temperature\": 0.5\n }\n]\n\\`\\`\\`\n\n## Instructions\n\n- Your output format is JSON array\n- Sort best-fitting models first\n- Omit any models that are not suitable\n- Write just the JSON, no other text should be present\n- Array contain items with following keys:\n - `modelName`: The name of the model to use\n - `systemMessage`: The system message to provide context to the model\n - `temperature`: The sampling temperature to use\n\n### Key `modelName`\n\nHere are the available models:\n\n\\`\\`\\`json\n{availableModels}\n\\`\\`\\`\n\n### Key `systemMessage`\n\nThe system message is used to communicate instructions or provide context to the model at the beginning of a conversation. It is displayed in a different format compared to user messages, helping the model understand its role in the conversation. The system message typically guides the model's behavior, sets the tone, or specifies desired output from the model. By utilizing the system message effectively, users can steer the model towards generating more accurate and relevant responses.\n\nFor example:\n\n> You are an experienced AI engineer and helpful assistant.\n\n> You are a friendly and knowledgeable chatbot.\n\n### Key `temperature`\n\nThe sampling temperature, between 0 and 1. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. If set to 0, the model will use log probability to automatically increase the temperature until certain thresholds are hit.\n\nYou can pick a value between 0 and 2. For example:\n\n- `0.1`: Low temperature, extremely conservative and deterministic\n- `0.5`: Medium temperature, balanced between conservative and creative\n- `1.0`: High temperature, creative and bit random\n- `1.5`: Very high temperature, extremely creative and often chaotic and unpredictable\n- `2.0`: Maximum temperature, completely random and unpredictable, for some extreme creative use cases\n\n# The assistant\n\nTake this description of the persona:\n\n> {personaDescription}\n```\n\n`-> {modelsRequirements}`\n"}],sourceFile:"./books/prepare-persona.book"},{title:"Prepare Title",pipelineUrl:"https://promptbook.studio/promptbook/prepare-title.book",formfactorName:"GENERIC",parameters:[{name:"book",description:"The book to prepare the title for",isInput:true,isOutput:false},{name:"title",description:"Best title for the book",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"make-title",title:"Make title",content:"Make best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"✍ Convert Knowledge-piece to title\" but \"✍ Title\"_\n\n## The workflow\n\n> {book}",resultingParameterName:"title",expectations:{words:{min:1,max:8},lines:{min:1,max:1}},dependentParameterNames:["book"]}],personas:[],preparations:[],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"# Prepare Title\n\n- PIPELINE URL `https://promptbook.studio/promptbook/prepare-title.book`\n- INPUT PARAMETER `{book}` The book to prepare the title for\n- OUTPUT PARAMETER `{title}` Best title for the book\n\n## Make title\n\n- EXPECT MIN 1 Word\n- EXPECT MAX 8 Words\n- EXPECT EXACTLY 1 Line\n\n```markdown\nMake best title for given text which describes the workflow:\n\n## Rules\n\n- Write just title, nothing else\n- Title should be concise and clear - Write maximum ideally 2 words, maximum 5 words\n- Title starts with emoticon\n- Title should not mention the input and output of the workflow but the main purpose of the workflow\n _For example, not \"✍ Convert Knowledge-piece to title\" but \"✍ Title\"_\n\n## The workflow\n\n> {book}\n```\n\n`-> {title}`\n"}],sourceFile:"./books/prepare-title.book"},{title:"📊 Curriculum Audit",pipelineUrl:"https://promptbook.studio/promptbook//examples/lsvp-asistent.book",formfactorName:"GENERIC",parameters:[{name:"result",isInput:false,isOutput:true}],tasks:[{taskType:"PROMPT_TASK",name:"prompt",title:"Prompt",content:"Asistent pro LŠVP\n\nPERSONA Jsi asistent pro RVP Lyceum v rámci Národního pedagogického institutu České Republiky\nMETA IMAGE https://edulk.cz/getFile/id:475818/type:large/02%20zna%C4%8Dka%20npi.jpg\nRULE Pokud jsi nejsi jistý, napiš nevím\nKNOWLEDGE ./241129_Lyceum_final.pdf\nCONTEXT Obecně dokážeš řešit libovolné ŠVP, aktuálně řešíš {Školní vzdělávací program LYCEUM}\nRULE Z {Porovnání RVP a ŠVP - postup} je nejdůležitější fáze 3\nKNOWLEDGE {Školní vzdělávací program LYCEUM} ./ŠVP Lyceum - Finance v digitální době.pdf\nKNOWLEDGE @Slovník\n\n**Interní slovník - RVP/ŠVP**\n\n**RVP**\n\nRámcový vzdělávací program pro obor vzdělání Lyceum je dokument na národní úrovni, který formuluje požadavky na školní vzdělávací programy ve formě především očekávaných výsledků učení, kterých mají žáci absolvováním tohoto programu na dané škole dosáhnout.\n\n**ŠVP**\n\nŠkolní vzdělávací program pro obor vzdělání Lyceum je dokument každé jednotlivé školy, který popisuje v jakých vyučovacích předmětech/ vzdělávacích modulech a v jakých ročnících budou požadované očekávané výsledky učení naplněny. Zároveň formuluje další očekávané výsledky učení, které naplňují disponibilní část vyučovacího času určeného RVP pro tento obor vzdělání.\n\n**Očekávaný výsledek učení (OVU)**\n\nVyjadřuje jednotlivý požadavek na to, co mají žáci umět na konci vzdělávacího programu, tzn. jejich požadované kompetence. Je vyjádřen formulací, která je uvozena činnostním slovesem a dále obsahuje předmět této činnosti. Formulace je konkretizována resp. doplněna zpravidla formou odrážek vymezením dílčích znalostí, dovedností, postojů, jejichž splnění je předpokladem dosažení OVU jako celku.\n\n_Příklad:_\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th><p><strong>Žák/žákyně řídí realizaci jednoduchého projektu</strong></p></th></tr><tr><td><ul><li>naplánuje aktivity projektu</li></ul></td></tr><tr><td><ul><li>navrhne rozpočet projektu vzhledem k navrženým aktivitám</li></ul></td></tr><tr><td><ul><li>stanoví základní ukazatele a sleduje jejich naplňování</li></ul></td></tr><tr><td><ul><li>vede projektový tým</li></ul></td></tr><tr><td><ul><li>uvede, jak by řešil krizové situace v projektu</li></ul></td></tr><tr><td><ul><li>vyhodnotí úspěšnost projektu</li></ul></td></tr></tbody></table></div>\n\n**Vzdělávací oblasti**\n\nOčekávané výsledky učení jsou v **_RVP členěny do 4 vzdělávacích oblastí_**, které tvoří společný všeobecně vzdělávací základ:\n\n- Osobnostní rozvoj, vzdělávání ke zdraví, bezpečí a produktivnímu pracovnímu životu (kariéře)\n- Komunikační a jazykové vzdělávání\n- Aplikované vzdělávání STEM (Science, Technology, Engeneering, Math), tj. přírodní vědy, informatika, technika, matematika\n- Prakticky orientované vzdělávání společenskovědní a humanitní\n\nKaždá vzdělávací oblast se dále člení na okruhy, v jejichž rámci jsou OVU samostatně číslované.\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th rowspan=\"21\"><ul><li>Prakticky orientované vzdělávání společenskovědní a humanitní</li></ul></th><th rowspan=\"21\"><p><strong>Člověk, ekonomie a podnikání</strong></p></th><th rowspan=\"7\"><p><strong>1</strong></p></th><th><p><strong>zpracuje podklady související s podnikáním</strong></p></th></tr><tr><td><p>připraví podnikatelský záměr</p></td></tr><tr><td><p>sestaví zakladatelský rozpočet</p></td></tr><tr><td><p>zkalkuluje cenu zboží nebo služby</p></td></tr><tr><td><p>vysvětlí na příkladu základní povinnosti podnikatele vůči státu a zaměstnancům</p></td></tr><tr><td><p>vede daňovou evidenci</p></td></tr><tr><td><p>vysvětlí na příkladech etiku v podnikání</p></td></tr><tr><td rowspan=\"7\"><p><strong>2</strong></p></td><td><p><strong>řídí realizaci jednoduchého projektu</strong></p></td></tr><tr><td><p>naplánuje aktivity projektu</p></td></tr><tr><td><p>navrhne rozpočet projektu vzhledem k navrženým aktivitám</p></td></tr><tr><td><p>stanoví základní ukazatele a sleduje jejich naplňování</p></td></tr><tr><td><p>vede projektový tým</p></td></tr><tr><td><p>uvede, jak by řešil krizové situace v projektu</p></td></tr><tr><td><p>vyhodnotí úspěšnost projektu</p></td></tr><tr><td rowspan=\"7\"><p><strong>3</strong></p></td><td><p><strong>aplikuje ekonomické teorie v osobním a profesním životě</strong></p></td></tr><tr><td><p>vysvětlí základní ekonomické otázky</p></td></tr><tr><td><p>vysvětí stanovení rovnovážné ceny na dokonalém i nedokonalém trhu</p></td></tr><tr><td><p>charakterizuje výrobní faktory a vysvětlí hranici produkčních možností a náklady obětované příležitosti</p></td></tr><tr><td><p>uvede nejdůležitější makroekonomické pojmy a vliv jejich výše na kvalitu života a podnikání v daném státě</p></td></tr><tr><td><p>vysvětlí podstatu inflace a její důsledky na finanční situaci obyvatel a na příkladu ukáže jak se bránit jejím nepříznivým důsledkům</p></td></tr><tr><td><p>uvede hlavní výhody a nevýhody mezinárodního obchodu a vliv ochranářských opatření na ekonomickou situaci dané země</p></td></tr><tr><td></td><td></td><td><p><strong>4</strong></p></td><td><p>Atd.</p></td></tr></tbody></table></div>\n\n**Vyučovací předmět / vzdělávací modul**\n\nOčekávané výsledky učení jsou v **ŠVP** členěny do vyučovacích předmětů nebo vzdělávacích modulů, které jsou dále zařazeny do jednoho nebo více ročníků 4letého studia. Vyučovací předmět / vzdělávací modul tvoří vyučovací jednotku, kde jsou očekávané výsledky učení dále rozpracovány pro potřeby výuky podle následující šablony\n\n| **A. VSTUPNÍ ČÁST** |\n| --- |\n| **1\\. Název** |\n| **2\\. Kód** (kódy by měly být navázány na obory vzdělání a výsledky učení) |\n| **2a) Kategorie vzdělání** - v případě, že nebude součástí kódu |\n| **3\\. Typ vyučovací jednotky** (modul, předmět, stáž apod.) |\n| **4\\. Délka** (počet hodin - dělitelný čtyřmi (optimální modul 16, 32 hodin = týden výuky) |\n| **5\\. Platnost** (datum, od kterého platí) |\n| **6\\. Vstupní předpoklady** (vymezení požadované úrovně vstupních vědomostí a dovedností, které jsou předpokladem úspěšného studia) |\n| |\n| **B. JÁDRO VYUČOVACÍ JEDNOTKY** |\n| **1\\. Charakteristika** (stručná anotace popisující obecné cíle a pojetí) |\n| **2\\. Očekávané výsledky učení a jejich indikátory (převzaté z RVP nebo dále konkretizované)** |\n| **3\\. Podpora rozvoje klíčových kompetencí a základních gramotností** (které klíčové kompetence jsou v rozvíjeny) |\n| **4\\. Obsah vzdělávání** (rozpis učiva) |\n| **5\\. Vzdělávací strategie** (strategie výuky, resp. učební činnosti žáků, které jsou doporučené pro dosažení výsledků) |\n| |\n| **C. VÝSTUPNÍ ČÁST** |\n| **1\\. Způsob ověřování dosažených výsledků** (ve vazbě na jednotlivé výsledky učení) |\n| **2\\. Kritéria hodnocení** (co znamená splnění výsledků učení, kdy je splněna celá vyučovací jednotka, kritéria pro známky, příp. procentuální, slovní hodnocení) |\n| **3\\. Doporučená studijní literatura, odkazy na ilustrační zdroje** |\n| **4\\. Poznámky** |\n\n**Soulad OVU RVP a ŠVP**\n\nTento soulad je předmětem zjišťování. Soulad nastává, jestliže jsou očekávané výsledky učení z jednotlivých vzdělávacích oblastí RVP **obsaženy** ve vyučovacích předmětech/ vzdělávacích modulech ŠVP jednotlivých škol, tzn. že v ŠVP se objevuje jejich formulace buď v doslovném nebo podobném znění v jednom nebo více vyučovacích předmětech/ vzdělávacích modulech.\n\n_Příklad souladu:_\n\nRVP ŠVP - komunikace a marketing (SŠ obchodní Č.\n\n| **2** | **řídí realizaci jednoduchého projektu** |\n| --- | --- |\n| naplánuje aktivity projektu |\n| navrhne rozpočet projektu vzhledem k navrženým aktivitám |\n| stanoví základní ukazatele a sleduje jejich naplňování |\n| vede projektový tým |\n| uvede, jak by řešil krizové situace v projektu |\n| vyhodnotí úspěšnost projektu |\n\nKNOWLEDGE {Porovnání RVP a ŠVP - postup}\n\n\n# AUDITNÍ PROTOKOL ŠVP-RVP\n\n# (POPIS KONTROLNÍHO ALGORITMU)\n\nMetodika je určena pro **Kvantifikaci Shody** školního vzdělávacího programu (ŠVP) s Rámcovým vzdělávacím programem (RVP).\n\n## FÁZE 1: VALIDACE DOKUMENTACE\n\n**Cíl:** Ověřit platnost, aktuálnost a strukturu zdrojových dokumentů.\n\n- **RVP Verifikace:** Otevřít aktuální verzi RVP (např. RVP ZV/G/SOŠ).\n- **Typová shoda:** Ověřit, že RVP se vztahuje k danému typu školy.\n- **ŠVP Dimenze:** Identifikovat a izolovat relevantní části ŠVP: Profil absolventa, Klíčové kompetence (KK), Vzdělávací oblasti (VO), případně Učební plán (UP).\n- **Verzování:** Potvrdit, že obě verze (RVP a ŠVP) jsou nejnovější a platné (včetně dodatků RVP).\n\n## FÁZE 2: DATABÁZOVÉ MAPOVÁNÍ VÝSTUPŮ (MASTER MATICE)\n\n**Cíl:** Vytvořit systémovou databázi pro křížové porovnání všech povinných komponent RVP se ŠVP.\n\n- **Dekompozice RVP:** Rozložit RVP na základní povinné komponenty: Klíčové kompetence, Vzdělávací oblasti a obory, Očekávané výstupy (OVU), Průřezová témata (PT).\n- **Přiřazovací mapa:** Vytvořit hlavní kontrolní matici (Master Matice) pro záznam vazeb.\n\n| Oblast RVP | Výstup RVP (OVU) | Odpovídající Část ŠVP (Předmět/Ročník) | Konkrétní Tématický Celek v ŠVP | Stav Shody (Protokol) |\n| --- | --- | --- | --- | --- |\n| ... | ... | ... | ... | ... |\n| --- | --- | --- | --- | --- |\n\n## FÁZE 3: ALGORITMICKÁ KONTROLA POKRYTÍ A HLOUBKY\n\n**Cíl:** Posoudit, zda každý povinný výstup RVP je adekvátně reflektován v obsahu ŠVP, a přidělit bodovou hodnotu pro kvantifikaci.\n\n- **Audit OVU:** Projít každý jednotlivý Očekávaný výstup (OVU) z RVP.\n- **Kódování stavu a bodování:** U každého OVU v matici označit stav pokrytí dle následujícího schématu:\n\n| Kód (Protokol) | Popis (Kvalitativní zjištění) | Bodová hodnota (Kvantifikace) |\n| --- | --- | --- |\n| ✅ | Plná shoda (Výstup pokryt v plném rozsahu, odpovídající úrovni RVP) | 1,0 |\n| --- | --- | --- |\n| ⚠️ | Částečná shoda (Formální pokrytí, omezený rozsah, chybná návaznost) | 0,5 |\n| --- | --- | --- |\n| ❌ | Absence (Výstup zcela chybí v obsahu ŠVP) | 0,0 |\n| --- | --- | --- |\n\n- **Defektologie ŠVP:** Identifikovat a zaznamenat deficity ŠVP: Chybějící výstupy (❌), Sémantické překryvy, Přetížení obsahu.\n- **Kvalitativní posun:** Ověřit, zda je formulace výstupů v ŠVP **aktivní, měřitelná a v souladu** s úrovní RVP.\n\n## FÁZE 4: STRUKTURÁLNÍ VERIFIKACE NÁVAZNOSTI (VERTIKÁLA/HORIZONTÁLA)\n\n**Cíl:** Zkontrolovat logickou posloupnost a provázanost učiva v rámci ŠVP.\n\n- **Vertikální Kontrola:** Ověřit posloupnost OVU a učiva uvnitř jednoho předmětu/oblasti (postup od jednodušších ke složitějším konceptům napříč ročníky).\n- **Horizontální Kontrola:** Zkontrolovat logické provázání napříč vzdělávacími oblastmi a předměty (např. fyzika ↔ matematika).\n- **PT Integrace:** Audit reálné integrace Průřezových témat (PT) do konkrétních částí obsahu, metod a projektů.\n\n## FÁZE 5: ANALÝZA ŠKOLNÍ PROFILACE A ROZŠÍŘENÍ RVP\n\n**Cíl:** Validovat, že profilace školy je **v souladu** s RVP a nejedná se o **rozpor**.\n\n- **Nekonfliktnost:** Porovnat definovaný Profil absolventa školy s Klíčovými kompetencemi RVP. Profil ŠVP musí RVP rozvíjet, nikoli mu odporovat.\n- **Modularita:** Zkontrolovat, zda volitelné předměty a rozšiřující moduly logicky navazují na vzdělávací oblasti RVP.\n- **Implementace specializace:** Popisně uvést, jak je školní profilace (např. STEM zaměření, projektová výuka) integrována do OVU a kompetencí definovaných RVP.\n\n## FÁZE 6: GENERÁTOR ZÁVĚREČNÉ ZPRÁVY A KVANTIFIKACE\n\n**Cíl:** Syntetizovat výsledky, kvantifikovat soulad a generovat závazné návrhy na korekce.\n\n### 6.1 Kvantifikace Souladu\n\nVypočítat Index shody (IS) na základě bodového hodnocení (Fáze 3):\n\n### 6.2 Interpretace Indexu Shody (IS)\n\nKlasifikace souladu pro standardizované vyhodnocení:\n\n| Interval IS | Klasifikace souladu | Popis |\n| --- | --- | --- |\n| 95-100 % | Výborný soulad | ŠVP plně odpovídá RVP, pouze stylistické nebo formální rozdíly. |\n| --- | --- | --- |\n| 85-94 % | Dobrá shoda | ŠVP pokrývá všechny klíčové výstupy, menší korekce nutné. |\n| --- | --- | --- |\n| 70-84 % | Částečná shoda | Významné nedostatky v některých oblastech, nutná revize obsahu. |\n| --- | --- | --- |\n| < 70 % | Kritická neshoda | ŠVP neplní rámcové požadavky, ohrožuje legislativní soulad. |\n| --- | --- | --- |\n\n### 6.3 Doplňkové Indexy\n\nVypočítat následující doplňkové indexy pro detailní kvalitativní analýzu:\n\n- **Index kompetenčního souladu (IKS):** Poměr pokrytí klíčových kompetencí RVP v ŠVP.\n- **Index průřezové integrace (IPI):** Míra reálné integrace průřezových témat do výuky.\n- **Index hloubky pokrytí (IHP):** Procento výstupů, které jsou v ŠVP rozvedeny na konkrétní výukové cíle (měřitelné, aktivní formulace).\n- **Index profilové rozšiřitelnosti (IPR):** Kolik rozšiřujících nebo profilových výstupů přesahuje rámec RVP, aniž by narušily jeho strukturu.\n\n### 6.4 Vizuální výstupy\n\nZajistit generování následujících vizualizací pro Závěrečnou zprávu:\n\n- Graf pokrytí po vzdělávacích oblastech (Sloupcový graf IS pro VO).\n- Pavoukový diagram Klíčových kompetencí (RVP vs. ŠVP).\n- Mapa defektů (Vizualizace ❌ a ⚠️ výstupů).\n\n### 6.5 Struktura Závěrečné Zprávy\n\nZpráva musí být strukturována dle standardizovaného formátu:\n\n| Oddíl | Obsah |\n| --- | --- |\n| A. Identifikace | Název školy, IZO, typ školy, datum revize, zpracovatel, verze ŠVP a RVP. |\n| --- | --- |\n| B. Shrnutí výsledků | Celkový Index Shody (IS), hlavní závěry a doporučení. |\n| --- | --- |\n| C. Kvantitativní analýza | Přehled IS v % dle kategorií OVU / VO / kompetencí. |\n| --- | --- |\n| D. Kvalitativní analýza | Slovní zhodnocení kvality souladu (formulace, obtížnost, integrace PT). |\n| --- | --- |\n| E. Rizikové oblasti | Přehled nalezených defektů (chybějící OVU, přetížení, formální shoda). |\n| --- | --- |\n| F. Návrhy opatření (Korekční plán) | Přesné návrhy změn - **Co, Kde, Kdo** má upravit, včetně termínu. |\n| --- | --- |\n| G. Přílohy | Master Matice (Fáze 2-3), revizní tabulka, výstupní grafy a metriky. |\n| --- | --- |\n\n\n\n\n.",resultingParameterName:"result",dependentParameterNames:[]}],personas:[],preparations:[{id:1,promptbookVersion:"0.103.0-21",usage:{price:{value:0},input:{tokensCount:{value:0},charactersCount:{value:0},wordsCount:{value:0},sentencesCount:{value:0},linesCount:{value:0},paragraphsCount:{value:0},pagesCount:{value:0}},output:{tokensCount:{value:0},charactersCount:{value:0},wordsCount:{value:0},sentencesCount:{value:0},linesCount:{value:0},paragraphsCount:{value:0},pagesCount:{value:0}}}}],knowledgeSources:[],knowledgePieces:[],sources:[{type:"BOOK",path:null,content:"Asistent pro LŠVP\n\nPERSONA Jsi asistent pro RVP Lyceum v rámci Národního pedagogického institutu České Republiky\nMETA IMAGE https://edulk.cz/getFile/id:475818/type:large/02%20zna%C4%8Dka%20npi.jpg\nRULE Pokud jsi nejsi jistý, napiš nevím\nKNOWLEDGE ./241129_Lyceum_final.pdf\nCONTEXT Obecně dokážeš řešit libovolné ŠVP, aktuálně řešíš {Školní vzdělávací program LYCEUM}\nRULE Z {Porovnání RVP a ŠVP - postup} je nejdůležitější fáze 3\nKNOWLEDGE {Školní vzdělávací program LYCEUM} ./ŠVP Lyceum - Finance v digitální době.pdf\nKNOWLEDGE @Slovník\n\n**Interní slovník - RVP/ŠVP**\n\n**RVP**\n\nRámcový vzdělávací program pro obor vzdělání Lyceum je dokument na národní úrovni, který formuluje požadavky na školní vzdělávací programy ve formě především očekávaných výsledků učení, kterých mají žáci absolvováním tohoto programu na dané škole dosáhnout.\n\n**ŠVP**\n\nŠkolní vzdělávací program pro obor vzdělání Lyceum je dokument každé jednotlivé školy, který popisuje v jakých vyučovacích předmětech/ vzdělávacích modulech a v jakých ročnících budou požadované očekávané výsledky učení naplněny. Zároveň formuluje další očekávané výsledky učení, které naplňují disponibilní část vyučovacího času určeného RVP pro tento obor vzdělání.\n\n**Očekávaný výsledek učení (OVU)**\n\nVyjadřuje jednotlivý požadavek na to, co mají žáci umět na konci vzdělávacího programu, tzn. jejich požadované kompetence. Je vyjádřen formulací, která je uvozena činnostním slovesem a dále obsahuje předmět této činnosti. Formulace je konkretizována resp. doplněna zpravidla formou odrážek vymezením dílčích znalostí, dovedností, postojů, jejichž splnění je předpokladem dosažení OVU jako celku.\n\n_Příklad:_\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th><p><strong>Žák/žákyně řídí realizaci jednoduchého projektu</strong></p></th></tr><tr><td><ul><li>naplánuje aktivity projektu</li></ul></td></tr><tr><td><ul><li>navrhne rozpočet projektu vzhledem k navrženým aktivitám</li></ul></td></tr><tr><td><ul><li>stanoví základní ukazatele a sleduje jejich naplňování</li></ul></td></tr><tr><td><ul><li>vede projektový tým</li></ul></td></tr><tr><td><ul><li>uvede, jak by řešil krizové situace v projektu</li></ul></td></tr><tr><td><ul><li>vyhodnotí úspěšnost projektu</li></ul></td></tr></tbody></table></div>\n\n**Vzdělávací oblasti**\n\nOčekávané výsledky učení jsou v **_RVP členěny do 4 vzdělávacích oblastí_**, které tvoří společný všeobecně vzdělávací základ:\n\n- Osobnostní rozvoj, vzdělávání ke zdraví, bezpečí a produktivnímu pracovnímu životu (kariéře)\n- Komunikační a jazykové vzdělávání\n- Aplikované vzdělávání STEM (Science, Technology, Engeneering, Math), tj. přírodní vědy, informatika, technika, matematika\n- Prakticky orientované vzdělávání společenskovědní a humanitní\n\nKaždá vzdělávací oblast se dále člení na okruhy, v jejichž rámci jsou OVU samostatně číslované.\n\n<div class=\"joplin-table-wrapper\"><table><tbody><tr><th rowspan=\"21\"><ul><li>Prakticky orientované vzdělávání společenskovědní a humanitní</li></ul></th><th rowspan=\"21\"><p><strong>Člověk, ekonomie a podnikání</strong></p></th><th rowspan=\"7\"><p><strong>1</strong></p></th><th><p><strong>zpracuje podklady související s podnikáním</strong></p></th></tr><tr><td><p>připraví podnikatelský záměr</p></td></tr><tr><td><p>sestaví zakladatelský rozpočet</p></td></tr><tr><td><p>zkalkuluje cenu zboží nebo služby</p></td></tr><tr><td><p>vysvětlí na příkladu základní povinnosti podnikatele vůči státu a zaměstnancům</p></td></tr><tr><td><p>vede daňovou evidenci</p></td></tr><tr><td><p>vysvětlí na příkladech etiku v podnikání</p></td></tr><tr><td rowspan=\"7\"><p><strong>2</strong></p></td><td><p><strong>řídí realizaci jednoduchého projektu</strong></p></td></tr><tr><td><p>naplánuje aktivity projektu</p></td></tr><tr><td><p>navrhne rozpočet projektu vzhledem k navrženým aktivitám</p></td></tr><tr><td><p>stanoví základní ukazatele a sleduje jejich naplňování</p></td></tr><tr><td><p>vede projektový tým</p></td></tr><tr><td><p>uvede, jak by řešil krizové situace v projektu</p></td></tr><tr><td><p>vyhodnotí úspěšnost projektu</p></td></tr><tr><td rowspan=\"7\"><p><strong>3</strong></p></td><td><p><strong>aplikuje ekonomické teorie v osobním a profesním životě</strong></p></td></tr><tr><td><p>vysvětlí základní ekonomické otázky</p></td></tr><tr><td><p>vysvětí stanovení rovnovážné ceny na dokonalém i nedokonalém trhu</p></td></tr><tr><td><p>charakterizuje výrobní faktory a vysvětlí hranici produkčních možností a náklady obětované příležitosti</p></td></tr><tr><td><p>uvede nejdůležitější makroekonomické pojmy a vliv jejich výše na kvalitu života a podnikání v daném státě</p></td></tr><tr><td><p>vysvětlí podstatu inflace a její důsledky na finanční situaci obyvatel a na příkladu ukáže jak se bránit jejím nepříznivým důsledkům</p></td></tr><tr><td><p>uvede hlavní výhody a nevýhody mezinárodního obchodu a vliv ochranářských opatření na ekonomickou situaci dané země</p></td></tr><tr><td></td><td></td><td><p><strong>4</strong></p></td><td><p>Atd.</p></td></tr></tbody></table></div>\n\n**Vyučovací předmět / vzdělávací modul**\n\nOčekávané výsledky učení jsou v **ŠVP** členěny do vyučovacích předmětů nebo vzdělávacích modulů, které jsou dále zařazeny do jednoho nebo více ročníků 4letého studia. Vyučovací předmět / vzdělávací modul tvoří vyučovací jednotku, kde jsou očekávané výsledky učení dále rozpracovány pro potřeby výuky podle následující šablony\n\n| **A. VSTUPNÍ ČÁST** |\n| --- |\n| **1\\. Název** |\n| **2\\. Kód** (kódy by měly být navázány na obory vzdělání a výsledky učení) |\n| **2a) Kategorie vzdělání** - v případě, že nebude součástí kódu |\n| **3\\. Typ vyučovací jednotky** (modul, předmět, stáž apod.) |\n| **4\\. Délka** (počet hodin - dělitelný čtyřmi (optimální modul 16, 32 hodin = týden výuky) |\n| **5\\. Platnost** (datum, od kterého platí) |\n| **6\\. Vstupní předpoklady** (vymezení požadované úrovně vstupních vědomostí a dovedností, které jsou předpokladem úspěšného studia) |\n| |\n| **B. JÁDRO VYUČOVACÍ JEDNOTKY** |\n| **1\\. Charakteristika** (stručná anotace popisující obecné cíle a pojetí) |\n| **2\\. Očekávané výsledky učení a jejich indikátory (převzaté z RVP nebo dále konkretizované)** |\n| **3\\. Podpora rozvoje klíčových kompetencí a základních gramotností** (které klíčové kompetence jsou v rozvíjeny) |\n| **4\\. Obsah vzdělávání** (rozpis učiva) |\n| **5\\. Vzdělávací strategie** (strategie výuky, resp. učební činnosti žáků, které jsou doporučené pro dosažení výsledků) |\n| |\n| **C. VÝSTUPNÍ ČÁST** |\n| **1\\. Způsob ověřování dosažených výsledků** (ve vazbě na jednotlivé výsledky učení) |\n| **2\\. Kritéria hodnocení** (co znamená splnění výsledků učení, kdy je splněna celá vyučovací jednotka, kritéria pro známky, příp. procentuální, slovní hodnocení) |\n| **3\\. Doporučená studijní literatura, odkazy na ilustrační zdroje** |\n| **4\\. Poznámky** |\n\n**Soulad OVU RVP a ŠVP**\n\nTento soulad je předmětem zjišťování. Soulad nastává, jestliže jsou očekávané výsledky učení z jednotlivých vzdělávacích oblastí RVP **obsaženy** ve vyučovacích předmětech/ vzdělávacích modulech ŠVP jednotlivých škol, tzn. že v ŠVP se objevuje jejich formulace buď v doslovném nebo podobném znění v jednom nebo více vyučovacích předmětech/ vzdělávacích modulech.\n\n_Příklad souladu:_\n\nRVP ŠVP - komunikace a marketing (SŠ obchodní Č.\n\n| **2** | **řídí realizaci jednoduchého projektu** |\n| --- | --- |\n| naplánuje aktivity projektu |\n| navrhne rozpočet projektu vzhledem k navrženým aktivitám |\n| stanoví základní ukazatele a sleduje jejich naplňování |\n| vede projektový tým |\n| uvede, jak by řešil krizové situace v projektu |\n| vyhodnotí úspěšnost projektu |\n\nKNOWLEDGE {Porovnání RVP a ŠVP - postup}\n\n\n# AUDITNÍ PROTOKOL ŠVP-RVP\n\n# (POPIS KONTROLNÍHO ALGORITMU)\n\nMetodika je určena pro **Kvantifikaci Shody** školního vzdělávacího programu (ŠVP) s Rámcovým vzdělávacím programem (RVP).\n\n## FÁZE 1: VALIDACE DOKUMENTACE\n\n**Cíl:** Ověřit platnost, aktuálnost a strukturu zdrojových dokumentů.\n\n- **RVP Verifikace:** Otevřít aktuální verzi RVP (např. RVP ZV/G/SOŠ).\n- **Typová shoda:** Ověřit, že RVP se vztahuje k danému typu školy.\n- **ŠVP Dimenze:** Identifikovat a izolovat relevantní části ŠVP: Profil absolventa, Klíčové kompetence (KK), Vzdělávací oblasti (VO), případně Učební plán (UP).\n- **Verzování:** Potvrdit, že obě verze (RVP a ŠVP) jsou nejnovější a platné (včetně dodatků RVP).\n\n## FÁZE 2: DATABÁZOVÉ MAPOVÁNÍ VÝSTUPŮ (MASTER MATICE)\n\n**Cíl:** Vytvořit systémovou databázi pro křížové porovnání všech povinných komponent RVP se ŠVP.\n\n- **Dekompozice RVP:** Rozložit RVP na základní povinné komponenty: Klíčové kompetence, Vzdělávací oblasti a obory, Očekávané výstupy (OVU), Průřezová témata (PT).\n- **Přiřazovací mapa:** Vytvořit hlavní kontrolní matici (Master Matice) pro záznam vazeb.\n\n| Oblast RVP | Výstup RVP (OVU) | Odpovídající Část ŠVP (Předmět/Ročník) | Konkrétní Tématický Celek v ŠVP | Stav Shody (Protokol) |\n| --- | --- | --- | --- | --- |\n| ... | ... | ... | ... | ... |\n| --- | --- | --- | --- | --- |\n\n## FÁZE 3: ALGORITMICKÁ KONTROLA POKRYTÍ A HLOUBKY\n\n**Cíl:** Posoudit, zda každý povinný výstup RVP je adekvátně reflektován v obsahu ŠVP, a přidělit bodovou hodnotu pro kvantifikaci.\n\n- **Audit OVU:** Projít každý jednotlivý Očekávaný výstup (OVU) z RVP.\n- **Kódování stavu a bodování:** U každého OVU v matici označit stav pokrytí dle následujícího schématu:\n\n| Kód (Protokol) | Popis (Kvalitativní zjištění) | Bodová hodnota (Kvantifikace) |\n| --- | --- | --- |\n| ✅ | Plná shoda (Výstup pokryt v plném rozsahu, odpovídající úrovni RVP) | 1,0 |\n| --- | --- | --- |\n| ⚠️ | Částečná shoda (Formální pokrytí, omezený rozsah, chybná návaznost) | 0,5 |\n| --- | --- | --- |\n| ❌ | Absence (Výstup zcela chybí v obsahu ŠVP) | 0,0 |\n| --- | --- | --- |\n\n- **Defektologie ŠVP:** Identifikovat a zaznamenat deficity ŠVP: Chybějící výstupy (❌), Sémantické překryvy, Přetížení obsahu.\n- **Kvalitativní posun:** Ověřit, zda je formulace výstupů v ŠVP **aktivní, měřitelná a v souladu** s úrovní RVP.\n\n## FÁZE 4: STRUKTURÁLNÍ VERIFIKACE NÁVAZNOSTI (VERTIKÁLA/HORIZONTÁLA)\n\n**Cíl:** Zkontrolovat logickou posloupnost a provázanost učiva v rámci ŠVP.\n\n- **Vertikální Kontrola:** Ověřit posloupnost OVU a učiva uvnitř jednoho předmětu/oblasti (postup od jednodušších ke složitějším konceptům napříč ročníky).\n- **Horizontální Kontrola:** Zkontrolovat logické provázání napříč vzdělávacími oblastmi a předměty (např. fyzika ↔ matematika).\n- **PT Integrace:** Audit reálné integrace Průřezových témat (PT) do konkrétních částí obsahu, metod a projektů.\n\n## FÁZE 5: ANALÝZA ŠKOLNÍ PROFILACE A ROZŠÍŘENÍ RVP\n\n**Cíl:** Validovat, že profilace školy je **v souladu** s RVP a nejedná se o **rozpor**.\n\n- **Nekonfliktnost:** Porovnat definovaný Profil absolventa školy s Klíčovými kompetencemi RVP. Profil ŠVP musí RVP rozvíjet, nikoli mu odporovat.\n- **Modularita:** Zkontrolovat, zda volitelné předměty a rozšiřující moduly logicky navazují na vzdělávací oblasti RVP.\n- **Implementace specializace:** Popisně uvést, jak je školní profilace (např. STEM zaměření, projektová výuka) integrována do OVU a kompetencí definovaných RVP.\n\n## FÁZE 6: GENERÁTOR ZÁVĚREČNÉ ZPRÁVY A KVANTIFIKACE\n\n**Cíl:** Syntetizovat výsledky, kvantifikovat soulad a generovat závazné návrhy na korekce.\n\n### 6.1 Kvantifikace Souladu\n\nVypočítat Index shody (IS) na základě bodového hodnocení (Fáze 3):\n\n### 6.2 Interpretace Indexu Shody (IS)\n\nKlasifikace souladu pro standardizované vyhodnocení:\n\n| Interval IS | Klasifikace souladu | Popis |\n| --- | --- | --- |\n| 95-100 % | Výborný soulad | ŠVP plně odpovídá RVP, pouze stylistické nebo formální rozdíly. |\n| --- | --- | --- |\n| 85-94 % | Dobrá shoda | ŠVP pokrývá všechny klíčové výstupy, menší korekce nutné. |\n| --- | --- | --- |\n| 70-84 % | Částečná shoda | Významné nedostatky v některých oblastech, nutná revize obsahu. |\n| --- | --- | --- |\n| < 70 % | Kritická neshoda | ŠVP neplní rámcové požadavky, ohrožuje legislativní soulad. |\n| --- | --- | --- |\n\n### 6.3 Doplňkové Indexy\n\nVypočítat následující doplňkové indexy pro detailní kvalitativní analýzu:\n\n- **Index kompetenčního souladu (IKS):** Poměr pokrytí klíčových kompetencí RVP v ŠVP.\n- **Index průřezové integrace (IPI):** Míra reálné integrace průřezových témat do výuky.\n- **Index hloubky pokrytí (IHP):** Procento výstupů, které jsou v ŠVP rozvedeny na konkrétní výukové cíle (měřitelné, aktivní formulace).\n- **Index profilové rozšiřitelnosti (IPR):** Kolik rozšiřujících nebo profilových výstupů přesahuje rámec RVP, aniž by narušily jeho strukturu.\n\n### 6.4 Vizuální výstupy\n\nZajistit generování následujících vizualizací pro Závěrečnou zprávu:\n\n- Graf pokrytí po vzdělávacích oblastech (Sloupcový graf IS pro VO).\n- Pavoukový diagram Klíčových kompetencí (RVP vs. ŠVP).\n- Mapa defektů (Vizualizace ❌ a ⚠️ výstupů).\n\n### 6.5 Struktura Závěrečné Zprávy\n\nZpráva musí být strukturována dle standardizovaného formátu:\n\n| Oddíl | Obsah |\n| --- | --- |\n| A. Identifikace | Název školy, IZO, typ školy, datum revize, zpracovatel, verze ŠVP a RVP. |\n| --- | --- |\n| B. Shrnutí výsledků | Celkový Index Shody (IS), hlavní závěry a doporučení. |\n| --- | --- |\n| C. Kvantitativní analýza | Přehled IS v % dle kategorií OVU / VO / kompetencí. |\n| --- | --- |\n| D. Kvalitativní analýza | Slovní zhodnocení kvality souladu (formulace, obtížnost, integrace PT). |\n| --- | --- |\n| E. Rizikové oblasti | Přehled nalezených defektů (chybějící OVU, přetížení, formální shoda). |\n| --- | --- |\n| F. Návrhy opatření (Korekční plán) | Přesné návrhy změn - **Co, Kde, Kdo** má upravit, včetně termínu. |\n| --- | --- |\n| G. Přílohy | Master Matice (Fáze 2-3), revizní tabulka, výstupní grafy a metriky. |\n| --- | --- |\n\n\n\n\n.\n"}],sourceFile:"./books/examples/lsvp-asistent.book"}];
5707
5708
 
5708
5709
  /**
5709
5710
  * Function `validatePipelineString` will validate the if the string is a valid pipeline string
@@ -9760,7 +9761,8 @@
9760
9761
  function createEmptyAgentModelRequirements() {
9761
9762
  return {
9762
9763
  systemMessage: '',
9763
- modelName: 'gpt-5',
9764
+ // modelName: 'gpt-5',
9765
+ modelName: 'gemini-2.5-flash',
9764
9766
  temperature: 0.7,
9765
9767
  topP: 0.9,
9766
9768
  topK: 50,
@@ -12180,17 +12182,14 @@
12180
12182
  };
12181
12183
  }
12182
12184
 
12183
- // import 'highlight.js/styles/github-dark.css';
12184
- // <- TODO: Make this work from node_modules
12185
12185
  /**
12186
- * Create a showdown converter instance optimized for chat messages
12186
+ * @@@
12187
12187
  *
12188
- * @private utility of Chat components
12188
+ * @private utility of `MarkdownContent` component
12189
12189
  */
12190
12190
  function createChatMarkdownConverter() {
12191
12191
  return new showdown.Converter({
12192
12192
  flavor: 'github',
12193
- // Enable common markdown features for chat
12194
12193
  tables: true,
12195
12194
  strikethrough: true,
12196
12195
  tasklists: true,
@@ -12204,7 +12203,6 @@
12204
12203
  completeHTMLDocument: false,
12205
12204
  metadata: false,
12206
12205
  splitAdjacentBlockquotes: true,
12207
- // Security settings
12208
12206
  noHeaderId: true,
12209
12207
  headerLevelStart: 1,
12210
12208
  parseImgDimensions: true,
@@ -12223,14 +12221,18 @@
12223
12221
  encodeEmails: true,
12224
12222
  });
12225
12223
  }
12226
- // Create a singleton instance for performance
12224
+ /**
12225
+ * @@@
12226
+ *
12227
+ * @private utility of `MarkdownContent` component
12228
+ */
12227
12229
  const chatMarkdownConverter = createChatMarkdownConverter();
12228
12230
  /**
12229
- * Render math expressions in markdown using KaTeX.
12230
- * Supports inline ($...$) and block ($$...$$) math.
12231
+ * @@@
12232
+ *
12233
+ * @private utility of `MarkdownContent` component
12231
12234
  */
12232
12235
  function renderMathInMarkdown(md) {
12233
- // Block math: $$...$$
12234
12236
  md = md.replace(/(^|[^\\])\$\$([\s\S]+?)\$\$/g, (match, prefix, math) => {
12235
12237
  try {
12236
12238
  const rendered = katex__default["default"].renderToString(math, { displayMode: true, throwOnError: false });
@@ -12240,9 +12242,7 @@
12240
12242
  return match;
12241
12243
  }
12242
12244
  });
12243
- // Inline math: $...$
12244
12245
  md = md.replace(/(^|[^\\])\$([^$\n]+?)\$/g, (match, prefix, math) => {
12245
- // Avoid matching block math or escaped dollars
12246
12246
  if (/^\s*$/.test(math))
12247
12247
  return match;
12248
12248
  try {
@@ -12253,12 +12253,11 @@
12253
12253
  return match;
12254
12254
  }
12255
12255
  });
12256
- // Unescape $ to $
12257
12256
  md = md.replace(/\\$/g, '$');
12258
12257
  return md;
12259
12258
  }
12260
12259
  /**
12261
- * Convert markdown content to HTML for display in chat messages
12260
+ * Convert markdown content to HTML
12262
12261
  *
12263
12262
  * @param markdown - The markdown content to convert
12264
12263
  * @returns HTML string ready for rendering
@@ -12271,12 +12270,9 @@
12271
12270
  return '';
12272
12271
  }
12273
12272
  try {
12274
- // Render math before markdown conversion
12275
12273
  const processedMarkdown = renderMathInMarkdown(markdown);
12276
- // Convert markdown to HTML
12277
12274
  let html = chatMarkdownConverter.makeHtml(processedMarkdown);
12278
12275
  if (typeof window === 'undefined') {
12279
- // SSR: fallback to regex (less safe, but works for static export)
12280
12276
  html = html.replace(/<pre><code( class="language-([^"]+)")?>([\s\S]*?)<\/code><\/pre>/g, (match, _langClass, lang, code) => {
12281
12277
  const decoded = code
12282
12278
  .replace(/&/g, '&')
@@ -12291,8 +12287,6 @@
12291
12287
  });
12292
12288
  }
12293
12289
  else {
12294
- // Browser: use DOMParser for robust manipulation
12295
- // Inject highlight.js GitHub Dark CSS if not already present and code block exists
12296
12290
  if (html.match(/<pre><code/)) {
12297
12291
  const cssId = 'hljs-github-dark-css';
12298
12292
  if (!window.document.getElementById(cssId)) {
@@ -12303,7 +12297,6 @@
12303
12297
  window.document.head.appendChild(link);
12304
12298
  }
12305
12299
  }
12306
- // Inject KaTeX CSS if not already present and math exists
12307
12300
  if (html.match(/class="katex/)) {
12308
12301
  const katexCssId = 'katex-css';
12309
12302
  if (!window.document.getElementById(katexCssId)) {
@@ -12347,29 +12340,22 @@
12347
12340
  });
12348
12341
  html = doc.body.innerHTML;
12349
12342
  }
12350
- // Basic sanitization - remove potentially dangerous attributes
12351
- // Note: For production use, consider using a proper HTML sanitizer like DOMPurify
12352
- // Allow safe HTML tables (<table>, <tr>, <td>, <th>, <thead>, <tbody>, <tfoot>)
12353
- // Remove script/style/iframe/object/embed tags and event handlers
12354
12343
  const sanitizedHtml = html
12355
- .replace(/<\s*(script|style|iframe|object|embed)[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi, '') // Remove dangerous tags
12356
- .replace(/\s+on\w+="[^"]*"/gi, '') // Remove event handlers
12357
- .replace(/\s+javascript:/gi, '') // Remove javascript: URLs
12358
- .replace(/\s+data:/gi, '') // Remove data: URLs for security
12359
- .replace(/\s+vbscript:/gi, ''); // Remove vbscript: URLs
12360
- // Optionally, allow only specific tags (table-related and common markdown tags)
12361
- // For now, we rely on Showdown + above regex for safety
12344
+ .replace(/<\s*(script|style|iframe|object|embed)[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi, '')
12345
+ .replace(/\s+on\w+="[^"]*"/gi, '')
12346
+ .replace(/\s+javascript:/gi, '')
12347
+ .replace(/\s+data:/gi, '')
12348
+ .replace(/\s+vbscript:/gi, '');
12362
12349
  return sanitizedHtml;
12363
12350
  }
12364
12351
  catch (error) {
12365
12352
  console.error('Error rendering markdown:', error);
12366
- // Fallback to plain text if markdown parsing fails
12367
12353
  return markdown.replace(/[<>&"']/g, (char) => {
12368
12354
  const entities = {
12369
- '<': '&lt;',
12370
- '>': '&gt;',
12371
- '&': '&amp;',
12372
- '"': '&quot;',
12355
+ '<': '<',
12356
+ '>': '>',
12357
+ '&': '&',
12358
+ '"': '"',
12373
12359
  "'": '&#39;',
12374
12360
  };
12375
12361
  return entities[char] || char;
@@ -12377,35 +12363,16 @@
12377
12363
  }
12378
12364
  }
12379
12365
  /**
12380
- * Check if content appears to be markdown (contains markdown syntax)
12381
- *
12382
- * @param content - Content to check
12383
- * @returns true if content appears to contain markdown syntax
12366
+ * Renders markdown content with support for code highlighting, math, and tables.
12384
12367
  *
12385
12368
  * @public exported from `@promptbook/components`
12386
- * <- TODO: [🧠] Maybe export from `@promptbook/markdown-utils`
12387
12369
  */
12388
- function isMarkdownContent(content) {
12389
- if (!content || typeof content !== 'string') {
12390
- return false;
12391
- }
12392
- // Check for common markdown patterns
12393
- const markdownPatterns = [
12394
- /^#{1,6}\s+/m,
12395
- /\*\*.*?\*\*/,
12396
- /\*.*?\*/,
12397
- /`.*?`/,
12398
- /```[\s\S]*?```/,
12399
- /^\s*[-*+]\s+/m,
12400
- /^\s*\d+\.\s+/m,
12401
- /^\s*>\s+/m,
12402
- /\[.*?\]\(.*?\)/,
12403
- /!\[.*?\]\(.*?\)/,
12404
- /^\s*\|.*\|/m,
12405
- /~~.*?~~/,
12406
- /^\s*---+\s*$/m, // Horizontal rules
12407
- ];
12408
- return markdownPatterns.some((pattern) => pattern.test(content));
12370
+ function MarkdownContent(props) {
12371
+ const { content, className } = props;
12372
+ const htmlContent = react.useMemo(() => renderMarkdown(content), [content]);
12373
+ return (jsxRuntime.jsx("div", { className: className, dangerouslySetInnerHTML: {
12374
+ __html: htmlContent,
12375
+ } }));
12409
12376
  }
12410
12377
 
12411
12378
  /**
@@ -12513,7 +12480,6 @@
12513
12480
  }
12514
12481
  }, [isExpanded]);
12515
12482
  const contentWithoutButtonsRef = react.useRef(null);
12516
- const contentWithoutButtonsHtml = react.useMemo(() => renderMarkdown(contentWithoutButtons), [contentWithoutButtons]);
12517
12483
  return (jsxRuntime.jsxs("div", { className: classNames(chatStyles.chatMessage, isMe && chatStyles.isMe, !message.isComplete && chatStyles.isNotCompleteMessage), onClick: () => {
12518
12484
  console.group('💬', message.content);
12519
12485
  console.info('message', message);
@@ -12532,8 +12498,9 @@
12532
12498
  e.stopPropagation();
12533
12499
  if (navigator.clipboard && window.ClipboardItem) {
12534
12500
  const clipboardItems = {};
12535
- if (just(true)) {
12536
- clipboardItems['text/html'] = new Blob([contentWithoutButtonsHtml], {
12501
+ if (contentWithoutButtonsRef.current) {
12502
+ const html = contentWithoutButtonsRef.current.innerHTML;
12503
+ clipboardItems['text/html'] = new Blob([html], {
12537
12504
  type: 'text/html',
12538
12505
  });
12539
12506
  }
@@ -12572,16 +12539,12 @@
12572
12539
  ? ' ' + chatStyles.copiedTooltipLeft
12573
12540
  : tooltipAlign === 'right'
12574
12541
  ? ' ' + chatStyles.copiedTooltipRight
12575
- : ''), children: "Copied!" }))] }) })), message.isVoiceCall && (jsxRuntime.jsx("div", { className: chatStyles.voiceCallIndicator, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }) })), message.content === LOADING_INTERACTIVE_IMAGE ? (jsxRuntime.jsx(jsxRuntime.Fragment, {})) : (jsxRuntime.jsx("div", { ref: contentWithoutButtonsRef, dangerouslySetInnerHTML: {
12576
- __html: contentWithoutButtonsHtml,
12577
- } })), !message.isComplete && jsxRuntime.jsx("span", { className: chatStyles.NonCompleteMessageFiller, children: '_'.repeat(70) }), shouldShowButtons && (jsxRuntime.jsx("div", { className: chatStyles.messageButtons, children: buttons.map((button, buttonIndex) => (jsxRuntime.jsx("button", { className: chatStyles.messageButton, onClick: (event) => {
12542
+ : ''), children: "Copied!" }))] }) })), message.isVoiceCall && (jsxRuntime.jsx("div", { className: chatStyles.voiceCallIndicator, children: jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: jsxRuntime.jsx("path", { d: "M6.62 10.79c1.44 2.83 3.76 5.14 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1-9.39 0-17-7.61-17-17 0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.25.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2z" }) }) })), message.content === LOADING_INTERACTIVE_IMAGE ? (jsxRuntime.jsx(jsxRuntime.Fragment, {})) : (jsxRuntime.jsx("div", { ref: contentWithoutButtonsRef, children: jsxRuntime.jsx(MarkdownContent, { content: contentWithoutButtons }) })), !message.isComplete && jsxRuntime.jsx("span", { className: chatStyles.NonCompleteMessageFiller, children: '_'.repeat(70) }), shouldShowButtons && (jsxRuntime.jsx("div", { className: chatStyles.messageButtons, children: buttons.map((button, buttonIndex) => (jsxRuntime.jsx("button", { className: chatStyles.messageButton, onClick: (event) => {
12578
12543
  event.stopPropagation();
12579
12544
  if (onMessage) {
12580
12545
  onMessage(button.message);
12581
12546
  }
12582
- }, dangerouslySetInnerHTML: {
12583
- __html: renderMarkdown(button.text),
12584
- } }, buttonIndex))) })), isFeedbackEnabled && message.isComplete && (jsxRuntime.jsx("div", { className: chatStyles.rating, onMouseEnter: () => {
12547
+ }, children: jsxRuntime.jsx(MarkdownContent, { content: button.text }) }, buttonIndex))) })), isFeedbackEnabled && message.isComplete && (jsxRuntime.jsx("div", { className: chatStyles.rating, onMouseEnter: () => {
12585
12548
  setExpandedMessageId(message.id || message.content /* <-[💃] */);
12586
12549
  }, onMouseLeave: () => {
12587
12550
  setExpandedMessageId(null);
@@ -13664,6 +13627,214 @@
13664
13627
  onMessage: isSimulationComplete && chatProps.onMessage ? chatProps.onMessage : undefined }));
13665
13628
  }
13666
13629
 
13630
+ /**
13631
+ *
13632
+ *
13633
+ * @private utility of QR code components
13634
+ */
13635
+ function useQrCode(options) {
13636
+ const { value, logoSrc, ...restOptions } = options;
13637
+ const canvasRef = react.useRef(null);
13638
+ react.useEffect(() => {
13639
+ if (!canvasRef.current) {
13640
+ console.log('!!! !canvasRef.current');
13641
+ return;
13642
+ }
13643
+ const canvas = canvasRef.current;
13644
+ QRCode__default["default"].toCanvas(canvas, value.toString(), restOptions, (error) => {
13645
+ console.log('!!! QR code generated');
13646
+ if (error) {
13647
+ console.error(error);
13648
+ return;
13649
+ }
13650
+ if (!logoSrc) {
13651
+ console.log('!!! !logoSrc');
13652
+ return;
13653
+ }
13654
+ const ctx = canvas.getContext('2d');
13655
+ if (!ctx) {
13656
+ console.error('!!! Failed to get canvas 2D context');
13657
+ return;
13658
+ }
13659
+ const logo = new Image();
13660
+ logo.src = logoSrc;
13661
+ logo.onload = () => {
13662
+ console.log('!!! Logo loaded for QR code');
13663
+ const logoSize = canvas.width / 4;
13664
+ const logoX = (canvas.width - logoSize) / 2;
13665
+ const logoY = (canvas.height - logoSize) / 2;
13666
+ ctx.drawImage(logo, logoX, logoY, logoSize, logoSize);
13667
+ };
13668
+ });
13669
+ }, [value, logoSrc]);
13670
+ return { canvasRef };
13671
+ }
13672
+
13673
+ /**
13674
+ * @public exported from `@promptbook/components`
13675
+ */
13676
+ function BrandedQrCode(props) {
13677
+ const { value, logoSrc, size = 250, className } = props;
13678
+ const { canvasRef } = useQrCode({ value, logoSrc });
13679
+ return (jsxRuntime.jsx("div", { className: className, children: jsxRuntime.jsx("canvas", { ref: canvasRef, width: size, height: size }) }));
13680
+ }
13681
+
13682
+ /**
13683
+ * @public exported from `@promptbook/components`
13684
+ */
13685
+ function GenericQrCode({ value, size = 250, className }) {
13686
+ const { canvasRef } = useQrCode({ value });
13687
+ return (jsxRuntime.jsx("div", { className: className, children: jsxRuntime.jsx("canvas", { ref: canvasRef, width: size, height: size }) }));
13688
+ }
13689
+
13690
+ const PROMPTBOOK_LOGO_DATAURL = `data:image/png;base64,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`;
13691
+ // <- TODO: Remove this and use actual img imported logo
13692
+ /**
13693
+ * @public exported from `@promptbook/components`
13694
+ */
13695
+ function PromptbookQrCode(props) {
13696
+ const { value, className, size = 250 } = props;
13697
+ const generateQRCode = async (canvasElement, options) => {
13698
+ const QRCodeGenerator = (await import('qrcode')).default;
13699
+ // Draw QR code first
13700
+ await new Promise((resolve, reject) => {
13701
+ QRCodeGenerator.toCanvas(canvasElement, value.toString(), options, (error) => {
13702
+ if (error) {
13703
+ console.error(error);
13704
+ reject(error);
13705
+ }
13706
+ else {
13707
+ resolve();
13708
+ }
13709
+ });
13710
+ });
13711
+ // Add logo after QR code is drawn
13712
+ const ctx = canvasElement.getContext('2d');
13713
+ if (!ctx)
13714
+ return;
13715
+ const logo = new Image();
13716
+ logo.src = PROMPTBOOK_LOGO_DATAURL;
13717
+ await new Promise((resolve) => {
13718
+ logo.onload = () => {
13719
+ // Calculate the size of a single QR code module based on canvas dimensions and margin.
13720
+ // We still need to make an assumption about the number of modules per side,
13721
+ // as the library doesn't expose it directly after drawing.
13722
+ // For error correction level 'H', and a reasonable amount of data for a logo,
13723
+ // the version is likely between 7 and 15 (45x45 to 77x77 modules).
13724
+ // Let's use an estimated average or a value that has worked well.
13725
+ // A common size for a logo-inclusive QR code is version 7 (45 modules) or higher.
13726
+ // Let's estimate based on version 10 (57 modules) as a starting point,
13727
+ // as it was used in previous attempts and might be close.
13728
+ const estimatedModulesPerSide = 57; // Modules in the QR code pattern itself
13729
+ const totalModuleUnits = estimatedModulesPerSide + 2 * (options.margin || 0); // Total units including margin
13730
+ const moduleSize = canvasElement.width / totalModuleUnits; // Size of one module in canvas pixels
13731
+ // Define desired logo size in terms of modules (must be odd for centering) and calculate in pixels
13732
+ const desiredLogoModules = 15;
13733
+ const logoSize = desiredLogoModules * moduleSize;
13734
+ // Calculate the center of the QR code drawable area (excluding margin pixels)
13735
+ const marginPixels = (options.margin || 0) * moduleSize;
13736
+ const qrCodeDrawableSize = canvasElement.width - 2 * marginPixels;
13737
+ const qrCenterX = marginPixels + qrCodeDrawableSize / 2;
13738
+ const qrCenterY = marginPixels + qrCodeDrawableSize / 2;
13739
+ // Calculate logo position to be centered within the QR code drawable area, snapped to the module grid
13740
+ const logoX = qrCenterX - logoSize / 2;
13741
+ const logoY = qrCenterY - logoSize / 2;
13742
+ // Snap logo position and size to the nearest module boundary for better grid alignment
13743
+ const finalLogoX = Math.round(logoX / moduleSize) * moduleSize;
13744
+ const finalLogoY = Math.round(logoY / moduleSize) * moduleSize;
13745
+ const finalLogoSize = Math.round(logoSize / moduleSize) * moduleSize;
13746
+ // Recalculate hexagon position based on the snapped logo position and size
13747
+ const hexagonPaddingModules = 1; // Padding around the logo in terms of modules
13748
+ const hexagonSize = (desiredLogoModules + 2 * hexagonPaddingModules) * moduleSize; // Hexagon size including padding
13749
+ // Center the hexagon based on the snapped logo position, with padding
13750
+ const hexagonCenterX = finalLogoX + finalLogoSize / 2;
13751
+ const hexagonCenterY = finalLogoY + finalLogoSize / 2;
13752
+ ctx.fillStyle = '#ffffff';
13753
+ ctx.beginPath();
13754
+ // Draw hexagon with corners pointing up
13755
+ for (let i = 0; i < 6; i++) {
13756
+ const angle = (i * Math.PI) / 3 + Math.PI / 6; // Added π/6 to rotate by 30 degrees
13757
+ const x = hexagonCenterX + (hexagonSize / 2) * Math.cos(angle);
13758
+ const y = hexagonCenterY + (hexagonSize / 2) * Math.sin(angle);
13759
+ if (i === 0) {
13760
+ ctx.moveTo(x, y);
13761
+ }
13762
+ else {
13763
+ ctx.lineTo(x, y);
13764
+ }
13765
+ }
13766
+ ctx.closePath();
13767
+ ctx.fill();
13768
+ // Draw logo at the snapped position and size
13769
+ ctx.drawImage(logo, finalLogoX, finalLogoY, finalLogoSize, finalLogoSize);
13770
+ resolve();
13771
+ };
13772
+ // Handle potential logo loading errors
13773
+ logo.onerror = (error) => {
13774
+ console.error('Error loading logo:', error);
13775
+ resolve(); // Resolve anyway to not block QR code rendering
13776
+ };
13777
+ });
13778
+ };
13779
+ /*
13780
+ const handleDownload = async () => {
13781
+ // Create a temporary canvas for high-res QR code
13782
+ const tempCanvas = document.createElement('canvas');
13783
+ const highResOptions: QRCodeRenderersOptions = {
13784
+ ...props,
13785
+ color: {
13786
+ dark: '#000080',
13787
+ light: '#FFFFFF',
13788
+ },
13789
+ errorCorrectionLevel: 'H',
13790
+ margin: 1,
13791
+ width: 4096, // Even higher resolution for printing
13792
+ scale: undefined, // Let library determine scale based on width
13793
+ };
13794
+ delete (highResOptions as TODO_any).href;
13795
+
13796
+ // Generate QR code with logo on the temporary canvas
13797
+ await generateQRCode(tempCanvas, highResOptions);
13798
+
13799
+ // Create download link
13800
+ const pngUrl = tempCanvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');
13801
+ const downloadLink = document.createElement('a');
13802
+ downloadLink.href = pngUrl;
13803
+ downloadLink.download = `qrcode-${value
13804
+ .toString()
13805
+ .replace(/[^a-z0-9]/gi, '-')
13806
+ .toLowerCase()}.png`;
13807
+ document.body.appendChild(downloadLink);
13808
+ downloadLink.click();
13809
+ document.body.removeChild(downloadLink);
13810
+ };
13811
+ */
13812
+ return (jsxRuntime.jsx("div", { className: className, children: jsxRuntime.jsx("canvas", { width: size, height: size, ref: (canvasElement) => {
13813
+ if (!canvasElement) {
13814
+ return;
13815
+ }
13816
+ // Set canvas dimensions if size is specified
13817
+ if (size) {
13818
+ canvasElement.width = size;
13819
+ canvasElement.height = size;
13820
+ }
13821
+ // Display options - keep original size for display
13822
+ const displayOptions = {
13823
+ ...props,
13824
+ color: {
13825
+ dark: '#000080',
13826
+ light: '#FFFFFF',
13827
+ },
13828
+ errorCorrectionLevel: 'H',
13829
+ margin: 3,
13830
+ };
13831
+ delete displayOptions.href;
13832
+ delete displayOptions.height; // Remove height as it's not a QRCode option
13833
+ // Generate QR code with logo on the display canvas
13834
+ /* not await */ generateQRCode(canvasElement, displayOptions);
13835
+ } }) }));
13836
+ }
13837
+
13667
13838
  /**
13668
13839
  * Collect matching CSS texts from document stylesheets for a given class.
13669
13840
  * This will skip cross-origin stylesheets (they throw when accessed).
@@ -13748,19 +13919,23 @@
13748
13919
  exports.BLOCKY_FLOW = BLOCKY_FLOW;
13749
13920
  exports.BOOK_LANGUAGE_VERSION = BOOK_LANGUAGE_VERSION;
13750
13921
  exports.BookEditor = BookEditor;
13922
+ exports.BrandedQrCode = BrandedQrCode;
13751
13923
  exports.CHAT_SAVE_FORMATS = CHAT_SAVE_FORMATS;
13752
13924
  exports.Chat = Chat;
13753
13925
  exports.CloseIcon = CloseIcon;
13754
13926
  exports.DEFAULT_BOOK_EDITOR_HEIGHT = DEFAULT_BOOK_EDITOR_HEIGHT;
13755
13927
  exports.DEFAULT_BOOK_FONT_CLASS = DEFAULT_BOOK_FONT_CLASS;
13756
13928
  exports.FAST_FLOW = FAST_FLOW;
13929
+ exports.GenericQrCode = GenericQrCode;
13757
13930
  exports.LlmChat = LlmChat;
13758
13931
  exports.MOCKED_CHAT_DELAY_CONFIGS = MOCKED_CHAT_DELAY_CONFIGS;
13932
+ exports.MarkdownContent = MarkdownContent;
13759
13933
  exports.MockedChat = MockedChat;
13760
13934
  exports.NORMAL_FLOW = NORMAL_FLOW;
13761
13935
  exports.PROMPTBOOK_ENGINE_VERSION = PROMPTBOOK_ENGINE_VERSION;
13762
13936
  exports.PauseIcon = PauseIcon;
13763
13937
  exports.PlayIcon = PlayIcon;
13938
+ exports.PromptbookQrCode = PromptbookQrCode;
13764
13939
  exports.RANDOM_FLOW = RANDOM_FLOW;
13765
13940
  exports.ResetIcon = ResetIcon;
13766
13941
  exports.SLOW_FLOW = SLOW_FLOW;
@@ -13770,13 +13945,11 @@
13770
13945
  exports.getChatSaveFormatDefinitions = getChatSaveFormatDefinitions;
13771
13946
  exports.htmlSaveFormatDefinition = htmlSaveFormatDefinition;
13772
13947
  exports.injectCssModuleIntoShadowRoot = injectCssModuleIntoShadowRoot;
13773
- exports.isMarkdownContent = isMarkdownContent;
13774
13948
  exports.jsonSaveFormatDefinition = jsonSaveFormatDefinition;
13775
13949
  exports.mdSaveFormatDefinition = mdSaveFormatDefinition;
13776
13950
  exports.parseMessageButtons = parseMessageButtons;
13777
13951
  exports.pdfSaveFormatDefinition = pdfSaveFormatDefinition;
13778
13952
  exports.reactSaveFormatDefinition = reactSaveFormatDefinition;
13779
- exports.renderMarkdown = renderMarkdown;
13780
13953
  exports.txtSaveFormatDefinition = txtSaveFormatDefinition;
13781
13954
  exports.useChatAutoScroll = useChatAutoScroll;
13782
13955
  exports.useSendMessageToLlmChat = useSendMessageToLlmChat;