-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path15_OODA.html
More file actions
310 lines (271 loc) · 16 KB
/
15_OODA.html
File metadata and controls
310 lines (271 loc) · 16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>15 OODA</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');
*{margin:0;padding:0;box-sizing:border-box}
/* THEMES */
:root {
--bg: #030712;
--cyan: #00e5ff; --magenta: #ff2d95; --purple: #a855f7;
--green: #00ff88; --gold: #ffb800; --white: #ecedf2;
--glass: rgba(255,255,255,.025); --glass-border: rgba(255,255,255,.05);
}
body.theme-aurora {
--cyan: #00ff88; --magenta: #ffb800; --purple: #00e5ff;
--green: #ff2d95; --gold: #a855f7;
}
body.theme-void {
--cyan: #a855f7; --magenta: #c4b5fd; --purple: #00e5ff;
--green: #c084fc; --gold: #e9d5ff; --white: #f5f3ff;
}
html { scroll-behavior: smooth }
body {
font-family: 'Space Grotesk', system-ui, sans-serif;
background: var(--bg); color: #c4c4d4;
min-height: 100vh; line-height: 1.75; font-size: 15px;
}
/* Progress bar */
.progress-bar {
position: fixed; top: 0; left: 0; height: 2px;
background: linear-gradient(90deg, var(--cyan), var(--magenta), var(--purple), var(--green));
z-index: 9999; transition: width .1s linear;
border-radius: 0 2px 2px 0; box-shadow: 0 0 10px rgba(0,229,255,.5);
}
/* Back to top */
.back-to-top {
position: fixed; bottom: 28px; right: 28px; z-index: 999;
width: 44px; height: 44px; border-radius: 14px;
background: rgba(0,229,255,.06);
border: 1px solid rgba(0,229,255,.2);
color: var(--cyan); cursor: pointer;
display: flex; align-items: center; justify-content: center;
font-size: 20px; font-weight: 700;
opacity: 0; transform: translateY(16px);
pointer-events: none;
transition: all .35s ease; backdrop-filter: blur(8px);
}
.back-to-top.visible { opacity: 1; transform: translateY(0); pointer-events: auto }
.back-to-top:hover {
background: rgba(0,229,255,.12); border-color: rgba(0,229,255,.4);
box-shadow: 0 0 24px rgba(0,229,255,.15); transform: translateY(-3px);
}
body::before {
content: '';
position: fixed; inset: 0; z-index: 0; pointer-events: none;
background:
linear-gradient(90deg, rgba(0,229,255,.015) 1px, transparent 1px),
linear-gradient(0deg, rgba(0,229,255,.015) 1px, transparent 1px);
background-size: 70px 70px;
mask: radial-gradient(ellipse 80% 80% at 50% 10%, #000 15%, transparent 70%);
}
.container { position: relative; z-index: 1; max-width: 820px; margin: 0 auto; padding: 36px 24px 80px }
/* Top row */
.top-row { display: flex; align-items: center; gap: 14px; margin-bottom: 36px; flex-wrap: wrap }
.btn {
display: inline-flex; align-items: center; gap: 8px;
font-family: 'Space Grotesk', system-ui, sans-serif;
font-size: 13px; font-weight: 500;
padding: 10px 20px; border-radius: 12px;
cursor: pointer; text-decoration: none;
transition: all .3s ease; position: relative; white-space: nowrap;
}
.btn-back { background: rgba(0,229,255,.04); border: 1px solid rgba(0,229,255,.15); color: rgba(0,229,255,.7) }
.btn-back:hover { background: rgba(0,229,255,.08); border-color: rgba(0,229,255,.35); color: var(--cyan); box-shadow: 0 0 16px rgba(0,229,255,.12), inset 0 0 16px rgba(0,229,255,.04) }
.btn-copy { background: rgba(0,255,136,.04); border: 1px solid rgba(0,255,136,.15); color: rgba(0,255,136,.7) }
.btn-copy:hover { background: rgba(0,255,136,.08); border-color: rgba(0,255,136,.35); color: var(--green); box-shadow: 0 0 16px rgba(0,255,136,.12), inset 0 0 16px rgba(0,255,136,.04) }
.btn-copy.copied { background: rgba(0,255,136,.1); border-color: rgba(0,255,136,.4); color: var(--green); box-shadow: 0 0 20px rgba(0,255,136,.2) }
.btn svg { width: 16px; height: 16px; flex-shrink: 0 }
/* Content card */
.content-card {
background: var(--glass); border: 1px solid var(--glass-border);
border-radius: 22px; padding: 44px 48px;
position: relative; overflow: hidden;
}
.content-card::before {
content: '';
position: absolute; top: 0; left: 0; right: 0; height: 3px;
background: linear-gradient(90deg, var(--cyan), var(--magenta), var(--purple), var(--green));
border-radius: 3px 3px 0 0;
}
h1 {
font-family: 'Space Grotesk', system-ui, sans-serif;
font-size: 32px; font-weight: 700;
background: linear-gradient(135deg, var(--cyan), var(--magenta));
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 28px; padding-bottom: 24px;
border-bottom: 1px solid var(--glass-border); letter-spacing: -.02em;
}
h2 { font-size: 21px; font-weight: 600; color: #e8e8f0; margin: 36px 0 16px; padding-left: 16px; border-left: 3px solid var(--cyan); border-radius: 0 3px 3px 0; letter-spacing: -.01em }
h3 { font-size: 17px; font-weight: 600; color: #d4d4e0; margin: 28px 0 12px }
strong { color: #e8e8f0; font-weight: 600 }
ul, ol { margin: 14px 0; padding-left: 26px }
li { margin: 7px 0; color: #b0b0c0 }
li::marker { color: var(--cyan) }
p { margin: 12px 0; color: #b4b4c4 }
hr { border: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--glass-border), transparent); margin: 32px 0 }
code { background: rgba(0,229,255,.06); color: var(--cyan); padding: 2px 10px; border-radius: 5px; font-size: 13px; font-family: 'JetBrains Mono', monospace; border: 1px solid rgba(0,229,255,.1) }
pre.code-block { background: rgba(0,0,0,.5); padding: 20px 24px; border-radius: 14px; border: 1px solid var(--glass-border); overflow-x: auto; font-size: 13px; line-height: 1.7; margin: 16px 0; color: #aaa; font-family: 'JetBrains Mono', monospace }
/* Prev/Next */
.nav-bottom { display: flex; justify-content: space-between; gap: 14px; margin-top: 36px }
.btn-nav {
display: inline-flex; align-items: center; gap: 10px;
font-family: 'Space Grotesk', system-ui, sans-serif;
font-size: 14px; font-weight: 500;
padding: 14px 24px; border-radius: 14px;
text-decoration: none; transition: all .3s ease;
flex: 1; max-width: 50%;
}
.btn-prev { background: rgba(168,85,247,.04); border: 1px solid rgba(168,85,247,.15); color: rgba(168,85,247,.7); justify-content: flex-start }
.btn-prev:hover { background: rgba(168,85,247,.08); border-color: rgba(168,85,247,.35); color: var(--purple); box-shadow: 0 0 16px rgba(168,85,247,.12), inset 0 0 16px rgba(168,85,247,.04) }
.btn-next { background: rgba(255,45,149,.04); border: 1px solid rgba(255,45,149,.15); color: rgba(255,45,149,.7); justify-content: flex-end; margin-left: auto }
.btn-next:hover { background: rgba(255,45,149,.08); border-color: rgba(255,45,149,.35); color: var(--magenta); box-shadow: 0 0 16px rgba(255,45,149,.12), inset 0 0 16px rgba(255,45,149,.04) }
.btn-nav .nav-label { font-size: 11px; opacity: .5; display: block; line-height: 1 }
.btn-nav .nav-title { font-size: 14px; font-weight: 600 }
@media (min-width: 820px) { .content-card { box-shadow: 0 0 50px rgba(0,229,255,.02), 0 8px 32px rgba(0,0,0,.5) } }
@media (max-width: 600px) {
.container { padding: 20px 14px 60px }
.content-card { padding: 28px 20px; border-radius: 18px }
h1 { font-size: 26px } h2 { font-size: 18px }
.btn { padding: 8px 16px; font-size: 12px }
.btn-nav { padding: 12px 16px; font-size: 13px }
.btn-nav .nav-title { font-size: 12px }
.back-to-top { bottom: 18px; right: 18px; width: 38px; height: 38px }
}
</style>
</head>
<body>
<div class="progress-bar" id="progressBar"></div>
<button class="back-to-top" id="backToTop" title="Наверх">↑</button>
<div class="container">
<div class="top-row">
<a class="btn btn-back" href="index.html">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M19 12H5M12 19l-7-7 7-7"/></svg>
Назад к списку
</a>
<button class="btn btn-copy" onclick="copyPrompt(this)" title="Скопировать весь промпт">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>
Копировать
</button>
</div>
<div class="content-card" id="prompt-content">
<h1>OODA Loop — Цикл НОРД (Наблюдай-Ориентируйся-Решай-Действуй)</h1>
<p><strong>Автор:</strong> Джон Бойд (полковник ВВС США, 1950-70-е)</p>
<p><strong>Тип:</strong> Динамический цикл принятия решений</p>
<p><strong>Что анализирует:</strong> Скорость и качество решений в быстро меняющейся среде</p>
<h2>Контекст</h2>
<p>Бойд — пилот-ас Корейской войны. Его тезис: в бою побеждает не тот у кого </p>
<p>лучше самолёт, а тот кто БЫСТРЕЕ проходит цикл OODA. </p>
<p>«Залезь внутрь OODA-петли противника» — пока он реагирует на твой прошлый </p>
<p>манёвр, ты уже делаешь следующий.</p>
<h2>Алгоритм анализа</h2>
<h3>O — Observe (Наблюдай)</h3>
<p>Собери ВСЕ доступные данные из ВСЕХ источников:</p>
<ul>
<li>Внешние: рынок, конкуренты, клиенты, регуляторы, технологии, новости</li>
<li>Внутренние: метрики продукта, финансы, команда, скорость разработки</li>
<li>Неявные: паттерны, аномалии, слухи, «что-то не так»</li>
</ul>
<p>Ловушки:</p>
<ul>
<li>Confirmation bias: ищешь только то, что подтверждает твою картину</li>
<li>Filter bubble: видишь только через свои каналы</li>
<li>Information overload: собираешь больше чем можешь переварить</li>
</ul>
<p>Решение: сырые данные, разные источники, «чужая» аналитика.</p>
<h3>O — Orient (Ориентируйся)</h3>
<p>Самый важный этап. Пропусти наблюдения через фильтры:</p>
<ul>
<li>Генетическое наследие (инстинкты, когнитивные искажения)</li>
<li>Культурные традиции (корпоративная культура, «у нас так принято»)</li>
<li>Предыдущий опыт (что сработало в прошлом — может не сработать сейчас)</li>
<li>Новые данные (разрушают старую картину)</li>
</ul>
<p>Синтезируй МЕНТАЛЬНУЮ МОДЕЛЬ текущей ситуации.</p>
<p>«Что на самом деле происходит?» — а не «что я хочу видеть».</p>
<h3>D — Decide (Решай)</h3>
<p>Выбери гипотезу/действие из ментальной модели:</p>
<ul>
<li>Имплицитное руководство (интуиция, опыт)</li>
<li>Эксплицитное руководство (анализ, процедуры, регламенты)</li>
<li>Главный критерий: СКОРОСТЬ > ТОЧНОСТЬ</li>
<li>Лучше решение на 70% сейчас, чем на 100% завтра</li>
</ul>
<h3>A — Act (Действуй)</h3>
<p>Выполни действие. Быстро. Без колебаний.</p>
<ul>
<li>Это ТЕСТ гипотезы, а не финальная истина.</li>
<li>Действие создаёт новые данные → запускает следующий цикл.</li>
</ul>
<h3>Ускорение цикла</h3>
<p>После действия немедленно возвращайся к Observe.</p>
<p>Цель: проходить цикл БЫСТРЕЕ противника/конкурента/проблемы.</p>
<p>Tempo > Precision. Если твой цикл 1 час, а у конкурента 1 день — ты </p>
<p>проходишь 24 цикла за его 1. К 10-му циклу он реагирует на то что </p>
<p>ты сделал 5 циклов назад.</p>
<h2>Применение в бизнесе</h2>
<ul>
<li>Стартап vs корпорация: стартап быстрее проходит цикл</li>
<li>A/B-тесты = Observe в контролируемой среде</li>
<li>Agile-спринты = ритмизированный OODA</li>
<li>Lean Startup: Build → Measure → Learn = Act → Observe → Orient</li>
</ul>
<h2>Формат вывода</h2>
<ul>
<li><strong>Наблюдения:</strong> [что видим сейчас: 5-10 фактов]</li>
<li><strong>Ориентация:</strong> [ментальная модель: что происходит на самом деле?]</li>
<li><strong>Решение:</strong> [гипотеза, выбранная для проверки]</li>
<li><strong>Действие:</strong> [конкретный шаг, который даст новые данные]</li>
<li><strong>Скорость цикла:</strong> [часы / дни / недели? как ускорить?]</li>
<li><strong>Цикл конкурента:</strong> [их скорость — можем ли мы быть быстрее?]</li>
</ul>
</div>
<div class="nav-bottom">
<a class="btn-nav btn-prev" href="14_SYNECTICS.html"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:18px;height:18px;flex-shrink:0"><path d="M19 12H5M12 19l-7-7 7-7"/></svg><span><span class="nav-label">Предыдущий</span><span class="nav-title">Synectics</span></span></a>
<a class="btn-nav btn-next" href="16_FMEA.html"><span><span class="nav-label">Следующий</span><span class="nav-title">FMEA — Анализ отказов</span></span><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:18px;height:18px;flex-shrink:0"><path d="M5 12h14M12 5l7 7-7 7"/></svg></a>
</div>
</div>
<script>
// Theme
(function(){
var themes=['','theme-aurora','theme-void'];
var names=['','aurora','void'];
var saved=localStorage.getItem('theme');
var idx=names.indexOf(saved);
if(idx>0)document.body.classList.add(themes[idx]);
})();
// Progress bar
(function(){
var bar=document.getElementById('progressBar');
window.addEventListener('scroll',function(){
var h=document.documentElement;
bar.style.width=Math.min((h.scrollTop/(h.scrollHeight-h.clientHeight))*100,100)+'%';
},{passive:true});
})();
// Back to top
(function(){
var btn=document.getElementById('backToTop');
window.addEventListener('scroll',function(){btn.classList.toggle('visible',window.scrollY>400)},{passive:true});
btn.addEventListener('click',function(){window.scrollTo({top:0,behavior:'smooth'})});
})();
// Copy
function copyPrompt(btn) {
var text=document.getElementById('prompt-content').innerText;
navigator.clipboard.writeText(text).then(function(){
btn.classList.add('copied');
btn.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg> Скопировано!';
setTimeout(function(){btn.classList.remove('copied');btn.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg> Копировать';},2000);
}).catch(function(){
var ta=document.createElement('textarea');ta.value=text;ta.style.position='fixed';ta.style.opacity='0';
document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);
btn.classList.add('copied');btn.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"/></svg> Скопировано!';
setTimeout(function(){btn.classList.remove('copied');btn.innerHTML='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="9" y="9" width="13" height="13" rx="2" ry="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg> Копировать';},2000);
});
}
</script>
</body>
</html>