307 lines
38 KiB
Plaintext
307 lines
38 KiB
Plaintext
test_async_protocol_check_retains_explicit_approval_request (test_desktop_review_visibility.DesktopReviewTest.test_async_protocol_check_retains_explicit_approval_request) ... ok
|
|
test_explicit_approval_reaches_thread_with_exact_key_and_refreshes (test_desktop_review_visibility.DesktopReviewTest.test_explicit_approval_reaches_thread_with_exact_key_and_refreshes) ... ok
|
|
test_human_filter_includes_unknown_receipt_and_no_empty_send (test_desktop_review_visibility.DesktopReviewTest.test_human_filter_includes_unknown_receipt_and_no_empty_send) ... ok
|
|
test_legacy_receipt_states_are_visible_but_not_sendable (test_desktop_review_visibility.DesktopReviewTest.test_legacy_receipt_states_are_visible_but_not_sendable) ... ok
|
|
test_real_queue_snapshot_renders_review_and_handoff_in_embedded_browser (test_desktop_review_visibility.DesktopReviewTest.test_real_queue_snapshot_renders_review_and_handoff_in_embedded_browser) ... ok
|
|
test_review_counts_remain_visible_under_an_unrelated_filter (test_desktop_review_visibility.DesktopReviewTest.test_review_counts_remain_visible_under_an_unrelated_filter) ... ok
|
|
test_review_filter_surfaces_protocol_draft_and_reason (test_desktop_review_visibility.DesktopReviewTest.test_review_filter_surfaces_protocol_draft_and_reason) ... ok
|
|
test_stale_snapshot_requires_explicit_confirmation_before_backend_handoff (test_desktop_review_visibility.DesktopReviewTest.test_stale_snapshot_requires_explicit_confirmation_before_backend_handoff) ... ok
|
|
test_stopped_handoff_uses_offline_resolution_and_preserves_seen (test_desktop_review_visibility.DesktopReviewTest.test_stopped_handoff_uses_offline_resolution_and_preserves_seen) ... ok
|
|
test_unknown_receipt_handoff_requires_confirmation_and_never_calls_approve (test_desktop_review_visibility.DesktopReviewTest.test_unknown_receipt_handoff_requires_confirmation_and_never_calls_approve) ... ok
|
|
test_generation_failure_is_retryable_but_not_sendable (test_desktop_review_visibility.ReviewStateTest.test_generation_failure_is_retryable_but_not_sendable) ... ok
|
|
test_media_without_draft_cannot_be_approved (test_desktop_review_visibility.ReviewStateTest.test_media_without_draft_cannot_be_approved) ... ok
|
|
test_protocol_and_visual_reviews_have_the_same_action_contract (test_desktop_review_visibility.ReviewStateTest.test_protocol_and_visual_reviews_have_the_same_action_contract) ... ok
|
|
test_uncertain_delivery_cannot_be_approved_or_retried_even_with_stale_review_flag (test_desktop_review_visibility.ReviewStateTest.test_uncertain_delivery_cannot_be_approved_or_retried_even_with_stale_review_flag) ... ok
|
|
test_a_blank_name_leaves_the_current_one_alone (test_qt_console_bridge.ConsoleBridgeTest.test_a_blank_name_leaves_the_current_one_alone)
|
|
空名字是"没填",不是"改成空"——改成空会让提示词里出现一个没有名字的客服。 ... ok
|
|
test_a_failed_connection_says_why_in_the_log (test_qt_console_bridge.ConsoleBridgeTest.test_a_failed_connection_says_why_in_the_log)
|
|
失败必须留下原因。只说"连接失败"的话,人不知道是地址错了还是后台没起。 ... ok
|
|
test_an_over_long_agent_name_is_truncated (test_qt_console_bridge.ConsoleBridgeTest.test_an_over_long_agent_name_is_truncated)
|
|
昵称会拼进系统提示词,不能让它无限长。 ... ok
|
|
test_approve_task_reaches_the_host_with_the_exact_key (test_qt_console_bridge.ConsoleBridgeTest.test_approve_task_reaches_the_host_with_the_exact_key)
|
|
「通过并发送」必须真的连到后端。 ... ok
|
|
test_approving_a_task_that_left_the_queue_sends_nothing (test_qt_console_bridge.ConsoleBridgeTest.test_approving_a_task_that_left_the_queue_sends_nothing)
|
|
任务已经不在队列里就别再放行——否则可能把草稿发到别的会话去。 ... ok
|
|
test_archive_date_button_uses_real_business_filter (test_qt_console_bridge.ConsoleBridgeTest.test_archive_date_button_uses_real_business_filter) ... ok
|
|
test_archive_selection_only_commits_an_existing_visible_key (test_qt_console_bridge.ConsoleBridgeTest.test_archive_selection_only_commits_an_existing_visible_key) ... ok
|
|
test_auto_send_header_selects_auto_mode_before_starting (test_qt_console_bridge.ConsoleBridgeTest.test_auto_send_header_selects_auto_mode_before_starting) ... ok
|
|
test_canvas_uses_available_logical_space_without_design_minimum (test_qt_console_bridge.ConsoleBridgeTest.test_canvas_uses_available_logical_space_without_design_minimum) ... ok
|
|
test_connect_backend_forwards_the_url_to_the_host (test_qt_console_bridge.ConsoleBridgeTest.test_connect_backend_forwards_the_url_to_the_host)
|
|
控制台上填的后台地址要真的到得了后端。 ... ok
|
|
test_console_html_and_javascript_assets_are_packaged_together (test_qt_console_bridge.ConsoleBridgeTest.test_console_html_and_javascript_assets_are_packaged_together) ... ok
|
|
test_console_push_timer_coalesces_against_earliest_deadline (test_qt_console_bridge.ConsoleBridgeTest.test_console_push_timer_coalesces_against_earliest_deadline) ... ok
|
|
test_editable_fields_look_editable (test_qt_console_bridge.ConsoleBridgeTest.test_editable_fields_look_editable)
|
|
能改的地方要看得出来能改。 ... ok
|
|
test_every_html_navigation_schedules_authoritative_state (test_qt_console_bridge.ConsoleBridgeTest.test_every_html_navigation_schedules_authoritative_state) ... ok
|
|
test_every_save_button_gives_the_user_feedback (test_qt_console_bridge.ConsoleBridgeTest.test_every_save_button_gives_the_user_feedback)
|
|
点了保存必须看得见反馈。 ... ok
|
|
test_handoff_only_reports_tasks_the_backend_accepted (test_qt_console_bridge.ConsoleBridgeTest.test_handoff_only_reports_tasks_the_backend_accepted) ... ok
|
|
test_long_pages_scroll_without_shrinking_text (test_qt_console_bridge.ConsoleBridgeTest.test_long_pages_scroll_without_shrinking_text) ... ok
|
|
test_no_layout_container_keeps_a_hard_coded_height (test_qt_console_bridge.ConsoleBridgeTest.test_no_layout_container_keeps_a_hard_coded_height)
|
|
去掉滚动条之后,"装不下"不再表现为滚动条,而是内容画到别的面板身上。 ... ok
|
|
test_number_fields_tell_you_the_allowed_range (test_qt_console_bridge.ConsoleBridgeTest.test_number_fields_tell_you_the_allowed_range) ... ok
|
|
test_page_grids_use_proportional_columns (test_qt_console_bridge.ConsoleBridgeTest.test_page_grids_use_proportional_columns)
|
|
各栏必须按比例分配宽度。写死像素的话,舞台变宽它们也不会跟着变宽, ... ok
|
|
test_queue_actions_select_exact_key_before_forwarding (test_qt_console_bridge.ConsoleBridgeTest.test_queue_actions_select_exact_key_before_forwarding) ... ok
|
|
test_ready_state_delivery_updates_cache_only_after_emit (test_qt_console_bridge.ConsoleBridgeTest.test_ready_state_delivery_updates_cache_only_after_emit) ... ok
|
|
test_request_state_forces_webchannel_handshake_payload (test_qt_console_bridge.ConsoleBridgeTest.test_request_state_forces_webchannel_handshake_payload) ... ok
|
|
test_responsive_styles_are_bundled_after_reference_styles (test_qt_console_bridge.ConsoleBridgeTest.test_responsive_styles_are_bundled_after_reference_styles) ... ok
|
|
test_same_view_state_push_preserves_sidebar_and_main_dom_identity (test_qt_console_bridge.ConsoleBridgeTest.test_same_view_state_push_preserves_sidebar_and_main_dom_identity) ... ok
|
|
test_save_ai_only_applies_the_agent_name (test_qt_console_bridge.ConsoleBridgeTest.test_save_ai_only_applies_the_agent_name)
|
|
AI 设置页现在只有客服昵称是真正的本机设置。 ... ok
|
|
test_set_view_waits_for_loaded_document_and_replays_once (test_qt_console_bridge.ConsoleBridgeTest.test_set_view_waits_for_loaded_document_and_replays_once) ... ok
|
|
test_sidebar_orb_is_wired_to_the_listen_toggle (test_qt_console_bridge.ConsoleBridgeTest.test_sidebar_orb_is_wired_to_the_listen_toggle)
|
|
侧栏那颗球是用户最常点的开关,HTML 上必须真的绑着动作。 ... ok
|
|
test_stale_queue_key_never_mutates_previous_selection (test_qt_console_bridge.ConsoleBridgeTest.test_stale_queue_key_never_mutates_previous_selection) ... ok
|
|
test_state_is_not_cached_before_webchannel_handshake (test_qt_console_bridge.ConsoleBridgeTest.test_state_is_not_cached_before_webchannel_handshake) ... ok
|
|
test_the_console_script_handles_that_action (test_qt_console_bridge.ConsoleBridgeTest.test_the_console_script_handles_that_action) ... ok
|
|
test_the_feedback_helper_covers_pending_result_and_failure (test_qt_console_bridge.ConsoleBridgeTest.test_the_feedback_helper_covers_pending_result_and_failure)
|
|
反馈要三段齐全:立刻响应、真实结果、失败也要说清。 ... ok
|
|
test_the_save_slots_report_their_result_back (test_qt_console_bridge.ConsoleBridgeTest.test_the_save_slots_report_their_result_back)
|
|
Qt 侧的保存槽必须把结果回传,否则网页那边永远只能瞎猜。 ... ok
|
|
test_the_scale_never_depends_on_page_height_or_device_pixel_ratio (test_qt_console_bridge.ConsoleBridgeTest.test_the_scale_never_depends_on_page_height_or_device_pixel_ratio) ... ok
|
|
test_the_side_rail_height_does_not_follow_page_content (test_qt_console_bridge.ConsoleBridgeTest.test_the_side_rail_height_does_not_follow_page_content)
|
|
侧栏在每一页必须一样高。 ... ok
|
|
test_toggle_listen_starts_and_stops_the_host (test_qt_console_bridge.ConsoleBridgeTest.test_toggle_listen_starts_and_stops_the_host) ... ok
|
|
test_a_broken_recorder_never_stops_a_reply (test_queue_log.BotQueueRecordingTest.test_a_broken_recorder_never_stops_a_reply) ... ok
|
|
test_a_new_task_writes_one_enqueue_line (test_queue_log.BotQueueRecordingTest.test_a_new_task_writes_one_enqueue_line) ... ok
|
|
test_a_recorded_step_carries_the_session_id_the_ui_shows (test_queue_log.BotQueueRecordingTest.test_a_recorded_step_carries_the_session_id_the_ui_shows) ... ok
|
|
test_a_recorded_step_is_also_pushed_to_the_floating_capsule (test_queue_log.BotQueueRecordingTest.test_a_recorded_step_is_also_pushed_to_the_floating_capsule) ... ok
|
|
test_an_atomic_operation_is_visible_in_capsule_and_execution_table (test_queue_log.BotQueueRecordingTest.test_an_atomic_operation_is_visible_in_capsule_and_execution_table) ... ok
|
|
test_an_unreadable_nickname_is_never_stored_as_the_customer (test_queue_log.BotQueueRecordingTest.test_an_unreadable_nickname_is_never_stored_as_the_customer)
|
|
读不出昵称时 `_session_label` 返回「会话 xxxx」,那是占位不是人名。 ... ok
|
|
test_the_nickname_is_kept_on_the_task_for_later_steps (test_queue_log.BotQueueRecordingTest.test_the_nickname_is_kept_on_the_task_for_later_steps)
|
|
后面几步都要报出人名,不能每一步再去 OCR 一遍。 ... ok
|
|
test_the_nickname_survives_a_restart (test_queue_log.BotQueueRecordingTest.test_the_nickname_survives_a_restart)
|
|
重启后队列界面还要认得出这些任务是谁的。 ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。
|
|
ok
|
|
test_the_same_task_touched_again_does_not_queue_twice (test_queue_log.BotQueueRecordingTest.test_the_same_task_touched_again_does_not_queue_twice)
|
|
一轮里同一个会话会被反复标记,每次都记一条"入队"就没法看了。 ... ok
|
|
test_visual_model_is_named_explicitly_in_capsule_progress (test_queue_log.BotQueueRecordingTest.test_visual_model_is_named_explicitly_in_capsule_progress) ... ok
|
|
test_a_model_that_already_explained_itself_is_not_repeated (test_queue_log.GenerationGapTest.test_a_model_that_already_explained_itself_is_not_repeated) ... ok
|
|
test_a_recorded_reply_also_counts_as_the_model_speaking_up (test_queue_log.GenerationGapTest.test_a_recorded_reply_also_counts_as_the_model_speaking_up) ... ok
|
|
test_a_silent_model_still_leaves_a_line_in_the_record (test_queue_log.GenerationGapTest.test_a_silent_model_still_leaves_a_line_in_the_record) ... ok
|
|
test_a_plain_question_is_quoted_in_the_record (test_queue_log.ModelCallRecordTest.test_a_plain_question_is_quoted_in_the_record) ... ok
|
|
test_a_screenshot_only_round_is_described_rather_than_left_blank (test_queue_log.ModelCallRecordTest.test_a_screenshot_only_round_is_described_rather_than_left_blank) ... ok
|
|
test_a_wall_of_text_is_trimmed_to_stay_readable (test_queue_log.ModelCallRecordTest.test_a_wall_of_text_is_trimmed_to_stay_readable) ... ok
|
|
test_an_image_message_says_so_instead_of_looking_empty (test_queue_log.ModelCallRecordTest.test_an_image_message_says_so_instead_of_looking_empty) ... ok
|
|
test_an_image_with_a_caption_keeps_both (test_queue_log.ModelCallRecordTest.test_an_image_with_a_caption_keeps_both) ... ok
|
|
test_line_breaks_never_break_the_table_row (test_queue_log.ModelCallRecordTest.test_line_breaks_never_break_the_table_row) ... ok
|
|
test_several_media_kinds_are_all_named (test_queue_log.ModelCallRecordTest.test_several_media_kinds_are_all_named) ... ok
|
|
test_a_corrupted_history_starts_over_instead_of_crashing (test_queue_log.QueueLogStoreTest.test_a_corrupted_history_starts_over_instead_of_crashing)
|
|
记录只是排查线索,它坏掉不能反过来让界面和机器人一起崩。 ... ok
|
|
test_a_failed_write_reports_failure_instead_of_raising (test_queue_log.QueueLogStoreTest.test_a_failed_write_reports_failure_instead_of_raising) ... ok
|
|
test_a_finished_write_leaves_no_temp_files_behind (test_queue_log.QueueLogStoreTest.test_a_finished_write_leaves_no_temp_files_behind)
|
|
写入走临时文件加原子替换,界面才不会读到写了一半的 JSON。 ... ok
|
|
test_a_long_running_bot_never_grows_the_file_without_bound (test_queue_log.QueueLogStoreTest.test_a_long_running_bot_never_grows_the_file_without_bound) ... ok
|
|
test_a_novel_length_reply_does_not_bloat_every_row (test_queue_log.QueueLogStoreTest.test_a_novel_length_reply_does_not_bloat_every_row) ... ok
|
|
test_a_recorded_step_comes_back_with_everything_it_was_given (test_queue_log.QueueLogStoreTest.test_a_recorded_step_comes_back_with_everything_it_was_given) ... ok
|
|
test_asking_for_fewer_steps_gives_exactly_that_many (test_queue_log.QueueLogStoreTest.test_asking_for_fewer_steps_gives_exactly_that_many) ... ok
|
|
test_clearing_wipes_the_history_and_survives_a_reread (test_queue_log.QueueLogStoreTest.test_clearing_wipes_the_history_and_survives_a_reread) ... ok
|
|
test_junk_rows_are_dropped_rather_than_handed_to_the_table (test_queue_log.QueueLogStoreTest.test_junk_rows_are_dropped_rather_than_handed_to_the_table) ... ok
|
|
test_reading_an_empty_history_is_not_an_error (test_queue_log.QueueLogStoreTest.test_reading_an_empty_history_is_not_an_error) ... ok
|
|
test_the_newest_step_is_the_one_you_see_first (test_queue_log.QueueLogStoreTest.test_the_newest_step_is_the_one_you_see_first)
|
|
排查总是从"刚才发生了什么"开始,最新的必须在最上面。 ... ok
|
|
test_a_bare_task_still_gets_a_readable_status (test_queue_log.QueuePageReadingTest.test_a_bare_task_still_gets_a_readable_status) ... ok
|
|
test_a_batched_task_reads_as_generating (test_queue_log.QueuePageReadingTest.test_a_batched_task_reads_as_generating) ... ok
|
|
test_a_fresh_unread_task_reads_as_waiting (test_queue_log.QueuePageReadingTest.test_a_fresh_unread_task_reads_as_waiting) ... ok
|
|
test_a_long_wait_is_shown_in_hours_so_a_stuck_task_stands_out (test_queue_log.QueuePageReadingTest.test_a_long_wait_is_shown_in_hours_so_a_stuck_task_stands_out) ... ok
|
|
test_a_short_wait_is_shown_in_seconds (test_queue_log.QueuePageReadingTest.test_a_short_wait_is_shown_in_seconds) ... ok
|
|
test_a_task_being_sent_reads_as_sending_not_as_queued (test_queue_log.QueuePageReadingTest.test_a_task_being_sent_reads_as_sending_not_as_queued) ... ok
|
|
test_a_task_whose_receipt_is_unconfirmed_says_so (test_queue_log.QueuePageReadingTest.test_a_task_whose_receipt_is_unconfirmed_says_so)
|
|
这个状态正是"回了没回"说不清的时候,界面上必须看得见。 ... ok
|
|
test_a_task_with_no_timestamp_never_shows_a_bogus_wait (test_queue_log.QueuePageReadingTest.test_a_task_with_no_timestamp_never_shows_a_bogus_wait) ... ok
|
|
test_a_missing_pending_file_is_not_reported_as_an_error (test_queue_log.QueuePageTableTest.test_a_missing_pending_file_is_not_reported_as_an_error)
|
|
第一次启动时这个文件根本不存在,不该在日志里吓人一跳。 ... ok
|
|
test_a_queue_that_drains_replaces_its_rows_with_the_empty_notice (test_queue_log.QueuePageTableTest.test_a_queue_that_drains_replaces_its_rows_with_the_empty_notice)
|
|
刷新是原地重画的,上一轮的行不清干净就会留在屏幕上骗人。 ... ok
|
|
test_a_running_listener_does_not_nag (test_queue_log.QueuePageTableTest.test_a_running_listener_does_not_nag) ... ok
|
|
test_a_stopped_listener_keeps_the_explanation_without_opening_a_window (test_queue_log.QueuePageTableTest.test_a_stopped_listener_keeps_the_explanation_without_opening_a_window)
|
|
停着的时候等待时长照涨,不说明白会被当成机器人卡死了。 ... ok
|
|
test_a_task_awaiting_proof_is_coloured_apart_from_a_real_failure (test_queue_log.QueuePageTableTest.test_a_task_awaiting_proof_is_coloured_apart_from_a_real_failure) ... ok
|
|
test_a_task_whose_nickname_never_read_still_takes_a_visible_slot (test_queue_log.QueuePageTableTest.test_a_task_whose_nickname_never_read_still_takes_a_visible_slot)
|
|
认不出是谁也得让人看见它在排队,否则就成了看不见的积压。 ... ok
|
|
test_a_task_with_a_junk_timestamp_still_appears_in_the_queue (test_queue_log.QueuePageTableTest.test_a_task_with_a_junk_timestamp_still_appears_in_the_queue)
|
|
一条坏数据不能让整页读不出来——那正是最需要看它的时候。 ... ok
|
|
test_an_empty_history_says_so_too (test_queue_log.QueuePageTableTest.test_an_empty_history_says_so_too) ... ok
|
|
test_an_empty_queue_never_shows_the_stopped_warning (test_queue_log.QueuePageTableTest.test_an_empty_queue_never_shows_the_stopped_warning) ... ok
|
|
test_an_empty_queue_says_so_instead_of_showing_a_blank_slab (test_queue_log.QueuePageTableTest.test_an_empty_queue_says_so_instead_of_showing_a_blank_slab) ... ok
|
|
test_awaiting_proof_is_not_counted_as_a_failure_today (test_queue_log.QueuePageTableTest.test_awaiting_proof_is_not_counted_as_a_failure_today)
|
|
把"多半已经发出去了"记成失败,会让人以为出了大问题。 ... ok
|
|
test_the_queue_is_shown_oldest_first_so_nobody_is_starved (test_queue_log.QueuePageTableTest.test_the_queue_is_shown_oldest_first_so_nobody_is_starved)
|
|
界面上的顺序就是实际服务顺序,先来的必须排在前面。 ... ok
|
|
test_todays_sends_and_failures_are_counted_from_the_history (test_queue_log.QueuePageTableTest.test_todays_sends_and_failures_are_counted_from_the_history) ... ok
|
|
test_yesterdays_sends_do_not_inflate_todays_count (test_queue_log.QueuePageTableTest.test_yesterdays_sends_do_not_inflate_todays_count) ... ok
|
|
test_a_new_send_forgets_the_previous_rounds_reason (test_queue_log.SendFailureReasonTest.test_a_new_send_forgets_the_previous_rounds_reason)
|
|
上一轮的原因留到这一轮,会把人引到早就修好的问题上。 ... ok
|
|
test_a_pressed_enter_awaiting_proof_is_not_branded_a_failure (test_queue_log.SendFailureReasonTest.test_a_pressed_enter_awaiting_proof_is_not_branded_a_failure)
|
|
回车已经按下去,只是还没认出那条消息——多半其实发出去了。 ... ok
|
|
test_a_successful_send_records_what_was_actually_said (test_queue_log.SendFailureReasonTest.test_a_successful_send_records_what_was_actually_said) ... ok
|
|
test_an_unnamed_reason_still_produces_a_usable_line (test_queue_log.SendFailureReasonTest.test_an_unnamed_reason_still_produces_a_usable_line) ... ok
|
|
test_every_gate_reason_is_human_readable_not_a_code (test_queue_log.SendFailureReasonTest.test_every_gate_reason_is_human_readable_not_a_code) ... ok
|
|
test_the_gate_that_blocked_the_send_is_named_in_the_record (test_queue_log.SendFailureReasonTest.test_the_gate_that_blocked_the_send_is_named_in_the_record) ... ok
|
|
test_a_clock_rollback_never_deletes_a_fresh_log (test_runtime_settings.LogRetentionTest.test_a_clock_rollback_never_deletes_a_fresh_log) ... ok
|
|
test_a_shorter_window_deletes_more (test_runtime_settings.LogRetentionTest.test_a_shorter_window_deletes_more) ... ok
|
|
test_logs_older_than_the_retention_window_are_deleted (test_runtime_settings.LogRetentionTest.test_logs_older_than_the_retention_window_are_deleted) ... ok
|
|
test_out_of_range_values_fall_back_to_the_documented_defaults (test_runtime_settings.LogRetentionTest.test_out_of_range_values_fall_back_to_the_documented_defaults) ... ok
|
|
test_the_file_count_cap_still_applies (test_runtime_settings.LogRetentionTest.test_the_file_count_cap_still_applies) ... ok
|
|
test_unreadable_directory_never_breaks_startup (test_runtime_settings.LogRetentionTest.test_unreadable_directory_never_breaks_startup) ... ok
|
|
test_atomic_operation_progress_includes_phase_step_detail_and_customer (test_runtime_settings.RuntimeSettingsTest.test_atomic_operation_progress_includes_phase_step_detail_and_customer) ... ok
|
|
test_bot_uses_instance_batch_window_when_call_has_no_override (test_runtime_settings.RuntimeSettingsTest.test_bot_uses_instance_batch_window_when_call_has_no_override) ... ok
|
|
test_classic_capsule_renders_each_progress_message_as_a_numbered_step (test_runtime_settings.RuntimeSettingsTest.test_classic_capsule_renders_each_progress_message_as_a_numbered_step) ... ok
|
|
test_classic_queue_consumes_the_runtime_progress_channel (test_runtime_settings.RuntimeSettingsTest.test_classic_queue_consumes_the_runtime_progress_channel) ... ok
|
|
test_classic_settings_save_persists_and_updates_live_thread (test_runtime_settings.RuntimeSettingsTest.test_classic_settings_save_persists_and_updates_live_thread) ... ok
|
|
test_customer_chat_body_is_not_mirrored_into_floating_capsule (test_runtime_settings.RuntimeSettingsTest.test_customer_chat_body_is_not_mirrored_into_floating_capsule) ... ok
|
|
test_invalid_saved_batch_window_falls_back_to_twenty_seconds (test_runtime_settings.RuntimeSettingsTest.test_invalid_saved_batch_window_falls_back_to_twenty_seconds) ... ok
|
|
test_invalid_saved_send_delay_falls_back_to_one_second (test_runtime_settings.RuntimeSettingsTest.test_invalid_saved_send_delay_falls_back_to_one_second) ... ok
|
|
test_invalid_send_mode_falls_back_to_automatic (test_runtime_settings.RuntimeSettingsTest.test_invalid_send_mode_falls_back_to_automatic) ... ok
|
|
test_legacy_settings_without_batch_window_keep_twenty_second_default (test_runtime_settings.RuntimeSettingsTest.test_legacy_settings_without_batch_window_keep_twenty_second_default) ... ok
|
|
test_manual_queue_delete_removes_only_selected_full_key_atomically (test_runtime_settings.RuntimeSettingsTest.test_manual_queue_delete_removes_only_selected_full_key_atomically) ... ok
|
|
test_manual_retry_only_requeues_retry_wait_tasks (test_runtime_settings.RuntimeSettingsTest.test_manual_retry_only_requeues_retry_wait_tasks) ... ok
|
|
test_message_copy_retries_when_wecom_writes_clipboard_late (test_runtime_settings.RuntimeSettingsTest.test_message_copy_retries_when_wecom_writes_clipboard_late) ... ok
|
|
test_retry_request_queues_until_bot_startup_finishes (test_runtime_settings.RuntimeSettingsTest.test_retry_request_queues_until_bot_startup_finishes) ... ok
|
|
test_review_pending_state_survives_restart (test_runtime_settings.RuntimeSettingsTest.test_review_pending_state_survives_restart) ... [待回复恢复] 已从磁盘恢复 1 个未完成任务。
|
|
ok
|
|
test_runtime_thread_syncs_updated_batch_window_before_next_poll (test_runtime_settings.RuntimeSettingsTest.test_runtime_thread_syncs_updated_batch_window_before_next_poll) ... [引擎B] 数据直读检测已启动
|
|
[+] 窗口激活模式已开启:企业微信未显示时会自动还原到前台
|
|
[i] 数据库新消息与未读标记共同触发回复任务,窗口异常时保留任务并重试
|
|
[+] 人机共存已开启:鼠标静止 5 秒后才自动操作
|
|
[+] 连续消息合并等待:7 秒
|
|
[+] 发送前等待:1.5 秒
|
|
[+] 发送模式:人工审核草稿(AI 只把回复填进输入框,不会自动按回车;需要自动发送请在设置里切到“自动发送”)
|
|
[引擎B] DB 直读失败: 数据库正在初始化或刷新,暂用备用读取,备用检测继续运行
|
|
ok
|
|
test_send_delay_wait_is_independent_and_interruptible (test_runtime_settings.RuntimeSettingsTest.test_send_delay_wait_is_independent_and_interruptible) ... ok
|
|
test_tagged_low_level_logs_are_mirrored_to_capsule_progress (test_runtime_settings.RuntimeSettingsTest.test_tagged_low_level_logs_are_mirrored_to_capsule_progress) ... ok
|
|
test_actual_web_page_protocol_state_buttons_and_visual_return (test_protocol_features.ProtocolGuiTest.test_actual_web_page_protocol_state_buttons_and_visual_return) ... ok
|
|
test_detection_state_keeps_binary_paths_out_of_web_payload (test_protocol_features.ProtocolGuiTest.test_detection_state_keeps_binary_paths_out_of_web_payload) ... ok
|
|
test_probe_worker_coalesces_clicks_and_delivers_failures (test_protocol_features.ProtocolGuiTest.test_probe_worker_coalesces_clicks_and_delivers_failures) ... ok
|
|
test_qt_and_classic_keep_protocol_even_when_other_settings_are_corrupt (test_protocol_features.ProtocolGuiTest.test_qt_and_classic_keep_protocol_even_when_other_settings_are_corrupt) ... ok
|
|
test_qt_persists_transport_and_restores_memory_after_disk_failure (test_protocol_features.ProtocolGuiTest.test_qt_persists_transport_and_restores_memory_after_disk_failure) ... ok
|
|
test_qt_protocol_start_passes_transport_to_background_thread (test_protocol_features.ProtocolGuiTest.test_qt_protocol_start_passes_transport_to_background_thread) ... ok
|
|
test_transport_change_is_saved_and_rejected_while_running (test_protocol_features.ProtocolGuiTest.test_transport_change_is_saved_and_rejected_while_running) ... ok
|
|
test_duplicate_names_and_server_ids_remain_isolated_by_exact_account_conversation (test_protocol_features.ProtocolIdContextTest.test_duplicate_names_and_server_ids_remain_isolated_by_exact_account_conversation) ... ok
|
|
test_missing_account_unknown_conversation_and_group_never_guess (test_protocol_features.ProtocolIdContextTest.test_missing_account_unknown_conversation_and_group_never_guess) ... ok
|
|
test_atomic_export_does_not_destroy_existing_report_on_failure (test_protocol_features.ProtocolProbeTest.test_atomic_export_does_not_destroy_existing_report_on_failure) ... ok
|
|
test_installed_client_and_bundled_sdk_never_imply_send_or_login (test_protocol_features.ProtocolProbeTest.test_installed_client_and_bundled_sdk_never_imply_send_or_login) ... ok
|
|
test_no_client_and_inaccessible_client (test_protocol_features.ProtocolProbeTest.test_no_client_and_inaccessible_client) ... ok
|
|
test_pe_architecture_and_corrupt_header (test_protocol_features.ProtocolProbeTest.test_pe_architecture_and_corrupt_header) ... ok
|
|
test_database_failure_is_propagated_and_request_identity_includes_limit (test_protocol_features.ProtocolRoutingTest.test_database_failure_is_propagated_and_request_identity_includes_limit) ... ok
|
|
test_invalid_explicit_transport_never_defaults_to_visual (test_protocol_features.ProtocolRoutingTest.test_invalid_explicit_transport_never_defaults_to_visual) ... ok
|
|
test_protocol_start_never_constructs_visual_sender_even_with_true_flag (test_protocol_features.ProtocolRoutingTest.test_protocol_start_never_constructs_visual_sender_even_with_true_flag) ... ok
|
|
test_active_send_and_other_account_stay_protected (test_review_handoff.ProtocolHandoffTests.test_active_send_and_other_account_stay_protected) ... ok
|
|
test_explicit_takeover_releases_pause_without_send_or_receipt_change (test_review_handoff.ProtocolHandoffTests.test_explicit_takeover_releases_pause_without_send_or_receipt_change) ... ok
|
|
test_failed_send_can_be_taken_over_without_retry (test_review_handoff.ProtocolHandoffTests.test_failed_send_can_be_taken_over_without_retry) ... ok
|
|
test_other_uncertain_tasks_keep_pause (test_review_handoff.ProtocolHandoffTests.test_other_uncertain_tasks_keep_pause) ... ok
|
|
test_handoff_during_startup_keeps_takeover_semantics (test_review_handoff.RuntimeHandoffTests.test_handoff_during_startup_keeps_takeover_semantics) ... ok
|
|
test_live_protocol_takeover_uses_distinct_engine_action (test_review_handoff.RuntimeHandoffTests.test_live_protocol_takeover_uses_distinct_engine_action) ... ok
|
|
test_offline_takeover_preserves_dedup_and_does_not_claim_delivery (test_review_handoff.RuntimeHandoffTests.test_offline_takeover_preserves_dedup_and_does_not_claim_delivery) ... ok
|
|
test_visual_engine_falls_back_to_guarded_cancellation (test_review_handoff.RuntimeHandoffTests.test_visual_engine_falls_back_to_guarded_cancellation) ... ok
|
|
test_foreign_account_task_cannot_be_approved_deleted_or_retried (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_foreign_account_task_cannot_be_approved_deleted_or_retried) ... ok
|
|
test_high_risk_reason_available_in_automatic_mode (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_high_risk_reason_available_in_automatic_mode) ... ok
|
|
test_media_batch_is_visible_manual_work_without_approvable_draft (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_media_batch_is_visible_manual_work_without_approvable_draft) ... ok
|
|
test_next_valid_batch_discards_old_manual_requirement (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_next_valid_batch_discards_old_manual_requirement) ... ok
|
|
test_old_saved_review_and_manual_tasks_restore_metadata_only (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_old_saved_review_and_manual_tasks_restore_metadata_only) ... ok
|
|
test_overlong_batch_cannot_be_approved_as_a_draft (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_overlong_batch_cannot_be_approved_as_a_draft) ... ok
|
|
test_retry_clears_old_metadata_then_rechecks_media_without_sending (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_retry_clears_old_metadata_then_rechecks_media_without_sending) ... ok
|
|
test_review_draft_reason_persists_then_explicit_approval_sends_once (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_review_draft_reason_persists_then_explicit_approval_sends_once) ... ok
|
|
test_unknown_receipt_cannot_be_approved_or_retried (test_protocol_review_visibility.ProtocolReviewVisibilityTests.test_unknown_receipt_cannot_be_approved_or_retried) ... ok
|
|
test_cancel_during_generation_does_not_send (test_native_protocol_pipeline.EngineTests.test_cancel_during_generation_does_not_send) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
ok
|
|
test_crash_in_sending_becomes_uncertain (test_native_protocol_pipeline.EngineTests.test_crash_in_sending_becomes_uncertain) ... [协议收信] 同名客户 · 已加入回复队列
|
|
ok
|
|
test_database_read_failure_never_announces_healthy_listener (test_native_protocol_pipeline.EngineTests.test_database_read_failure_never_announces_healthy_listener) ... ok
|
|
test_duplicate_event_only_sent_once (test_native_protocol_pipeline.EngineTests.test_duplicate_event_only_sent_once) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
ok
|
|
test_manual_reply_during_generation_cancels_send (test_native_protocol_pipeline.EngineTests.test_manual_reply_during_generation_cancels_send) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
ok
|
|
test_media_is_left_for_manual_handling (test_native_protocol_pipeline.EngineTests.test_media_is_left_for_manual_handling) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 当前消息需要人工处理;当前未回复消息包含图片、语音或其他非文本内容,协议版需人工处理
|
|
ok
|
|
test_memory_setting_preserves_only_unanswered_batch_when_disabled (test_native_protocol_pipeline.EngineTests.test_memory_setting_preserves_only_unanswered_batch_when_disabled) ... ok
|
|
test_model_control_tokens_are_not_sent (test_native_protocol_pipeline.EngineTests.test_model_control_tokens_are_not_sent) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 模型生成失败,可重试;模型未返回有效文本
|
|
ok
|
|
test_model_error_can_retry_before_send (test_native_protocol_pipeline.EngineTests.test_model_error_can_retry_before_send) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 模型生成失败,可重试;offline
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
ok
|
|
test_new_incoming_during_generation_discards_old_answer (test_native_protocol_pipeline.EngineTests.test_new_incoming_during_generation_discards_old_answer) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议收信] 同名客户 · 已加入回复队列
|
|
ok
|
|
test_new_message_invalidates_approved_draft (test_native_protocol_pipeline.EngineTests.test_new_message_invalidates_approved_draft) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 人工审核
|
|
[协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 人工审核
|
|
ok
|
|
test_only_current_account_processed (test_native_protocol_pipeline.EngineTests.test_only_current_account_processed) ... ok
|
|
test_pending_batch_window_is_honored (test_native_protocol_pipeline.EngineTests.test_pending_batch_window_is_honored) ... [协议收信] 同名客户 · 已加入回复队列
|
|
ok
|
|
test_pending_review_and_errors_do_not_show_idle (test_native_protocol_pipeline.EngineTests.test_pending_review_and_errors_do_not_show_idle) ... ok
|
|
test_progress_callback_failure_does_not_repeat_or_block_send (test_native_protocol_pipeline.EngineTests.test_progress_callback_failure_does_not_repeat_or_block_send) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
ok
|
|
test_progress_follows_receive_generate_send_then_waiting (test_native_protocol_pipeline.EngineTests.test_progress_follows_receive_generate_send_then_waiting) ... ok
|
|
test_ready_flag_alone_cannot_enable_transport (test_native_protocol_pipeline.EngineTests.test_ready_flag_alone_cannot_enable_transport) ... ok
|
|
test_restart_after_confirmed_journal_clears_pending_without_send (test_native_protocol_pipeline.EngineTests.test_restart_after_confirmed_journal_clears_pending_without_send) ... [协议收信] 同名客户 · 已加入回复队列
|
|
ok
|
|
test_review_requires_approval (test_native_protocol_pipeline.EngineTests.test_review_requires_approval) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 人工审核
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
ok
|
|
test_runtime_uses_protocol_engine_without_visual_construction (test_native_protocol_pipeline.EngineTests.test_runtime_uses_protocol_engine_without_visual_construction) ... ok
|
|
test_same_name_conversations_use_distinct_ids (test_native_protocol_pipeline.EngineTests.test_same_name_conversations_use_distinct_ids) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
ok
|
|
test_stop_during_generation_does_not_send (test_native_protocol_pipeline.EngineTests.test_stop_during_generation_does_not_send) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
ok
|
|
test_text_pipeline_with_native_receipt_and_no_feedback (test_native_protocol_pipeline.EngineTests.test_text_pipeline_with_native_receipt_and_no_feedback) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议发送成功] 同名客户 · 服务器消息 999
|
|
ok
|
|
test_uncertain_send_is_persisted_and_not_retried (test_native_protocol_pipeline.EngineTests.test_uncertain_send_is_persisted_and_not_retried) ... [协议收信] 同名客户 · 已加入回复队列
|
|
[协议处理] 同名客户 · 根据当前会话生成回复
|
|
[协议处理] 同名客户 · 原账号单聊发送
|
|
[协议处理] 同名客户 · 发送结果待人工核对,已暂停监听;timeout
|
|
ok
|
|
test_unknown_receipt_is_paused_without_healthy_poll_log (test_native_protocol_pipeline.EngineTests.test_unknown_receipt_is_paused_without_healthy_poll_log) ... ok
|
|
test_waiting_progress_and_periodic_read_confirmation_are_throttled (test_native_protocol_pipeline.EngineTests.test_waiting_progress_and_periodic_read_confirmation_are_throttled) ... ok
|
|
test_cancelled_before_send_does_not_consume_id (test_native_protocol_pipeline.JournalTests.test_cancelled_before_send_does_not_consume_id) ... ok
|
|
test_changed_payload_same_event_is_blocked (test_native_protocol_pipeline.JournalTests.test_changed_payload_same_event_is_blocked) ... ok
|
|
test_failure_does_not_automatically_retry (test_native_protocol_pipeline.JournalTests.test_failure_does_not_automatically_retry) ... ok
|
|
test_invalid_text_rejected (test_native_protocol_pipeline.JournalTests.test_invalid_text_rejected) ... ok
|
|
test_missing_conversation_blocks_send (test_native_protocol_pipeline.JournalTests.test_missing_conversation_blocks_send) ... ok
|
|
test_reopen_after_success_never_resends (test_native_protocol_pipeline.JournalTests.test_reopen_after_success_never_resends) ... ok
|
|
test_success_receipt_and_repeat_returns_saved_result (test_native_protocol_pipeline.JournalTests.test_success_receipt_and_repeat_returns_saved_result) ... ok
|
|
test_unknown_blocks_retry (test_native_protocol_pipeline.JournalTests.test_unknown_blocks_retry) ... ok
|
|
test_wrong_account_rejected_before_journaling_or_send (test_native_protocol_pipeline.JournalTests.test_wrong_account_rejected_before_journaling_or_send) ... ok
|
|
|
|
----------------------------------------------------------------------
|
|
Ran 201 tests in 7.466s
|
|
|
|
OK
|