$
function renderTab(){const c=document.getElementById("tabContent");
if(activeTab==="interview"){c.innerHTML=`
${state.messages.map(m=>`
${m.role==='user'?'К':'Е'}
${fmt(m.content)}
`).join("")||'
Интервью не начато
'}
`;}
else if(activeTab==="methods"){if(!state.selection){c.innerHTML=runCard("methods","🎯","Подбор методологий","Елена предложит набор методологий под тип бизнеса.","Подобрать →");return}const s=state.selection;c.innerHTML=`
Тип бизнеса
${esc(s.business_type)}
${s.recommended.map(r=>`
${r.use?'✅':'⬜'}${r.method.toUpperCase()} [${r.depth}]${esc(r.reason)}
`).join("")}
${esc(s.rationale)}
${cpBar("methods","Согласны с набором?")}`;}
- else if(activeTab==="canvas"){if(!state.canvas){c.innerHTML=runCard("canvas","📊","Business Model Canvas","Стратегия — 9 блоков.","Построить →");return}c.innerHTML=renderCanvas(state.canvas)+cpBar("canvas","Стратегия верна?");}
- else if(activeTab==="idef0"){if(!state.model){c.innerHTML=runCard("model","🔧","Функциональная модель IDEF0","Функции, входы/выходы, нормы, разрывы.","Построить →");return}c.innerHTML=renderIdef(state.model)+cpBar("idef0","Модель верна?");}
+ else if(activeTab==="canvas"){if(!state.canvas){c.innerHTML=runCard("canvas",ic('chart',30),"Business Model Canvas","Стратегия — 9 блоков.","Построить →");return}c.innerHTML=renderCanvas(state.canvas)+cpBar("canvas","Стратегия верна?");}
+ else if(activeTab==="idef0"){if(!state.model){c.innerHTML=runCard("model",ic('process',30),"Функциональная модель IDEF0","Функции, входы/выходы, нормы, разрывы.","Построить →");return}c.innerHTML=renderIdef(state.model)+cpBar("idef0","Модель верна?");}
else if(activeTab==="org"){
- if(!state.model){c.innerHTML=`
⚠️
Сначала IDEF0
Оргструктура строится из функциональной модели.
`;return}
+ if(!state.model){c.innerHTML=`
${ic('alert',30)}
Сначала IDEF0
Оргструктура строится из функциональной модели.
`;return}
let h='';
- if(!state.orgchart)h+=runCard("orgchart","🏢","Целевая оргструктура","Из модели: роли, штат, подчинённость, узкие места, конфликты интересов.","Построить оргструктуру →");
+ if(!state.orgchart)h+=runCard("orgchart",ic('team',30),"Целевая оргструктура","Из модели: роли, штат, подчинённость, узкие места, конфликты интересов.","Построить оргструктуру →");
else h+=renderOrgChart(state.orgchart)+`
`;
if(state.orgchart){
- if(!state.jobs)h+=runCard("jobs","📋","Должностные инструкции","По ролям: ответственность, KPI, полномочия. С учётом отклонений клиента.","Собрать инструкции →");
+ if(!state.jobs)h+=runCard("jobs",ic('clipboard',30),"Должностные инструкции","По ролям: ответственность, KPI, полномочия. С учётом отклонений клиента.","Собрать инструкции →");
else h+=renderJobs(state.jobs)+`
`;
}
c.innerHTML=h;
}
- else if(activeTab==="spec"){if(!state.spec){if(!state.model){c.innerHTML=`
⚠️
Сначала IDEF0
ТЗ собирается из функциональной модели.
`;return}c.innerHTML=runCard("spec","📋","Техническое задание","Роли, модули, экраны, данные.","Собрать ТЗ →");return}c.innerHTML=renderSpecTab();}
+ else if(activeTab==="spec"){if(!state.spec){if(!state.model){c.innerHTML=`
${ic('alert',30)}
Сначала IDEF0
ТЗ собирается из функциональной модели.
`;return}c.innerHTML=runCard("spec",ic('clipboard',30),"Техническое задание","Роли, модули, экраны, данные.","Собрать ТЗ →");return}c.innerHTML=renderSpecTab();}
}
let specVariant="elena"; // elena | client — Phase 3 переключатель ТЗ
function renderSpecTab(){