feat: Wave 5 Python parity — outlook COM + time tracker
Outlook COM (`outlook_handlers.py`, agent):
- 4 handlers mirroring Rust pack: unread_count, latest, send_clipboard,
summarize_inbox. Uses `win32com.client` with lazy import so the module
loads even when pywin32 is missing — handlers degrade gracefully and
speak a "Outlook недоступен" reply.
- `requirements.txt`: pywin32>=305 (optional).
- 7 unit tests mock `_outlook_session` via unittest.mock.
Time tracker (`time_tracker_handlers.py`, agent):
- 5 handlers: start, stop, today, week, reset. JSON store at
`<here>/time_tracker.json`, atomic write-then-rename.
- Same shape as the Rust pack's `jarvis.state` blob: current_session_start
+ sessions[{start,end}]. Local-calendar today boundary.
- Full Russian pluralisation (час/часа/часов, минута/минуты/минут).
- 14 unit tests using the existing `isolated_state` fixture in conftest.py.
`extensions.py` + `main.py`: imports + 9 new proxy do_* functions + 9
new dispatch elifs. `commands.yaml`: 9 new entries.
Tests: 60 → 81 (+14 tracker + 7 outlook).
This commit is contained in:
parent
45d9425ed7
commit
5265cb0fbe
8 changed files with 971 additions and 0 deletions
|
|
@ -1549,3 +1549,78 @@ personality_tony_quote:
|
|||
- процитируй железного человека
|
||||
- цитата старка
|
||||
action: {type: personality_tony_quote}
|
||||
|
||||
tracker_start:
|
||||
phrases:
|
||||
- начни отсчёт
|
||||
- начни отсчет
|
||||
- запусти трекер
|
||||
- я начинаю работу
|
||||
- начало рабочего дня
|
||||
action: {type: tracker_start}
|
||||
|
||||
tracker_stop:
|
||||
phrases:
|
||||
- закончи отсчёт
|
||||
- закончи отсчет
|
||||
- останови трекер
|
||||
- я закончил работу
|
||||
- конец рабочего дня
|
||||
action: {type: tracker_stop}
|
||||
|
||||
tracker_today:
|
||||
phrases:
|
||||
- сколько я работаю сегодня
|
||||
- сколько отработал сегодня
|
||||
- сколько часов сегодня
|
||||
- сколько времени за сегодня
|
||||
action: {type: tracker_today}
|
||||
|
||||
tracker_week:
|
||||
phrases:
|
||||
- сколько на этой неделе
|
||||
- сколько отработал на неделе
|
||||
- часы за неделю
|
||||
- статистика за неделю
|
||||
action: {type: tracker_week}
|
||||
|
||||
tracker_reset:
|
||||
phrases:
|
||||
- сбрось трекер
|
||||
- обнули трекер
|
||||
- очисти трекер
|
||||
- сбрось отсчёт
|
||||
action: {type: tracker_reset}
|
||||
|
||||
outlook_unread_count:
|
||||
phrases:
|
||||
- сколько у меня непрочитанных писем
|
||||
- сколько непрочитанных писем
|
||||
- проверь почту
|
||||
- проверь outlook
|
||||
- сколько новых писем
|
||||
action: {type: outlook_unread_count}
|
||||
|
||||
outlook_latest:
|
||||
phrases:
|
||||
- прочитай последнее письмо
|
||||
- что в последнем письме
|
||||
- последнее письмо
|
||||
- покажи последнее письмо
|
||||
action: {type: outlook_latest}
|
||||
|
||||
outlook_send_clipboard:
|
||||
phrases:
|
||||
- отправь письмо
|
||||
- отправь почту
|
||||
- напиши письмо
|
||||
- отправь это
|
||||
action: {type: outlook_send_clipboard}
|
||||
|
||||
outlook_summarize_inbox:
|
||||
phrases:
|
||||
- коротко расскажи про инбокс
|
||||
- расскажи что в инбоксе
|
||||
- сделай саммари инбокса
|
||||
- что нового в почте
|
||||
action: {type: outlook_summarize_inbox}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue