127 lines
4.7 KiB
Markdown
127 lines
4.7 KiB
Markdown
# Context (synthesized from SPEC §1, §9 and DOC)
|
||
|
||
Background, stakeholders, scope boundaries, and developer-facing operational
|
||
context. Functional requirements are in `requirements.md`; technical decisions
|
||
are in `decisions.md`; non-functional constraints are in `constraints.md`.
|
||
|
||
---
|
||
|
||
## Topic: Project goal
|
||
|
||
- Source: `Тз расширение фаза1.md` §1 (Контекст и цель)
|
||
- Notes:
|
||
- Operators work inside a browser and periodically make mistakes that are
|
||
hard to diagnose after the fact.
|
||
- The goal of Phase 1 is to silently and continuously record an operator's
|
||
session so that, on a button press, a self-contained archive of the
|
||
session can be exported to the "Downloads" folder for handoff to support.
|
||
- Phase 1 is local-only; no server, no AI, no auto-ticketing.
|
||
|
||
---
|
||
|
||
## Topic: Phase 1 scope (what is in)
|
||
|
||
- Source: `Тз расширение фаза1.md` §4, §5, §6, §7, §10; `README.md` §"Особенности"
|
||
- Notes:
|
||
- Continuous in-memory recording of:
|
||
- Last 30 s of active-tab video (`chrome.tabCapture` + MediaRecorder)
|
||
- Last 10 min of DOM events via rrweb (cap 5 000 events)
|
||
- Last 10 min of user/runtime events (click, input, navigation, js_error,
|
||
network_error)
|
||
- One-shot screenshot at export time (`chrome.tabs.captureVisibleTab`).
|
||
- Local ZIP packaging via JSZip and delivery via `chrome.downloads`.
|
||
- Sensitive-data masking for passwords and `[data-sensitive="true"]` fields.
|
||
- Single-button popup UI with idle / saving / done state machine.
|
||
|
||
---
|
||
|
||
## Topic: Phase 1 non-goals (Phase 2 work)
|
||
|
||
- Source: `Тз расширение фаза1.md` §9 (Что НЕ входит в Фазу 1)
|
||
- Notes — explicitly excluded from Phase 1 and reserved for Phase 2:
|
||
- Sending data to a server
|
||
- AI-driven diagnostics
|
||
- Automatic ticket creation
|
||
- Analytics dashboard
|
||
- Audio recording
|
||
|
||
---
|
||
|
||
## Topic: Developer workflow (install, build, debug)
|
||
|
||
- Source: `README.md` §"Установка и запуск", §"Отладка", §"Структура проекта"
|
||
- Provenance: This topic is DOC-only — the SPEC does not specify a build
|
||
toolchain. Per precedence `SPEC > DOC`, any future SPEC/ADR that prescribes a
|
||
different toolchain auto-overrides what is recorded here.
|
||
- Notes:
|
||
- **Install deps:** `npm install`
|
||
- **Dev build with HMR:** `npm run dev`
|
||
- **Prod build:** `npm run build`
|
||
- **Load in Chrome:**
|
||
1. `npm run build`
|
||
2. Open `chrome://extensions/`
|
||
3. Enable Developer mode
|
||
4. "Load unpacked"
|
||
5. Select the `dist/` folder
|
||
- **Debugging entry points:**
|
||
- Service Worker: Chrome DevTools → Extensions → Service Worker → Console
|
||
- Content Script: Chrome DevTools on the page → Console
|
||
- Popup: right-click popup → "Inspect"
|
||
- **Project layout (DOC-described, may be stale relative to actual repo):**
|
||
```
|
||
ai-call-extension/
|
||
├── src/
|
||
│ ├── background/ # Service Worker
|
||
│ │ └── index.ts
|
||
│ ├── content/ # Content Script
|
||
│ │ └── index.ts
|
||
│ ├── popup/ # Popup UI
|
||
│ │ ├── index.html
|
||
│ │ ├── index.ts
|
||
│ │ └── style.css
|
||
│ └── shared/ # Common types + utilities
|
||
│ ├── types.ts
|
||
│ └── logger.ts
|
||
├── icons/
|
||
├── dist/
|
||
├── manifest.json
|
||
├── vite.config.ts
|
||
├── tsconfig.json
|
||
└── package.json
|
||
```
|
||
|
||
---
|
||
|
||
## Topic: User-facing flow
|
||
|
||
- Source: `Тз расширение фаза1.md` §5; `README.md` §"Использование"
|
||
- Notes:
|
||
1. First popup open requests screen-recording permission (mandatory).
|
||
2. Recording starts automatically once granted.
|
||
3. To file an error report:
|
||
- Click the extension icon.
|
||
- Click "Сохранить отчёт об ошибке".
|
||
- Archive lands in the user's "Downloads" folder automatically.
|
||
4. Button state cycle: `idle` → "Сохраняю..." → "Готово! ✓" → `idle`
|
||
(3 s revert).
|
||
|
||
---
|
||
|
||
## Topic: Licensing and support
|
||
|
||
- Source: `README.md` §"Лицензия", §"Контакты"
|
||
- Notes:
|
||
- License: **MIT**
|
||
- Support contact: addressed to "support" (no concrete channel listed in
|
||
DOC).
|
||
|
||
---
|
||
|
||
## Topic: Russian-source provenance
|
||
|
||
- Source: both documents (`Тз расширение фаза1.md`, `README.md`)
|
||
- Notes: Both source documents are authored in Russian. UI strings ("Сохранить
|
||
отчёт об ошибке", "Последние 30 сек видео + 10 мин лога", "Сохраняю...",
|
||
"Готово! ✓") are part of the user-facing contract and MUST be preserved
|
||
verbatim. Section identifiers and technical names use Latin script.
|