191 lines
8.6 KiB
TypeScript
191 lines
8.6 KiB
TypeScript
import type { QOfficeState } from "../types";
|
||
|
||
export const initialState: QOfficeState = {
|
||
activeApp: "word",
|
||
word: {
|
||
id: "qword-project-proposal",
|
||
title: "Проектное предложение.qdocx",
|
||
updatedAt: new Date().toISOString(),
|
||
html: `
|
||
<h1>Проектное предложение</h1>
|
||
<h2>1. Обзор</h2>
|
||
<p>Документ описывает цели, область работ, сроки и ожидаемые результаты предлагаемого проекта.</p>
|
||
<h2>2. Цели</h2>
|
||
<p><span style="color: #0f5fae;">Ключевой результат</span>: <span style="background-color: #fff2cc;">подготовить проверяемую версию офисного пакета</span> с импортом и экспортом документов Microsoft Office.</p>
|
||
<ul>
|
||
<li>Поставить масштабируемое и сопровождаемое решение.</li>
|
||
<li>Повысить операционную эффективность.</li>
|
||
<li>Обеспечить безопасность данных и соответствие требованиям.</li>
|
||
<li>Показать измеримую бизнес-ценность.</li>
|
||
</ul>
|
||
<h2>3. Область работ</h2>
|
||
<p>Проект включает анализ требований, проектирование системы, разработку, тестирование, внедрение и сопровождение после запуска.</p>
|
||
<p>Дополнительные материалы доступны по <a href="https://example.com/qoffice/project">ссылке проекта</a>.</p>
|
||
<table>
|
||
<thead>
|
||
<tr><th>Этап</th><th>Описание</th><th>Ответственный</th></tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td>Планирование</td><td>Требования и календарный план</td><td>Алиса К.</td></tr>
|
||
<tr><td>Проектирование</td><td>Архитектура и UX</td><td>Борис Л.</td></tr>
|
||
<tr><td>Поставка</td><td>Разработка и контроль качества</td><td>Карина М.</td></tr>
|
||
</tbody>
|
||
</table>
|
||
`,
|
||
pageSetup: { size: "a4", orientation: "portrait", marginPreset: "normal" }
|
||
},
|
||
workbook: {
|
||
id: "qexcell-quarter-plan",
|
||
title: "Квартальный план.qxlsx",
|
||
updatedAt: new Date().toISOString(),
|
||
activeSheet: "sheet-1",
|
||
sheets: [
|
||
{
|
||
id: "sheet-1",
|
||
name: "Revenue",
|
||
cells: {
|
||
A1: "Продукт",
|
||
B1: "1 кв.",
|
||
C1: "2 кв.",
|
||
D1: "3 кв.",
|
||
E1: "Итого",
|
||
A2: "Базовый",
|
||
B2: "12500",
|
||
C2: "14300",
|
||
D2: "16800",
|
||
E2: "=SUM(B2:D2)",
|
||
A3: "Команды",
|
||
B3: "8200",
|
||
C3: "9100",
|
||
D3: "9900",
|
||
E3: "=SUM(B3:D3)",
|
||
A4: "Корпоративный",
|
||
B4: "19600",
|
||
C4: "21400",
|
||
D4: "23800",
|
||
E4: "=SUM(B4:D4)",
|
||
A6: "Общий итог",
|
||
E6: "=SUM(E2:E4)",
|
||
A8: "Объединённая строка примечания"
|
||
},
|
||
mergedCells: [{ start: "A8", end: "E8" }],
|
||
comments: {
|
||
E2: "Проверить сумму перед отправкой квартального отчета."
|
||
},
|
||
cellFormats: {
|
||
A1: { bold: true, fontSize: 12, textColor: "FFFFFF", fillColor: "0F5FAE", horizontalAlign: "center" },
|
||
B1: { bold: true, fontSize: 12, textColor: "FFFFFF", fillColor: "0F5FAE", horizontalAlign: "center" },
|
||
C1: { bold: true, fontSize: 12, textColor: "FFFFFF", fillColor: "0F5FAE", horizontalAlign: "center" },
|
||
D1: { bold: true, fontSize: 12, textColor: "FFFFFF", fillColor: "0F5FAE", horizontalAlign: "center" },
|
||
E1: { bold: true, fontSize: 12, textColor: "FFFFFF", fillColor: "0F5FAE", horizontalAlign: "center" },
|
||
B2: { numberFormat: "# ##0.00 ₽" },
|
||
C2: { numberFormat: "# ##0.00 ₽" },
|
||
D2: { numberFormat: "# ##0.00 ₽" },
|
||
E2: { numberFormat: "# ##0.00 ₽" },
|
||
B3: { numberFormat: "# ##0.00 ₽" },
|
||
C3: { numberFormat: "# ##0.00 ₽" },
|
||
D3: { numberFormat: "# ##0.00 ₽" },
|
||
E3: { numberFormat: "# ##0.00 ₽" },
|
||
B4: { numberFormat: "# ##0.00 ₽" },
|
||
C4: { numberFormat: "# ##0.00 ₽" },
|
||
D4: { numberFormat: "# ##0.00 ₽" },
|
||
E4: { numberFormat: "# ##0.00 ₽" },
|
||
E6: { numberFormat: "# ##0.00 ₽" }
|
||
},
|
||
charts: [
|
||
{
|
||
id: "chart-revenue-total",
|
||
type: "bar",
|
||
title: "Итого по продуктам",
|
||
labelRange: "A2:A4",
|
||
valueRange: "E2:E4"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
deck: {
|
||
id: "qpowerpoint-roadmap",
|
||
title: "Дорожная карта.qpptx",
|
||
updatedAt: new Date().toISOString(),
|
||
activeSlideId: "slide-1",
|
||
slides: [
|
||
{
|
||
id: "slide-1",
|
||
title: "Дорожная карта QOffice",
|
||
titleHyperlink: "https://git.kusoft.xyz/sevenhill/QOffice",
|
||
subtitle: "Единая рабочая среда для документов, данных, презентаций и коммуникации.",
|
||
notes: "Начать с цели продукта и текущего этапа.",
|
||
theme: "classic",
|
||
backgroundColor: "EAF6FF"
|
||
},
|
||
{
|
||
id: "slide-2",
|
||
title: "Модули продукта",
|
||
subtitle: "QWord, QExcell, QPowerPoint и QOutlook используют общую оболочку и модель хранения.",
|
||
notes: "Описать общую архитектуру и навигацию между модулями.",
|
||
theme: "ocean"
|
||
},
|
||
{
|
||
id: "slide-3",
|
||
title: "Следующий этап",
|
||
subtitle: "Импорт и экспорт файлов, совместная работа, аудит доступности и подпись пакетов.",
|
||
notes: "Завершить последовательностью реализации.",
|
||
theme: "graphite"
|
||
}
|
||
]
|
||
},
|
||
mail: {
|
||
activeFolder: "inbox",
|
||
activeMessageId: "mail-1",
|
||
messages: [
|
||
{
|
||
id: "mail-1",
|
||
folder: "inbox",
|
||
from: "Мария Чен",
|
||
to: "product@qoffice.local",
|
||
cc: "qa@qoffice.local",
|
||
subject: "Контрольный список запуска",
|
||
body: "Пожалуйста, проверьте этапы редакторов, цели упаковки и ответственных за качество до пятницы.",
|
||
bodyHtml:
|
||
"<h3>Контрольный список запуска</h3><p>Пожалуйста, проверьте <strong>этапы редакторов</strong>, цели упаковки и ответственных за качество до пятницы.</p><ul><li>QWord: страницы и DOCX</li><li>QExcell: XLSX round-trip</li><li>QOutlook: EML/MSG импорт</li></ul>",
|
||
time: "09:24",
|
||
read: false,
|
||
flagged: true,
|
||
attachments: [
|
||
{
|
||
id: "attachment-launch-checklist-1",
|
||
fileName: "launch-checklist.txt",
|
||
contentType: "text/plain",
|
||
size: 37,
|
||
contentBase64: "0J/RgNC+0LLQtdGA0LjRgtGMIERPQ1gvWExTWC9QUFRYL0VNTA==",
|
||
disposition: "attachment"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
id: "mail-2",
|
||
folder: "inbox",
|
||
from: "Иван Белл",
|
||
to: "product@qoffice.local",
|
||
subject: "Проверка формул таблиц",
|
||
body: "Последний слой таблиц поддерживает диапазоны, основные агрегатные функции, числовые форматы и базовые диаграммы. Следующий шаг — расширение fidelity сложных книг.",
|
||
time: "Вчера",
|
||
read: true,
|
||
flagged: false
|
||
},
|
||
{
|
||
id: "mail-3",
|
||
folder: "sent",
|
||
from: "product@qoffice.local",
|
||
to: "team@qoffice.local",
|
||
subject: "Заметки дизайн-ревью",
|
||
body: "Я отправил наблюдения по оболочке, ленте команд, инспектору и строке состояния после последнего ревью.",
|
||
time: "Пн",
|
||
read: true,
|
||
flagged: false
|
||
}
|
||
]
|
||
}
|
||
};
|