Lane N3 (Co4E Studio) — dùng bộ workflow refactor-god-file, mỗi bước có characterization test trước khi tách, hậu kiểm ranh giới tầng sau mỗi bước: - skills_list_panel.py / agent_list_panel.py — 2 khu vực sidebar - co4e_canvas_widget.py + canvas_items.py + canvas_interaction_mixin.py — Co4ECanvas tách 3 file (vượt 400 dòng nếu đứng một mình) - node_property_panel.py + node_property_actions_mixin.py + step_config_section.py — StepConfigPanel, cùng lý do - co4e_run_control_widget.py — RunsPagePanel (trang Flow Status) - co4e_chat_view.py — ChatPanel + _ChatInput + helper autocomplete - palette_list.py — _PaletteList dời khỏi ui/co4e_tab.py, hết import ngược presentation -> ui (agent/skills panel giờ import top-level) ui/co4e_tab.py giảm 2089 -> 1878 dòng, chỉ còn phần wiring + business logic (Co4ERunManager/AgentWorker chưa đổi — nằm ngoài phạm vi này, xem docstring presentation/co4e/co4e_tab.py). ui/co4e_canvas.py và ui/co4e_config_panel.py còn lại là compat shim re-export, không đổi API cho bên gọi. Thêm tests/test_co4e_integration.py — dựng thật Co4ETab qua build_co4e_tab(), lái luồng qua nhiều panel trong cùng instance (thêm node, mở/gập chat, chuyển trang Flow Status rồi quay lại không mất state canvas) — bắt lỗi wiring xuyên-panel mà characterization test từng panel riêng không thấy được. Đã xác minh: pytest 348 passed/1 skipped, tools/check_co4e.py sạch, không file nào >400 dòng, domain/application không import PySide6, và so pixel before/after (git worktree tại HEAD cũ) ra 0/1.125.000 pixel khác biệt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
5858 lines
192 KiB
JSON
5858 lines
192 KiB
JSON
{
|
|
"generated_from_raw_symbol_count": 367,
|
|
"final_row_count": 363,
|
|
"expected_controls_checked": [
|
|
"wf_list",
|
|
"wf_edit_btn",
|
|
"wf_dup_btn",
|
|
"wf_del_btn",
|
|
"wf_runbg_btn",
|
|
"agent_list",
|
|
"ag_new_btn",
|
|
"ag_edit_btn",
|
|
"ag_del_btn",
|
|
"skill_list",
|
|
"sk_manage_btn",
|
|
"runs_btn",
|
|
"runs_back_btn",
|
|
"runs_table",
|
|
"runs_side_list",
|
|
"runs_more_btn",
|
|
"name_edit",
|
|
"add_step_btn",
|
|
"save_btn",
|
|
"save_tpl_btn",
|
|
"mode_combo",
|
|
"run_btn",
|
|
"run_stop_btn",
|
|
"run_rename_btn",
|
|
"run_del_btn",
|
|
"run_clear_btn",
|
|
"ws_folder_btn"
|
|
],
|
|
"expected_controls_ok": true,
|
|
"khac_tai_lieu_notes_found": 0,
|
|
"merged_duplicate_symbol_groups": [
|
|
"Co4ECanvas.dropEvent",
|
|
"Co4ETab._co4e_routed_provider",
|
|
"Co4ETab._config_expanded_w",
|
|
"Co4ETab._reload_sidebar"
|
|
],
|
|
"kept_separate_anomaly_symbols": [
|
|
"Co4ETab.showEvent"
|
|
],
|
|
"rows": [
|
|
{
|
|
"symbol": "Co4ETab._flow_outputs",
|
|
"kind": "attribute",
|
|
"line_display": "245",
|
|
"line_start": 245,
|
|
"line_end": 245,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "state per-flow outputs — ứng viên chuyển vào state machine thuần Python",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
29
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._outputs_for",
|
|
"kind": "method",
|
|
"line_display": "475-478",
|
|
"line_start": 475,
|
|
"line_end": 478,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "truy cập dict state per-flow outputs, thuần Python",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
54
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._duplicate_selected_workflow",
|
|
"kind": "method",
|
|
"line_display": "1239-1246",
|
|
"line_start": 1239,
|
|
"line_end": 1246,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "tương ứng _duplicate_flow() trong bảng plan.md dòng 616, nhưng tên hàm thực tế khác (_duplicate_selected_workflow). Gộp gọi service (co4e.duplicate_workflow, đĩa) với cập nhật UI (self._reload_sidebar(), self.status_message.emit) — cần tách; phần UI nên ở lại co4e_tab.py.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "ate_flow() trong bảng plan.md dòng 616, nhưng tên hàm thực tế khác (_duplicate_selected_workflow). Gộp gọi service (co4e.duplicate_workflow, đĩa)",
|
|
"merged_from_raw_indices": [
|
|
155
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._rename_workflow",
|
|
"kind": "method",
|
|
"line_display": "1273-1289",
|
|
"line_start": 1273,
|
|
"line_end": 1289,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "mở QInputDialog (cần Qt) rồi gọi co4e.save_workflow (đĩa), đồng bộ self._wf.name/self.name_edit nếu flow đang mở là flow bị đổi tên — gộp UI dialog + service + trạng thái chia sẻ self._wf trong 1 hàm, nên tách.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
157
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._delete_selected_workflow",
|
|
"kind": "method",
|
|
"line_display": "1291-1297",
|
|
"line_start": 1291,
|
|
"line_end": 1297,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "tương ứng _delete_flow() trong bảng plan.md dòng 616; gọi co4e.delete_workflow (đĩa).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
158
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._save",
|
|
"kind": "method",
|
|
"line_display": "1304-1309",
|
|
"line_start": 1304,
|
|
"line_end": 1309,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "gộp _sync_wf_from_canvas (đọc canvas UI), lưu đĩa (co4e.save_workflow), và cập nhật UI (_reload_sidebar, status_message) — cần tách phần service khỏi phần UI khi chuyển sang co4e_workflow_service.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
160
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._autosave",
|
|
"kind": "method",
|
|
"line_display": "1311-1314",
|
|
"line_start": 1311,
|
|
"line_end": 1314,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "gọi self._sync_wf_from_canvas() (cần canvas) rồi co4e.get_workflow/save_workflow (đĩa).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
161
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._skill_map",
|
|
"kind": "method",
|
|
"line_display": "1376-1382",
|
|
"line_start": 1376,
|
|
"line_end": 1382,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "application/workflows/co4e_workflow_service.py",
|
|
"note": "chuẩn bị nội dung skill (skills_mod.skill_prefix_for, đọc đĩa) để đưa vào lúc chạy flow/chat — không có trong bảng plan.md, tự xếp theo chức năng (dùng lúc run/build system prompt, không phải UI danh sách skill).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "ọc đĩa) để đưa vào lúc chạy flow/chat — không có trong bảng plan.md, tự xếp theo chức năng (dùng lúc run/build system prompt, không phải UI danh sá",
|
|
"merged_from_raw_indices": [
|
|
171
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.ag_new_btn",
|
|
"kind": "attribute",
|
|
"line_display": "550",
|
|
"line_start": 550,
|
|
"line_end": 550,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "hiện định nghĩa trực tiếp trong Co4ETab._build_sidebar — ứng viên chuyển sang agent_list_panel.py tương tự cách skills đã tách",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
69
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.agent_list",
|
|
"kind": "attribute",
|
|
"line_display": "558",
|
|
"line_start": 558,
|
|
"line_end": 558,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "cùng lý do với ag_new_btn",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
70
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.ag_edit_btn",
|
|
"kind": "attribute",
|
|
"line_display": "562",
|
|
"line_start": 562,
|
|
"line_end": 562,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "cùng lý do với ag_new_btn",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
71
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.ag_del_btn",
|
|
"kind": "attribute",
|
|
"line_display": "563",
|
|
"line_start": 563,
|
|
"line_end": 563,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "cùng lý do với ag_new_btn",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
72
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._new_agent",
|
|
"kind": "method",
|
|
"line_display": "1339-1340",
|
|
"line_start": 1339,
|
|
"line_end": 1340,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "tương ứng _create_agent() trong bảng plan.md dòng 620 (tên hàm thực tế là _new_agent).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
166
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._edit_agent",
|
|
"kind": "method",
|
|
"line_display": "1342-1350",
|
|
"line_start": 1342,
|
|
"line_end": 1350,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "khớp _edit_agent() dòng 620 plan.md; gọi co4e.list_custom_agents() (đĩa).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
167
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._edit_agent_dialog",
|
|
"kind": "method",
|
|
"line_display": "1352-1358",
|
|
"line_start": 1352,
|
|
"line_end": 1358,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "mở Co4EAgentDialog rồi co4e.save_custom_agent (đĩa) và self._reload_sidebar() — trạng thái chia sẻ, liên quan tới cắt ngang lát ở _reload_sidebar.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
168
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._delete_agent",
|
|
"kind": "method",
|
|
"line_display": "1360-1367",
|
|
"line_start": 1360,
|
|
"line_end": 1367,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/agent_list_panel.py",
|
|
"note": "khớp _delete_agent() dòng 620 plan.md; gọi co4e.delete_custom_agent (đĩa).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
169
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_status_color",
|
|
"kind": "function",
|
|
"line_display": "43-50",
|
|
"line_start": 43,
|
|
"line_end": 50,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
221
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem",
|
|
"kind": "class",
|
|
"line_display": "59-210",
|
|
"line_start": 59,
|
|
"line_end": 210,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "class nội bộ gắn chặt với Co4ECanvas qua self.canvas backreference — nên đi cùng file với Co4ECanvas",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
222
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.__init__",
|
|
"kind": "method",
|
|
"line_display": "62-72",
|
|
"line_start": 62,
|
|
"line_end": 72,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
223
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.node",
|
|
"kind": "attribute",
|
|
"line_display": "64",
|
|
"line_start": 64,
|
|
"line_end": 64,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "giữ tham chiếu domain Node — dữ liệu chia sẻ với core/co4e.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
224
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.canvas",
|
|
"kind": "attribute",
|
|
"line_display": "65",
|
|
"line_start": 65,
|
|
"line_end": 65,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "backreference tới Co4ECanvas cha — mọi event của _NodeItem đều gọi ngược lên canvas (add_step_below, begin_connect, delete_node, các signal) — điểm khớp nối chặt nhất trong file",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
225
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.status",
|
|
"kind": "attribute",
|
|
"line_display": "66",
|
|
"line_start": 66,
|
|
"line_end": 66,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
226
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem._porting",
|
|
"kind": "attribute",
|
|
"line_display": "67",
|
|
"line_start": 67,
|
|
"line_end": 67,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
227
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.boundingRect",
|
|
"kind": "method",
|
|
"line_display": "74-76",
|
|
"line_start": 74,
|
|
"line_end": 76,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "trả QRectF như kiểu giá trị, logic thuần",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
228
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem._card_rect",
|
|
"kind": "method",
|
|
"line_display": "78-79",
|
|
"line_start": 78,
|
|
"line_end": 79,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
229
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.paint",
|
|
"kind": "method",
|
|
"line_display": "81-139",
|
|
"line_start": 81,
|
|
"line_end": 139,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "vẽ toàn bộ card: nền, header stripe, label, badge role, preview instructions/sub-agents, footer model/skills, 2 port — gộp nhiều việc nhưng vẫn dưới 80 dòng nên chưa bắt buộc tách thêm",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
230
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem._in_out_port",
|
|
"kind": "method",
|
|
"line_display": "141-143",
|
|
"line_start": 141,
|
|
"line_end": 143,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "hình học thuần dùng QPointF như kiểu giá trị",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
231
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.itemChange",
|
|
"kind": "method",
|
|
"line_display": "145-156",
|
|
"line_start": 145,
|
|
"line_end": 156,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "ghi self.node.x/y rồi gọi self.canvas._reposition_edges() và emit self.canvas.graph_changed/node_selected — chạm trạng thái chia sẻ của canvas cha",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
232
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.hoverMoveEvent",
|
|
"kind": "method",
|
|
"line_display": "158-161",
|
|
"line_start": 158,
|
|
"line_end": 161,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
233
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.mousePressEvent",
|
|
"kind": "method",
|
|
"line_display": "163-174",
|
|
"line_start": 163,
|
|
"line_end": 174,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "đọc/ghi self.canvas._connect_from, gọi canvas._finish_connect/begin_port_drag — trạng thái connect-mode chia sẻ với Co4ECanvas",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
234
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.mouseMoveEvent",
|
|
"kind": "method",
|
|
"line_display": "176-181",
|
|
"line_start": 176,
|
|
"line_end": 181,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
235
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.mouseReleaseEvent",
|
|
"kind": "method",
|
|
"line_display": "183-189",
|
|
"line_start": 183,
|
|
"line_end": 189,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
236
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.mouseDoubleClickEvent",
|
|
"kind": "method",
|
|
"line_display": "191-193",
|
|
"line_start": 191,
|
|
"line_end": 193,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
237
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.contextMenuEvent",
|
|
"kind": "method",
|
|
"line_display": "195-207",
|
|
"line_start": 195,
|
|
"line_end": 207,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "gọi canvas.add_step_below/begin_connect/delete_node — trạng thái/hành vi thuộc canvas cha",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
238
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_NodeItem.center",
|
|
"kind": "method",
|
|
"line_display": "209-210",
|
|
"line_start": 209,
|
|
"line_end": 210,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "trả QPointF như kiểu giá trị",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
239
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem",
|
|
"kind": "class",
|
|
"line_display": "213-286",
|
|
"line_start": 213,
|
|
"line_end": 286,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "class nội bộ gắn chặt với Co4ECanvas qua self.canvas backreference",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
240
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.__init__",
|
|
"kind": "method",
|
|
"line_display": "214-225",
|
|
"line_start": 214,
|
|
"line_end": 225,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
241
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.edge",
|
|
"kind": "attribute",
|
|
"line_display": "216",
|
|
"line_start": 216,
|
|
"line_end": 216,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "tham chiếu domain Edge — chia sẻ với core/co4e.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
242
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.canvas",
|
|
"kind": "attribute",
|
|
"line_display": "217",
|
|
"line_start": 217,
|
|
"line_end": 217,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "backreference tới Co4ECanvas — contextMenuEvent gọi canvas.delete_edge",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
243
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem._dst",
|
|
"kind": "attribute",
|
|
"line_display": "218",
|
|
"line_start": 218,
|
|
"line_end": 218,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
244
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem._hover",
|
|
"kind": "attribute",
|
|
"line_display": "224",
|
|
"line_start": 224,
|
|
"line_end": 224,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
245
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem._apply_pen",
|
|
"kind": "method",
|
|
"line_display": "227-235",
|
|
"line_start": 227,
|
|
"line_end": 235,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
246
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.update_path",
|
|
"kind": "method",
|
|
"line_display": "237-239",
|
|
"line_start": 237,
|
|
"line_end": 239,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
247
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.boundingRect",
|
|
"kind": "method",
|
|
"line_display": "241-242",
|
|
"line_start": 241,
|
|
"line_end": 242,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "gọi super().boundingRect() phụ thuộc trạng thái path sống của item",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
248
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.shape",
|
|
"kind": "method",
|
|
"line_display": "244-249",
|
|
"line_start": 244,
|
|
"line_end": 249,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "dùng QPainterPathStroker trên self.path() sống của item",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
249
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.hoverEnterEvent",
|
|
"kind": "method",
|
|
"line_display": "251-255",
|
|
"line_start": 251,
|
|
"line_end": 255,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
250
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.hoverLeaveEvent",
|
|
"kind": "method",
|
|
"line_display": "257-261",
|
|
"line_start": 257,
|
|
"line_end": 261,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
251
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.paint",
|
|
"kind": "method",
|
|
"line_display": "263-279",
|
|
"line_start": 263,
|
|
"line_end": 279,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
252
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EdgeItem.contextMenuEvent",
|
|
"kind": "method",
|
|
"line_display": "281-286",
|
|
"line_start": 281,
|
|
"line_end": 286,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "gọi self.canvas.delete_edge(self.edge)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
253
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas",
|
|
"kind": "class",
|
|
"line_display": "289-700",
|
|
"line_start": 289,
|
|
"line_end": 700,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "cắt ngang lát — class tiếp tục sau dòng 700 (dropEvent chưa kết thúc, có thể còn method khác chưa đọc) — cần agent gộp đối chiếu với phần đọc dòng 701+",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
254
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.node_selected",
|
|
"kind": "attribute",
|
|
"line_display": "290",
|
|
"line_start": 290,
|
|
"line_end": 290,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "Signal được node_property_panel.py (và co4e_tab.py) nối vào để nạp node được chọn — điểm chia sẻ giữa canvas và property panel",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
255
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.node_activated",
|
|
"kind": "attribute",
|
|
"line_display": "291",
|
|
"line_start": 291,
|
|
"line_end": 291,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "Signal double-click, có thể được co4e_tab.py nối để mở panel chỉnh sửa — cần kiểm nơi consume",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
256
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.graph_changed",
|
|
"kind": "attribute",
|
|
"line_display": "292",
|
|
"line_start": 292,
|
|
"line_end": 292,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "Signal báo graph đổi (autosave) — nhiều khả năng được co4e_tab.py/co4e_workflow_service.py nối để lưu flow, trạng thái chia sẻ xuyên lớp application",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
257
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.__init__",
|
|
"kind": "method",
|
|
"line_display": "296-315",
|
|
"line_start": 296,
|
|
"line_end": 315,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
258
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._scene",
|
|
"kind": "attribute",
|
|
"line_display": "299",
|
|
"line_start": 299,
|
|
"line_end": 299,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
259
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._nodes",
|
|
"kind": "attribute",
|
|
"line_display": "305",
|
|
"line_start": 305,
|
|
"line_end": 305,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "dict id->_NodeItem — trạng thái trung tâm được đọc/ghi bởi gần như mọi method của Co4ECanvas (add/delete/relayout/zoom/status/route edges)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
260
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._edges",
|
|
"kind": "attribute",
|
|
"line_display": "306",
|
|
"line_start": 306,
|
|
"line_end": 306,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "list _EdgeItem — trạng thái trung tâm tương tự self._nodes",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
261
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._connect_from",
|
|
"kind": "attribute",
|
|
"line_display": "307",
|
|
"line_start": 307,
|
|
"line_end": 307,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "trạng thái connect-mode, cũng được _NodeItem.mousePressEvent đọc/ghi qua self.canvas",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
262
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._zoom",
|
|
"kind": "attribute",
|
|
"line_display": "308",
|
|
"line_start": 308,
|
|
"line_end": 308,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
263
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._panning",
|
|
"kind": "attribute",
|
|
"line_display": "309",
|
|
"line_start": 309,
|
|
"line_end": 309,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
264
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._pan_start",
|
|
"kind": "attribute",
|
|
"line_display": "310",
|
|
"line_start": 310,
|
|
"line_end": 310,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
265
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._overlay",
|
|
"kind": "attribute",
|
|
"line_display": "311",
|
|
"line_start": 311,
|
|
"line_end": 311,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "widget zoom/fit overlay được co4e_tab.py hoặc co4e_canvas_widget.py truyền vào qua add_overlay()",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
266
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._port_src",
|
|
"kind": "attribute",
|
|
"line_display": "313",
|
|
"line_start": 313,
|
|
"line_end": 313,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
267
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._port_src_pt",
|
|
"kind": "attribute",
|
|
"line_display": "314",
|
|
"line_start": 314,
|
|
"line_end": 314,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
268
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._temp_edge",
|
|
"kind": "attribute",
|
|
"line_display": "315",
|
|
"line_start": 315,
|
|
"line_end": 315,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
269
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.add_overlay",
|
|
"kind": "method",
|
|
"line_display": "318-323",
|
|
"line_start": 318,
|
|
"line_end": 323,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
270
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._place_overlay",
|
|
"kind": "method",
|
|
"line_display": "325-330",
|
|
"line_start": 325,
|
|
"line_end": 330,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
271
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.resizeEvent",
|
|
"kind": "method",
|
|
"line_display": "332-334",
|
|
"line_start": 332,
|
|
"line_end": 334,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
272
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.scrollContentsBy",
|
|
"kind": "method",
|
|
"line_display": "336-341",
|
|
"line_start": 336,
|
|
"line_end": 341,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
273
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.showEvent",
|
|
"kind": "method",
|
|
"line_display": "343-345",
|
|
"line_start": 343,
|
|
"line_end": 345,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
274
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.load",
|
|
"kind": "method",
|
|
"line_display": "348-362",
|
|
"line_start": 348,
|
|
"line_end": 362,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "reset toàn bộ self._nodes/self._edges/self._connect_from/self._port_src/self._temp_edge — điểm nạp lại state từ flow, được co4e_tab.py hoặc co4e_workflow_service.py gọi khi mở flow",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
275
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.nodes",
|
|
"kind": "method",
|
|
"line_display": "364-365",
|
|
"line_start": 364,
|
|
"line_end": 365,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "chỉ đọc .node từ self._nodes, không gọi API Qt trực tiếp",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
276
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.edges",
|
|
"kind": "method",
|
|
"line_display": "367-368",
|
|
"line_start": 367,
|
|
"line_end": 368,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
277
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.add_node",
|
|
"kind": "method",
|
|
"line_display": "371-382",
|
|
"line_start": 371,
|
|
"line_end": 382,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "ghi self._nodes, scene.addItem, emit graph_changed/node_selected — trạng thái chia sẻ với property panel qua node_selected",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
278
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.add_step_below",
|
|
"kind": "method",
|
|
"line_display": "384-390",
|
|
"line_start": 384,
|
|
"line_end": 390,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "orchestration thuần, ủy quyền cho add_node (bản thân không gọi trực tiếp API Qt)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
279
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._chain_tail",
|
|
"kind": "method",
|
|
"line_display": "392-396",
|
|
"line_start": 392,
|
|
"line_end": 396,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
280
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.add_palette_step",
|
|
"kind": "method",
|
|
"line_display": "398-400",
|
|
"line_start": 398,
|
|
"line_end": 400,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
281
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.begin_connect",
|
|
"kind": "method",
|
|
"line_display": "402-403",
|
|
"line_start": 402,
|
|
"line_end": 403,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
282
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._finish_connect",
|
|
"kind": "method",
|
|
"line_display": "405-409",
|
|
"line_start": 405,
|
|
"line_end": 409,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
283
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.begin_port_drag",
|
|
"kind": "method",
|
|
"line_display": "412-419",
|
|
"line_start": 412,
|
|
"line_end": 419,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
284
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.update_port_drag",
|
|
"kind": "method",
|
|
"line_display": "421-424",
|
|
"line_start": 421,
|
|
"line_end": 424,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
285
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.finish_port_drag",
|
|
"kind": "method",
|
|
"line_display": "426-435",
|
|
"line_start": 426,
|
|
"line_end": 435,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
286
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._node_at",
|
|
"kind": "method",
|
|
"line_display": "437-441",
|
|
"line_start": 437,
|
|
"line_end": 441,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "dùng self._scene.items(scene_pt) — cần scene đang sống",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
287
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._make_edge",
|
|
"kind": "method",
|
|
"line_display": "443-451",
|
|
"line_start": 443,
|
|
"line_end": 451,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
288
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._add_edge_item",
|
|
"kind": "method",
|
|
"line_display": "453-456",
|
|
"line_start": 453,
|
|
"line_end": 456,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
289
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.delete_edge",
|
|
"kind": "method",
|
|
"line_display": "458-463",
|
|
"line_start": 458,
|
|
"line_end": 463,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
290
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.delete_node",
|
|
"kind": "method",
|
|
"line_display": "465-475",
|
|
"line_start": 465,
|
|
"line_end": 475,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
291
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.delete_selected",
|
|
"kind": "method",
|
|
"line_display": "477-481",
|
|
"line_start": 477,
|
|
"line_end": 481,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
292
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._zoom_by",
|
|
"kind": "method",
|
|
"line_display": "484-495",
|
|
"line_start": 484,
|
|
"line_end": 495,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
293
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.zoom_in",
|
|
"kind": "method",
|
|
"line_display": "497-498",
|
|
"line_start": 497,
|
|
"line_end": 498,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
294
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.zoom_out",
|
|
"kind": "method",
|
|
"line_display": "500-501",
|
|
"line_start": 500,
|
|
"line_end": 501,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
295
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.reset_zoom",
|
|
"kind": "method",
|
|
"line_display": "503-505",
|
|
"line_start": 503,
|
|
"line_end": 505,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
296
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.wheelEvent",
|
|
"kind": "method",
|
|
"line_display": "507-519",
|
|
"line_start": 507,
|
|
"line_end": 519,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
297
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.mousePressEvent",
|
|
"kind": "method",
|
|
"line_display": "522-529",
|
|
"line_start": 522,
|
|
"line_end": 529,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "trùng tên với _NodeItem.mousePressEvent nhưng là override của Co4ECanvas (pan chuột giữa) — đừng nhầm khi gộp map",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
298
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.mouseMoveEvent",
|
|
"kind": "method",
|
|
"line_display": "531-540",
|
|
"line_start": 531,
|
|
"line_end": 540,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
299
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.mouseReleaseEvent",
|
|
"kind": "method",
|
|
"line_display": "542-548",
|
|
"line_start": 542,
|
|
"line_end": 548,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
300
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.fit_view",
|
|
"kind": "method",
|
|
"line_display": "550-558",
|
|
"line_start": 550,
|
|
"line_end": 558,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
301
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.relayout",
|
|
"kind": "method",
|
|
"line_display": "560-578",
|
|
"line_start": 560,
|
|
"line_end": 578,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "phần tính waves/cols (compute_waves, defaultdict) là logic thuần, phần item.setPos() cần scene sống — có thể tách hàm tính toạ độ ra khỏi phần apply nếu muốn test thuần Python",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
302
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.relayout_if_vertical",
|
|
"kind": "method",
|
|
"line_display": "580-589",
|
|
"line_start": 580,
|
|
"line_end": 589,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "bản thân chỉ ra quyết định thuần dựa trên node.x, việc chạm Qt nằm trong relayout() được gọi",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
303
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.add_workflow",
|
|
"kind": "method",
|
|
"line_display": "591-610",
|
|
"line_start": 591,
|
|
"line_end": 610,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
304
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.update_node_status",
|
|
"kind": "method",
|
|
"line_display": "612-616",
|
|
"line_start": 612,
|
|
"line_end": 616,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "được co4e_run_control_widget.py gọi khi step chạy/xong/lỗi — điểm nối giữa canvas và run control",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
305
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.reset_statuses",
|
|
"kind": "method",
|
|
"line_display": "618-621",
|
|
"line_start": 618,
|
|
"line_end": 621,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "được co4e_run_control_widget.py gọi khi bắt đầu run mới",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
306
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.refresh_node",
|
|
"kind": "method",
|
|
"line_display": "623-626",
|
|
"line_start": 623,
|
|
"line_end": 626,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
307
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._node_rects",
|
|
"kind": "method",
|
|
"line_display": "628-638",
|
|
"line_start": 628,
|
|
"line_end": 638,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "dựng QRectF như kiểu giá trị từ item.pos() — logic hình học thuần",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
308
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas._reposition_edges",
|
|
"kind": "method",
|
|
"line_display": "640-649",
|
|
"line_start": 640,
|
|
"line_end": 649,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "gọi e.update_path (setPath) trên item sống, dùng hàm định tuyến _route từ canvas_geometry.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
309
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.keyPressEvent",
|
|
"kind": "method",
|
|
"line_display": "652-669",
|
|
"line_start": 652,
|
|
"line_end": 669,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
310
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.dragEnterEvent",
|
|
"kind": "method",
|
|
"line_display": "671-675",
|
|
"line_start": 671,
|
|
"line_end": 675,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
311
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.dragMoveEvent",
|
|
"kind": "method",
|
|
"line_display": "677-681",
|
|
"line_start": 677,
|
|
"line_end": 681,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
312
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ECanvas.dropEvent",
|
|
"kind": "method",
|
|
"line_display": "683-701",
|
|
"line_start": 683,
|
|
"line_end": 701,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 683-700, target gốc=presentation/co4e/co4e_canvas_widget.py) cắt ngang lát — cần agent gộp đối chiếu (thân try chưa đóng ở dòng 700, còn tiếp; xử lý JSON từ mimeData trong bộ nhớ, không phải file đĩa nên touches_disk_or_network=false) || (dòng 683-701, target gốc=presentation/co4e/co4e_canvas_widget.py) cắt ngang lát — cần agent gộp đối chiếu. Method dropEvent bắt đầu ở dòng 683 (ngoài khoảng được giao 701-791), chỉ dòng 701 (e.acceptProposedAction()) nằm trong lát này; dòng 702 là dòng trống cuối file. File ui/co4e_canvas.py chỉ có 702 dòng — không có nội dung nào khác trong khoảng 702-791 vì đã hết file. Xử lý drop từ sidebar (kind=='workflow' → add_workflow, ngược lại → add_palette_step) — logic thao tác node/canvas nên khớp nhóm _add_node/_connect_nodes trong bảng plan.md dòng 623 dù plan.md không liệt kê rõ dropEvent.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "nnect_nodes trong bảng plan.md dòng 623 dù plan.md không liệt kê rõ dropEvent.",
|
|
"merged_from_raw_indices": [
|
|
313,
|
|
314
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.canvas",
|
|
"kind": "attribute",
|
|
"line_display": "856",
|
|
"line_start": 856,
|
|
"line_end": 856,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "TRẠNG THÁI CHIA SẺ lớn nhất trong file — self.canvas được đọc/ghi ở gần như mọi nhóm chức năng khác (sync_wf_from_canvas, apply_workflow, node selection, run, add_blank_step...).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
100
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._build_canvas_overlay",
|
|
"kind": "method",
|
|
"line_display": "1041-1062",
|
|
"line_start": 1041,
|
|
"line_end": 1062,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "dựng nút zoom/fit gắn vào self.canvas.add_overlay(bar); các slot gọi thẳng self.canvas.zoom_in/zoom_out/fit_view (thuộc nhóm 3.2.2.21-22 trong plan.md → co4e_canvas_widget.py). Có thể tranh cãi nên giữ ở co4e_tab.py (được gọi từ _build_center) — ghi lại để người soát quyết.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
124
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.zoom_in_btn",
|
|
"kind": "attribute",
|
|
"line_display": "1054",
|
|
"line_start": 1054,
|
|
"line_end": 1054,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
125
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.zoom_out_btn",
|
|
"kind": "attribute",
|
|
"line_display": "1055",
|
|
"line_start": 1055,
|
|
"line_end": 1055,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
126
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.fit_btn",
|
|
"kind": "attribute",
|
|
"line_display": "1056",
|
|
"line_start": 1056,
|
|
"line_end": 1056,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_canvas_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
127
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_skill_names",
|
|
"kind": "function",
|
|
"line_display": "61-65",
|
|
"line_start": 61,
|
|
"line_end": 65,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "gọi skills_mod.list_skills()/builtin_skills() (đọc đĩa); dùng cho autocomplete /skill: trong _ChatInput — cũng liên quan skills_list_panel.py vì cùng nguồn dữ liệu",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
2
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_agent_names",
|
|
"kind": "function",
|
|
"line_display": "68-71",
|
|
"line_start": 68,
|
|
"line_end": 71,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "gọi co4e.list_custom_agents() (đọc đĩa); dùng cho autocomplete /agent: trong _ChatInput — cũng liên quan agent_list_panel.py vì cùng nguồn dữ liệu",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
3
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_directive_token",
|
|
"kind": "function",
|
|
"line_display": "122-134",
|
|
"line_start": 122,
|
|
"line_end": 134,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "logic regex thuần Python, test được không cần Qt",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
12
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput",
|
|
"kind": "class",
|
|
"line_display": "137-226",
|
|
"line_start": 137,
|
|
"line_end": 226,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "khai báo 'submit = Signal()' ở dòng 141 là thuộc tính lớp (không phải self.)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
13
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput.__init__",
|
|
"kind": "method",
|
|
"line_display": "143-151",
|
|
"line_start": 143,
|
|
"line_end": 151,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
14
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput._popup",
|
|
"kind": "attribute",
|
|
"line_display": "145",
|
|
"line_start": 145,
|
|
"line_end": 145,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "QListWidget popup autocomplete",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
15
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput._maybe_popup",
|
|
"kind": "method",
|
|
"line_display": "153-178",
|
|
"line_start": 153,
|
|
"line_end": 178,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
16
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput._add_row",
|
|
"kind": "method",
|
|
"line_display": "180-184",
|
|
"line_start": 180,
|
|
"line_end": 184,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
17
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput._accept",
|
|
"kind": "method",
|
|
"line_display": "186-199",
|
|
"line_start": 186,
|
|
"line_end": 199,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
18
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput.focusOutEvent",
|
|
"kind": "method",
|
|
"line_display": "201-204",
|
|
"line_start": 201,
|
|
"line_end": 204,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
19
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_ChatInput.keyPressEvent",
|
|
"kind": "method",
|
|
"line_display": "206-226",
|
|
"line_start": 206,
|
|
"line_end": 226,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
20
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._chat_worker",
|
|
"kind": "attribute",
|
|
"line_display": "236",
|
|
"line_start": 236,
|
|
"line_end": 236,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "AgentWorker của chat, hiện giữ trên Co4ETab",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
25
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._build_chat",
|
|
"kind": "method",
|
|
"line_display": "1064-1127",
|
|
"line_start": 1064,
|
|
"line_end": 1127,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "dài ~63 dòng, gộp: header 'Messages' + toggle, chat_stack (QStackedWidget chứa 1 ChatView/flow), input row + usage label + composer + routing toggle. Tạo self._flow_logs (Dict[str, ChatView]) — TRẠNG THÁI CHIA SẺ dùng bởi _ensure_flow_log/_active_log/chat_log/_apply_workflow (self._wf) — điểm dễ vỡ nhất khi tách file chat ra khỏi co4e_tab.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
128
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._chat_widget",
|
|
"kind": "attribute",
|
|
"line_display": "1066",
|
|
"line_start": 1066,
|
|
"line_end": 1066,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
129
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._mhdr",
|
|
"kind": "attribute",
|
|
"line_display": "1072",
|
|
"line_start": 1072,
|
|
"line_end": 1072,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
130
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.msgs_icon",
|
|
"kind": "attribute",
|
|
"line_display": "1074",
|
|
"line_start": 1074,
|
|
"line_end": 1074,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
131
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.msgs_title",
|
|
"kind": "attribute",
|
|
"line_display": "1075",
|
|
"line_start": 1075,
|
|
"line_end": 1075,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
132
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.chat_toggle_btn",
|
|
"kind": "attribute",
|
|
"line_display": "1076",
|
|
"line_start": 1076,
|
|
"line_end": 1076,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
133
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.chat_stack",
|
|
"kind": "attribute",
|
|
"line_display": "1091",
|
|
"line_start": 1091,
|
|
"line_end": 1091,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "chuyển self.center_stack tương tự — dùng chung với self.center_stack (co4e_tab.py).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
134
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._flow_logs",
|
|
"kind": "attribute",
|
|
"line_display": "1092",
|
|
"line_start": 1092,
|
|
"line_end": 1092,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "Dict[str, ChatView] keyed theo workflow id — TRẠNG THÁI CHIA SẺ chính của toàn bộ logic chat theo-flow; đọc/ghi bởi _ensure_flow_log, _active_log, chat_log, _apply_workflow, và các hàm chat khác ngoài phạm vi đọc (>1400).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
135
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.chat_input_row",
|
|
"kind": "attribute",
|
|
"line_display": "1094",
|
|
"line_start": 1094,
|
|
"line_end": 1094,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
136
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._usage_total_lbl",
|
|
"kind": "attribute",
|
|
"line_display": "1099",
|
|
"line_start": 1099,
|
|
"line_end": 1099,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
137
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.chat_input",
|
|
"kind": "attribute",
|
|
"line_display": "1105",
|
|
"line_start": 1105,
|
|
"line_end": 1105,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
138
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.chat_send_btn",
|
|
"kind": "attribute",
|
|
"line_display": "1108",
|
|
"line_start": 1108,
|
|
"line_end": 1108,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
139
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.co4e_routing_toggle",
|
|
"kind": "attribute",
|
|
"line_display": "1113",
|
|
"line_start": 1113,
|
|
"line_end": 1113,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "RoutingToggle(self.ctx, 'co4e') — self.ctx là trạng thái chia sẻ của cả Co4ETab (khởi tạo ngoài phạm vi đọc).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
140
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._co4e_routed_provider",
|
|
"kind": "attribute",
|
|
"line_display": "1114; 1853",
|
|
"line_start": 1114,
|
|
"line_end": 1853,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 1114-1114, target gốc=presentation/co4e/co4e_chat_view.py) override provider cho lượt chat kế tiếp — dùng bởi _apply_co4e_routing (ngoài phạm vi đọc, >1400). || (dòng 1853-1853, target gốc=presentation/co4e/co4e_chat_view.py) gán None lần đầu tại đây (trong _apply_co4e_routing); đọc bằng getattr(self, '_co4e_routed_provider', None) ở _run_chat_turn dòng ~1922 — gợi ý có thể không được init trong __init__. Trạng thái routing theo từng lượt chat, dùng chung giữa chat-view và _start_canvas_run/manager.start.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 1114-1114, target gốc=presentation/co4e/co4e_chat_view.py) overr",
|
|
"merged_from_raw_indices": [
|
|
141,
|
|
204
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._vsplit_sizes",
|
|
"kind": "attribute",
|
|
"line_display": "1121",
|
|
"line_start": 1121,
|
|
"line_end": 1121,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "dùng bởi _toggle_messages để restore kích thước splitter — chia sẻ với self._vsplit (co4e_tab.py).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
142
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._msgs_collapsed",
|
|
"kind": "attribute",
|
|
"line_display": "1122",
|
|
"line_start": 1122,
|
|
"line_end": 1122,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
143
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._toggle_messages",
|
|
"kind": "method",
|
|
"line_display": "1129-1161",
|
|
"line_start": 1129,
|
|
"line_end": 1161,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "thao tác self._vsplit (tạo ở co4e_tab.py/_build_center) — trạng thái chia sẻ giữa co4e_chat_view.py và co4e_tab.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
144
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._ensure_flow_log",
|
|
"kind": "method",
|
|
"line_display": "1164-1173",
|
|
"line_start": 1164,
|
|
"line_end": 1173,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "đọc/ghi self._flow_logs — trạng thái chia sẻ chính của chat theo-flow.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
145
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._active_log",
|
|
"kind": "method",
|
|
"line_display": "1175-1177",
|
|
"line_start": 1175,
|
|
"line_end": 1177,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "đọc self._wf — trạng thái chia sẻ với toàn bộ Co4ETab (canvas, sidebar, save/autosave, run control).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
146
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.chat_log",
|
|
"kind": "method",
|
|
"line_display": "1180-1183",
|
|
"line_start": 1180,
|
|
"line_end": 1183,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "@property, chỉ đọc, uỷ nhiệm cho _active_log().",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
147
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._plan_bubble",
|
|
"kind": "method",
|
|
"line_display": "1186-1187",
|
|
"line_start": 1186,
|
|
"line_end": 1187,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "@property getter, đọc self._active_log()._co4e_plan_bubble (thuộc tính gắn thêm vào từng instance ChatView).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
148
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._plan_bubble (setter)",
|
|
"kind": "method",
|
|
"line_display": "1189-1191",
|
|
"line_start": 1189,
|
|
"line_end": 1191,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "@_plan_bubble.setter, ghi self._active_log()._co4e_plan_bubble.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
149
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._chat_send",
|
|
"kind": "method",
|
|
"line_display": "1820-1846",
|
|
"line_start": 1820,
|
|
"line_end": 1846,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "self.chat_input.clear(), self._append_chat — thao tác widget; điều phối /agent /skill directive rồi gọi self._run_chat_turn (network qua provider, không trực tiếp trong hàm này)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
202
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._apply_co4e_routing",
|
|
"kind": "method",
|
|
"line_display": "1848-1883",
|
|
"line_start": 1848,
|
|
"line_end": 1883,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "gọi confirm_switch (dialog Qt) khi mode=='manual' và self._append_chat khi có switch — cần widget sống. Gán self._co4e_routed_provider (xem attribute riêng).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
203
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._extract_agent_directive",
|
|
"kind": "method",
|
|
"line_display": "1885-1891",
|
|
"line_start": 1885,
|
|
"line_end": 1891,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "regex thuần Python",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
205
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._resolve_agent",
|
|
"kind": "method",
|
|
"line_display": "1893-1901",
|
|
"line_start": 1893,
|
|
"line_end": 1901,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "tra cứu BUILTIN_AGENTS và co4e.list_custom_agents() (bộ nhớ/đĩa tùy triển khai list_custom_agents, không rõ trong khoảng đọc) — cross-reference với agent_list_panel.py (nguồn danh sách custom agent)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
206
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_chat_turn",
|
|
"kind": "method",
|
|
"line_display": "1903-1974",
|
|
"line_start": 1903,
|
|
"line_end": 1974,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "72 dòng, gộp: chuẩn bị prompt, tạo bubble stream, định nghĩa 4 closures nội bộ (job/on_event/done/failed) và khởi worker nền — nên tách các closures ra thành hàm riêng nếu dễ đọc hơn. Closure job() gọi run_cowork(provider,...) — network/AI call thật sự. Đọc/ghi self._chat_worker, self._co4e_routed_provider, self.chat_send_btn, self._wf; set log._co4e_plan_bubble=None (thuộc log là ChatView, không phải self).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
207
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_chat_turn.job",
|
|
"kind": "function",
|
|
"line_display": "1917-1946",
|
|
"line_start": 1917,
|
|
"line_end": 1946,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "closure nội bộ của _run_chat_turn, chạy trong AgentWorker (thread nền); gọi run_cowork(provider,...) — network/AI call thật; dùng usage_tracker (đọc/ghi trạng thái tích lũy usage)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
208
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_chat_turn.on_event",
|
|
"kind": "function",
|
|
"line_display": "1948-1954",
|
|
"line_start": 1948,
|
|
"line_end": 1954,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "closure nội bộ, cập nhật assistant.set_markdown và log.scroll_to_bottom (widget)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
209
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_chat_turn.done",
|
|
"kind": "function",
|
|
"line_display": "1956-1962",
|
|
"line_start": 1956,
|
|
"line_end": 1962,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "closure nội bộ, gán self._chat_worker = None, thao tác widget assistant/log",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
210
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_chat_turn.failed",
|
|
"kind": "function",
|
|
"line_display": "1964-1967",
|
|
"line_start": 1964,
|
|
"line_end": 1967,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "closure nội bộ, gán self._chat_worker = None, gọi self._append_chat lỗi",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
211
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._append_chat",
|
|
"kind": "method",
|
|
"line_display": "1976-1991",
|
|
"line_start": 1976,
|
|
"line_end": 1991,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "nhận tham số log tùy chọn, mặc định self.chat_log — dùng bởi rất nhiều method ở cả run-control (qua tham số log truyền vào) và chat-view; điểm nối giữa hai nhóm.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
212
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._fmt_usage",
|
|
"kind": "method",
|
|
"line_display": "1994-2001",
|
|
"line_start": 1994,
|
|
"line_end": 2001,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "format chuỗi thuần, đọc self.ctx.config.data — không chạm widget",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
213
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._apply_usage",
|
|
"kind": "method",
|
|
"line_display": "2003-2020",
|
|
"line_start": 2003,
|
|
"line_end": 2020,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "bub.add_usage(...) thao tác widget bubble; ghi self._flow_usage[wf_id] — trạng thái tổng usage theo flow, dùng chung với _refresh_usage_total",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
214
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._refresh_usage_total",
|
|
"kind": "method",
|
|
"line_display": "2022-2037",
|
|
"line_start": 2022,
|
|
"line_end": 2037,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "self._usage_total_lbl.setText — đọc self._wf, self._flow_usage",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
215
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._append_diff",
|
|
"kind": "method",
|
|
"line_display": "2039-2043",
|
|
"line_start": 2039,
|
|
"line_end": 2043,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
216
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._append_plan",
|
|
"kind": "method",
|
|
"line_display": "2045-2056",
|
|
"line_start": 2045,
|
|
"line_end": 2056,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "đọc/ghi log._co4e_plan_bubble (thuộc tính động trên đối tượng log/ChatView, không phải self)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
217
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_html_escape",
|
|
"kind": "function",
|
|
"line_display": "2082-2083",
|
|
"line_start": 2082,
|
|
"line_end": 2083,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_chat_view.py",
|
|
"note": "hàm module-level (ngoài class Co4ETab), escape HTML thuần, dùng cho hiển thị chat",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
219
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_PLAN_GLYPH",
|
|
"kind": "attribute",
|
|
"line_display": "45-46",
|
|
"line_start": 45,
|
|
"line_end": 46,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "module-level dict glyph trạng thái dùng bởi _fmt_plan",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
0
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_fmt_plan",
|
|
"kind": "function",
|
|
"line_display": "49-58",
|
|
"line_start": 49,
|
|
"line_end": 58,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "helper thuần Python dùng bởi _render_plan()",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
1
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.manager",
|
|
"kind": "attribute",
|
|
"line_display": "238",
|
|
"line_start": 238,
|
|
"line_end": 238,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "Co4ERunManager — lõi run control, trạng thái chia sẻ với canvas (node status) và chat view (run_logs)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
26
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._flow_runs",
|
|
"kind": "attribute",
|
|
"line_display": "243",
|
|
"line_start": 243,
|
|
"line_end": 243,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "map wf_id->run id, chia sẻ với _open_flow/_close_flow_tab (co4e_tab.py) và canvas",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
27
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_logs",
|
|
"kind": "attribute",
|
|
"line_display": "244",
|
|
"line_start": 244,
|
|
"line_end": 244,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "map run_id->ChatView, chia sẻ với co4e_chat_view.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
28
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._flow_usage",
|
|
"kind": "attribute",
|
|
"line_display": "248",
|
|
"line_start": 248,
|
|
"line_end": 248,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "usage token/cost theo flow, hiển thị ở Messages header",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
30
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._manual_active",
|
|
"kind": "attribute",
|
|
"line_display": "252",
|
|
"line_start": 252,
|
|
"line_end": 252,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "chia sẻ với _close_flow_tab (co4e_tab.py) — set lại self.run_btn khi đóng tab",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
33
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._manual_order",
|
|
"kind": "attribute",
|
|
"line_display": "253",
|
|
"line_start": 253,
|
|
"line_end": 253,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
34
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._manual_idx",
|
|
"kind": "attribute",
|
|
"line_display": "254",
|
|
"line_start": 254,
|
|
"line_end": 254,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
35
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._cur_run_id",
|
|
"kind": "method",
|
|
"line_display": "460-473",
|
|
"line_start": 460,
|
|
"line_end": 473,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "logic thuần Python, không gọi Qt trực tiếp",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
53
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._update_run_btn",
|
|
"kind": "method",
|
|
"line_display": "480-482",
|
|
"line_start": 480,
|
|
"line_end": 482,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
55
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.runs_more_btn",
|
|
"kind": "attribute",
|
|
"line_display": "586",
|
|
"line_start": 586,
|
|
"line_end": 586,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
76
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.runs_side_list",
|
|
"kind": "attribute",
|
|
"line_display": "594",
|
|
"line_start": 594,
|
|
"line_end": 594,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
77
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._SIDE_RUNS",
|
|
"kind": "attribute",
|
|
"line_display": "605",
|
|
"line_start": 605,
|
|
"line_end": 605,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "class-level constant, không phải self.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
78
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._refresh_side_runs",
|
|
"kind": "method",
|
|
"line_display": "607-619",
|
|
"line_start": 607,
|
|
"line_end": 619,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
79
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_side_run_clicked",
|
|
"kind": "method",
|
|
"line_display": "621-629",
|
|
"line_start": 621,
|
|
"line_end": 629,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "chạm self.runs_table (định nghĩa ngoài khoảng đọc — thuộc trang Flow Status)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
80
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.mode_combo",
|
|
"kind": "attribute",
|
|
"line_display": "828",
|
|
"line_start": 828,
|
|
"line_end": 828,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "combo chọn run mode auto/plan/manual — thuộc nhóm _set_run_mode() trong plan.md dù được dựng bên trong _build_center (co4e_tab.py); ranh giới tách file ở đây dễ vỡ.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
97
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.run_btn",
|
|
"kind": "attribute",
|
|
"line_display": "833",
|
|
"line_start": 833,
|
|
"line_end": 833,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "nút Run — tương tự mode_combo, dựng trong _build_center nhưng thuộc nhóm run control; cũng bị _update_run_btn (<701), _on_run_clicked, _on_mode_changed đọc/ghi text.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
98
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.runs_btn",
|
|
"kind": "attribute",
|
|
"line_display": "840",
|
|
"line_start": 840,
|
|
"line_end": 840,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "toggle chuyển sang trang Runs (self.center_stack) — chia sẻ state center_stack với co4e_tab.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
99
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._build_runs_page",
|
|
"kind": "method",
|
|
"line_display": "873-932",
|
|
"line_start": 873,
|
|
"line_end": 932,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "dựng trang bảng Runs (theo dõi mọi run của mọi flow) — dùng self.manager (Co4ERunManager, sẽ thay bằng co4e_workflow_service) — trạng thái chia sẻ.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
102
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.runs_back_btn",
|
|
"kind": "attribute",
|
|
"line_display": "882",
|
|
"line_start": 882,
|
|
"line_end": 882,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
103
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.runs_title",
|
|
"kind": "attribute",
|
|
"line_display": "887",
|
|
"line_start": 887,
|
|
"line_end": 887,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
104
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.ws_folder_btn",
|
|
"kind": "attribute",
|
|
"line_display": "892",
|
|
"line_start": 892,
|
|
"line_end": 892,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
105
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.run_stop_btn",
|
|
"kind": "attribute",
|
|
"line_display": "900",
|
|
"line_start": 900,
|
|
"line_end": 900,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
106
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.run_rename_btn",
|
|
"kind": "attribute",
|
|
"line_display": "905",
|
|
"line_start": 905,
|
|
"line_end": 905,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
107
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.run_del_btn",
|
|
"kind": "attribute",
|
|
"line_display": "909",
|
|
"line_start": 909,
|
|
"line_end": 909,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
108
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.run_clear_btn",
|
|
"kind": "attribute",
|
|
"line_display": "913",
|
|
"line_start": 913,
|
|
"line_end": 913,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "clicked gọi self.manager.clear_finished() — trạng thái chia sẻ self.manager.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
109
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.runs_table",
|
|
"kind": "attribute",
|
|
"line_display": "921",
|
|
"line_start": 921,
|
|
"line_end": 921,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
110
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._current_mode",
|
|
"kind": "method",
|
|
"line_display": "1384-1385",
|
|
"line_start": 1384,
|
|
"line_end": 1385,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "đọc self.mode_combo — khớp nhóm _set_run_mode() dòng 624 plan.md.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
172
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_mode_changed",
|
|
"kind": "method",
|
|
"line_display": "1387-1393",
|
|
"line_start": 1387,
|
|
"line_end": 1393,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "reset self._manual_active/_manual_order/_manual_idx (trạng thái chia sẻ với luồng manual step _manual_step/_manual_run_or_advance, ngoài phạm vi đọc >1400) và gọi self._cur_run_id() (chia sẻ với self.manager).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
173
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_run_clicked",
|
|
"kind": "method",
|
|
"line_display": "1395-1400",
|
|
"line_start": 1395,
|
|
"line_end": 1400,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "cắt ngang lát — cần agent gộp đối chiếu (tiếp tục sau dòng 1400). Dùng self.manager.stop() và self._cur_run_id() — trạng thái chia sẻ với co4e_workflow_service tương lai. Khớp nhóm _run_flow()/_stop_flow() dòng 618 plan.md (dù đó là bản service, đây là UI handler nút Run).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
174
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.<method truoc dong 1401, ten chua xac dinh - co the la _on_run_clicked>",
|
|
"kind": "method",
|
|
"line_display": "1401-1405",
|
|
"line_start": 1401,
|
|
"line_end": 1405,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "cắt ngang lát — cần agent gộp đối chiếu. Định nghĩa (def ...) nằm ở lát trước dòng 1401 nên tên chính xác không xác định được; đoạn thấy được chỉ dispatch theo self._current_mode() sang _manual_run_or_advance() hoặc _start_canvas_run() — thuộc nhóm Run/mode.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "(def ...) nằm ở lát trước dòng 1401 nên tên chính xác không xác định được; đoạn thấy được chỉ dispatch theo self._current_mode() sang _manual_run_or",
|
|
"merged_from_raw_indices": [
|
|
175
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._start_canvas_run",
|
|
"kind": "method",
|
|
"line_display": "1407-1424",
|
|
"line_start": 1407,
|
|
"line_end": 1424,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi self.manager.start(...) — spawn chạy flow (dẫn tới gọi provider AI ở tầng khác); đọc/ghi self._wf, self._flow_runs, self._flow_runs[wf_id], self._run_logs, self.chat_log — trạng thái chia sẻ giữa run-control và chat-view. self.manager (Co4ERunManager) nên đổi sang application/workflows/co4e_workflow_service.py theo mapping.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
176
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_single",
|
|
"kind": "method",
|
|
"line_display": "1426-1431",
|
|
"line_start": 1426,
|
|
"line_end": 1431,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "wrapper mỏng gọi _start_canvas_run; đọc self._wf.id",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
177
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_from",
|
|
"kind": "method",
|
|
"line_display": "1433-1437",
|
|
"line_start": 1433,
|
|
"line_end": 1437,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "wrapper mỏng gọi _start_canvas_run với self._downstream(node_id)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
178
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._downstream",
|
|
"kind": "method",
|
|
"line_display": "1439-1450",
|
|
"line_start": 1439,
|
|
"line_end": 1450,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "thuật toán BFS thuần Python, chỉ đọc self.canvas.edges() làm input — test được với danh sách edge giả lập, không cần canvas thật",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
179
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._manual_run_or_advance",
|
|
"kind": "method",
|
|
"line_display": "1453-1466",
|
|
"line_start": 1453,
|
|
"line_end": 1466,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi self.canvas.reset_statuses() và self._append_chat (self._append_chat thuộc nhóm chat-view) — cắt ngang giữa run-control và chat-view. Đọc/ghi self._manual_active, self._manual_order, self._manual_idx, self._wf, self._outputs_for(...), self._plan_bubble — trạng thái run thuần túy chia sẻ với _manual_step.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
180
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._manual_step",
|
|
"kind": "method",
|
|
"line_display": "1468-1484",
|
|
"line_start": 1468,
|
|
"line_end": 1484,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi self.manager.start(...) (network/AI qua provider) và self.run_btn.setText, self._append_chat (chat-view); đọc/ghi self._manual_idx, self._manual_order, self._wf, self._flow_runs, self._run_logs, self.chat_log — trạng thái chia sẻ rộng giữa run-control và chat-view.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
181
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._topo_order",
|
|
"kind": "method",
|
|
"line_display": "1486-1491",
|
|
"line_start": 1486,
|
|
"line_end": 1491,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "đọc self.canvas.nodes()/edges() làm dữ liệu đầu vào, logic tính toán thuần túy (co4e.compute_waves) — test được với dữ liệu giả",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
182
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_manager_event",
|
|
"kind": "method",
|
|
"line_display": "1494-1550",
|
|
"line_start": 1494,
|
|
"line_end": 1550,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "method dài (57 dòng), gộp nhiều việc không liên quan: định tuyến sự kiện chạy theo từng flow (routing run_id -> log), cập nhật trạng thái node trên canvas, hiển thị bubble chat (assistant/diff/plan/tool-failed — thuộc co4e_chat_view.py), xử lý hoàn tất run (run_done/run_error), hiển thị popup thông báo, cập nhật status bar. Nên tách phần hiển thị chat (self._append_chat/_append_diff/_append_plan) sang co4e_chat_view.py, giữ phần routing/flow-completion ở co4e_run_control_widget.py. Đọc/ghi self._flow_runs, self._run_logs, self.chat_log, self.canvas, self._wf, self._outputs_for(...), self._manual_active, self._manual_idx — trạng thái chia sẻ rất rộng, điểm dễ vỡ nhất khi tách file.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
183
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._notify_run_finished",
|
|
"kind": "method",
|
|
"line_display": "1552-1573",
|
|
"line_start": 1552,
|
|
"line_end": 1573,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "tạo QMessageBox không chặn; khởi tạo lazy self._run_popups (xem attribute riêng)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
184
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_popups",
|
|
"kind": "attribute",
|
|
"line_display": "1560-1561",
|
|
"line_start": 1560,
|
|
"line_end": 1561,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "khởi tạo lazy (list rỗng) trong _notify_run_finished qua hasattr guard — không init trong __init__; giữ ref các QMessageBox non-blocking khỏi bị GC",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
185
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._refresh_runs",
|
|
"kind": "method",
|
|
"line_display": "1575-1616",
|
|
"line_start": 1575,
|
|
"line_end": 1616,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "render bảng runs_table + gọi self._refresh_side_runs() (sidebar) + cập nhật self.flow_bar.setTabText và self._sections['co4e.runs_tab'] — self._sections và self.flow_bar là trạng thái chia sẻ với co4e_tab.py (container/sidebar).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
186
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._stop_selected_run",
|
|
"kind": "method",
|
|
"line_display": "1618-1624",
|
|
"line_start": 1618,
|
|
"line_end": 1624,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
187
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._delete_selected_run",
|
|
"kind": "method",
|
|
"line_display": "1626-1639",
|
|
"line_start": 1626,
|
|
"line_end": 1639,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "đọc/ghi self._flow_runs, self._run_logs — trạng thái chia sẻ với _on_manager_event/_start_canvas_run",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
188
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._runs_context_menu",
|
|
"kind": "method",
|
|
"line_display": "1641-1655",
|
|
"line_start": 1641,
|
|
"line_end": 1655,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
189
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._open_run_output_folder",
|
|
"kind": "method",
|
|
"line_display": "1704-1715",
|
|
"line_start": 1704,
|
|
"line_end": 1715,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "path.mkdir + open_location (spawn process); dùng bởi _runs_context_menu 'Open output'",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
194
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._rename_selected_run",
|
|
"kind": "method",
|
|
"line_display": "1717-1748",
|
|
"line_start": 1717,
|
|
"line_end": 1748,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi co4e.save_workflow(wf) (ghi đĩa); đọc/ghi self._flows (list flow của sidebar/tab-bar), self.flow_bar, self.name_edit, self._wf — chạm nhiều trạng thái chia sẻ với co4e_tab.py container (tab bar + name edit thuộc header, không rõ nằm ở panel nào) — rủi ro vỡ cao khi tách.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
195
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._run_selected_in_background",
|
|
"kind": "method",
|
|
"line_display": "1750-1760",
|
|
"line_start": 1750,
|
|
"line_end": 1760,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi self.manager.start(...) (network/AI) và self._refresh_side_runs() (widget)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
196
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._wf_by_id",
|
|
"kind": "method",
|
|
"line_display": "1762-1770",
|
|
"line_start": 1762,
|
|
"line_end": 1770,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi co4e.get_workflow(wf_id) (đọc đĩa) và self._sync_wf_from_canvas() (không nằm trong khoảng đọc) — đọc self._wf; dùng chung bởi _rerun_run_item/_open_run_from_table (Runs tab) và có thể cả co4e_tab.py container",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
197
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._rerun_run_item",
|
|
"kind": "method",
|
|
"line_display": "1772-1783",
|
|
"line_start": 1772,
|
|
"line_end": 1783,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi self.manager.start(...) (network/AI)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
198
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._open_run_from_table",
|
|
"kind": "method",
|
|
"line_display": "1785-1804",
|
|
"line_start": 1785,
|
|
"line_end": 1804,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "gọi self._open_flow(wf) (không nằm trong khoảng đọc, theo plan.md thuộc co4e_tab.py) và self.canvas.update_node_status — nối Runs tab với việc mở flow trên canvas, điểm khớp nối giữa run-control và container/canvas.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
199
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_qcolor",
|
|
"kind": "function",
|
|
"line_display": "2086-2088",
|
|
"line_start": 2086,
|
|
"line_end": 2088,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_run_control_widget.py",
|
|
"note": "hàm module-level (ngoài class Co4ETab), tạo QColor từ hex string — dùng kiểu giá trị QColor, không cần QApplication sống; dùng trong _refresh_runs để tô màu status",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
220
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EqualTabBar",
|
|
"kind": "class",
|
|
"line_display": "74-94",
|
|
"line_start": 74,
|
|
"line_end": 94,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
4
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EqualTabBar._GAP",
|
|
"kind": "attribute",
|
|
"line_display": "80",
|
|
"line_start": 80,
|
|
"line_end": 80,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "class-level constant, không phải self.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
5
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EqualTabBar.tabSizeHint",
|
|
"kind": "method",
|
|
"line_display": "82-90",
|
|
"line_start": 82,
|
|
"line_end": 90,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
6
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_EqualTabBar.resizeEvent",
|
|
"kind": "method",
|
|
"line_display": "92-94",
|
|
"line_start": 92,
|
|
"line_end": 94,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
7
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab",
|
|
"kind": "class",
|
|
"line_display": "229-700",
|
|
"line_start": 229,
|
|
"line_end": 700,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "Lớp kéo dài quá dòng 700 (cắt ngang lát) — chỉ ghi nhận phần 229-700; 'status_message = Signal(str)' dòng 230 là thuộc tính lớp, không phải self.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
21
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.__init__",
|
|
"kind": "method",
|
|
"line_display": "232-304",
|
|
"line_start": 232,
|
|
"line_end": 304,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "method 73 dòng, gộp: khởi state run/flow, dựng splitter 3 cột (sidebar/center/config), wiring canvas & config panel, gọi _reload_sidebar (đọc đĩa qua co4e.list_workflows) và _open_flow; chạm rất nhiều thuộc tính chia sẻ: self._wf, self._flows, self.manager, self._flow_runs, self._run_logs, self._flow_outputs, self._flow_usage, self.config, self.canvas (gán ở _build_center ngoài khoảng đọc này)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
22
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.ctx",
|
|
"kind": "attribute",
|
|
"line_display": "234",
|
|
"line_start": 234,
|
|
"line_end": 234,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
23
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._wf",
|
|
"kind": "attribute",
|
|
"line_display": "235",
|
|
"line_start": 235,
|
|
"line_end": 235,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "trạng thái chia sẻ — đọc/ghi bởi canvas, run control, chat view",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
24
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._flows",
|
|
"kind": "attribute",
|
|
"line_display": "257",
|
|
"line_start": 257,
|
|
"line_end": 257,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "danh sách flow đang mở dạng tab — trạng thái chia sẻ nhạy cảm (nêu rõ trong hướng dẫn đề bài)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
36
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._active_flow_idx",
|
|
"kind": "attribute",
|
|
"line_display": "258",
|
|
"line_start": 258,
|
|
"line_end": 258,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "chỉ số tab đang active — chia sẻ giữa _open_flow, _on_flow_tab_changed, _reflect_active_run",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
37
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._split",
|
|
"kind": "attribute",
|
|
"line_display": "261",
|
|
"line_start": 261,
|
|
"line_end": 261,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
38
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._config_collapsed",
|
|
"kind": "attribute",
|
|
"line_display": "274",
|
|
"line_start": 274,
|
|
"line_end": 274,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "trạng thái cho _toggle_config (định nghĩa dòng 989, ngoài khoảng đọc); plan.md xếp _toggle_config ở co4e_tab.py container",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
40
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._config_expanded_w",
|
|
"kind": "attribute",
|
|
"line_display": "275; 995",
|
|
"line_start": 275,
|
|
"line_end": 995,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 275-275, target gốc=presentation/co4e/co4e_tab.py) cùng lý do với _config_collapsed || (dòng 995-995, target gốc=presentation/co4e/co4e_tab.py) gán trong nhánh collapse của _toggle_config; có thể đã khởi tạo trong __init__ (ngoài phạm vi đọc).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 275-275, target gốc=presentation/co4e/co4e_tab.py) cùng lý do vớ",
|
|
"merged_from_raw_indices": [
|
|
41,
|
|
122
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._narrow_guard",
|
|
"kind": "attribute",
|
|
"line_display": "280",
|
|
"line_start": 280,
|
|
"line_end": 280,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "gắn với _apply_narrow_layout (dòng 977, ngoài khoảng đọc)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
42
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._open_flow",
|
|
"kind": "method",
|
|
"line_display": "307-338",
|
|
"line_start": 307,
|
|
"line_end": 338,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "khớp plan.md: _open_flow() -> co4e_tab.py, gọi canvas; chạm self._flows, self.flow_bar (định nghĩa ngoài khoảng đọc), self.canvas",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
43
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._close_other_flows",
|
|
"kind": "method",
|
|
"line_display": "340-355",
|
|
"line_start": 340,
|
|
"line_end": 355,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
44
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._show_runs",
|
|
"kind": "method",
|
|
"line_display": "357-367",
|
|
"line_start": 357,
|
|
"line_end": 367,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "chuyển đổi center_stack giữa flow editor và Runs table — liên quan Flow Status (run control)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
45
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_flow_tab_changed",
|
|
"kind": "method",
|
|
"line_display": "369-385",
|
|
"line_start": 369,
|
|
"line_end": 385,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "chạm self.center_stack (định nghĩa ngoài khoảng đọc, ở _build_center)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
46
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._sync_runs_toggle",
|
|
"kind": "method",
|
|
"line_display": "387-394",
|
|
"line_start": 387,
|
|
"line_end": 394,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
47
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._add_tab_close_button",
|
|
"kind": "method",
|
|
"line_display": "396-406",
|
|
"line_start": 396,
|
|
"line_end": 406,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
48
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._close_flow_tab_button",
|
|
"kind": "method",
|
|
"line_display": "408-412",
|
|
"line_start": 408,
|
|
"line_end": 412,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
49
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._close_flow_tab",
|
|
"kind": "method",
|
|
"line_display": "414-442",
|
|
"line_start": 414,
|
|
"line_end": 442,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "chạm self._flow_runs/_run_logs/_manual_active/self.run_btn (chia sẻ với run control widget)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
50
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._sync_active_flow_tab_text",
|
|
"kind": "method",
|
|
"line_display": "444-447",
|
|
"line_start": 444,
|
|
"line_end": 447,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
51
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._build_sidebar",
|
|
"kind": "method",
|
|
"line_display": "485-603",
|
|
"line_start": 485,
|
|
"line_end": 603,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": ">80 dòng (119 dòng) — gộp dựng 4 section (Workflows/Agents/Skills/Runs) + wiring nhiều nút bấm; nên tách theo section: Workflows giữ ở container, Agents nên chuyển agent_list_panel.py, Skills đã tách (chỉ còn wiring), Runs nên chuyển co4e_run_control_widget.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
56
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._sections",
|
|
"kind": "attribute",
|
|
"line_display": "493",
|
|
"line_start": 493,
|
|
"line_end": 493,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "trạng thái chia sẻ (nêu rõ trong hướng dẫn đề bài) — dùng bởi _fold_section, _sync_section_arrow",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
60
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.sidebar",
|
|
"kind": "attribute",
|
|
"line_display": "494",
|
|
"line_start": 494,
|
|
"line_end": 494,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
61
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.side_split",
|
|
"kind": "attribute",
|
|
"line_display": "498",
|
|
"line_start": 498,
|
|
"line_end": 498,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
62
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_Col",
|
|
"kind": "class",
|
|
"line_display": "503-511",
|
|
"line_start": 503,
|
|
"line_end": 511,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "adapter nội bộ định nghĩa bên trong _build_sidebar, chỉ dùng tại chỗ",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
57
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_Col.__init__",
|
|
"kind": "method",
|
|
"line_display": "506-507",
|
|
"line_start": 506,
|
|
"line_end": 507,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
58
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_Col.addWidget",
|
|
"kind": "method",
|
|
"line_display": "509-511",
|
|
"line_start": 509,
|
|
"line_end": 511,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
59
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.wf_new_btn",
|
|
"kind": "attribute",
|
|
"line_display": "516",
|
|
"line_start": 516,
|
|
"line_end": 516,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
63
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.wf_list",
|
|
"kind": "attribute",
|
|
"line_display": "527",
|
|
"line_start": 527,
|
|
"line_end": 527,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
64
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.wf_edit_btn",
|
|
"kind": "attribute",
|
|
"line_display": "534",
|
|
"line_start": 534,
|
|
"line_end": 534,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
65
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.wf_dup_btn",
|
|
"kind": "attribute",
|
|
"line_display": "535",
|
|
"line_start": 535,
|
|
"line_end": 535,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
66
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.wf_del_btn",
|
|
"kind": "attribute",
|
|
"line_display": "536",
|
|
"line_start": 536,
|
|
"line_end": 536,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
67
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.wf_runbg_btn",
|
|
"kind": "attribute",
|
|
"line_display": "543",
|
|
"line_start": 543,
|
|
"line_end": 543,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
68
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._skills_panel",
|
|
"kind": "attribute",
|
|
"line_display": "575",
|
|
"line_start": 575,
|
|
"line_end": 575,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "instantiate SkillsListPanel đã tách; Co4ETab giữ wiring theo comment trong code (dòng 571-574)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
73
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.sk_manage_btn",
|
|
"kind": "attribute",
|
|
"line_display": "576",
|
|
"line_start": 576,
|
|
"line_end": 576,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "cùng lý do với _skills_panel",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
74
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.skill_list",
|
|
"kind": "attribute",
|
|
"line_display": "578",
|
|
"line_start": 578,
|
|
"line_end": 578,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "cùng lý do với _skills_panel",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
75
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._section",
|
|
"kind": "method",
|
|
"line_display": "631-663",
|
|
"line_start": 631,
|
|
"line_end": 663,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "chạm self._sections (chia sẻ) — helper dựng section sidebar dùng chung",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
81
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._fold_section",
|
|
"kind": "method",
|
|
"line_display": "665-677",
|
|
"line_start": 665,
|
|
"line_end": 677,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
82
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._sync_section_arrow",
|
|
"kind": "method",
|
|
"line_display": "679-681",
|
|
"line_start": 679,
|
|
"line_end": 681,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
83
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._icon_btn",
|
|
"kind": "method",
|
|
"line_display": "683-687",
|
|
"line_start": 683,
|
|
"line_end": 687,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "helper dùng chung tạo nút icon, dùng bởi cả section Workflows và Agents",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
84
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._reload_sidebar",
|
|
"kind": "method",
|
|
"line_display": "689-722",
|
|
"line_start": 689,
|
|
"line_end": 722,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 689-700, target gốc=presentation/co4e/co4e_tab.py) cắt ngang lát — cần agent gộp đối chiếu (method tiếp tục sau dòng 700); gọi co4e.list_workflows() (đọc đĩa) rồi dựng QListWidgetItem trực tiếp trong cùng hàm — trộn data-fetch và UI, nên tách phần đọc dữ liệu sang co4e_workflow_service.py || (dòng 689-722, target gốc=unsure) cắt ngang lát — cần agent gộp đối chiếu (bắt đầu trước dòng 701). Gộp refresh cả agent_list và skill_list trong cùng 1 hàm — nên tách thành _refresh_agents_list (agent_list_panel.py) và _refresh_skills_list (skills_list_panel.py) như plan.md yêu cầu; gọi co4e.list_custom_agents() (đĩa) và skills_mod.skill_prefix_for (đĩa).",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "[GỘP 2 lượt quét trùng ký hiệu] (dòng 689-700, target gốc=presentation/co4e/co4e_tab.py) cắt ngang lát",
|
|
"merged_from_raw_indices": [
|
|
85,
|
|
86
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._build_center",
|
|
"kind": "method",
|
|
"line_display": "731-871",
|
|
"line_start": 731,
|
|
"line_end": 871,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "dài ~140 dòng, làm nhiều việc không liên quan: dựng flow tab bar (ẩn, không hiển thị cho user), dựng runs-page stack, toolbar flow (name_edit/save/save_tpl/mode_combo/run_btn/runs_btn), tạo canvas, gọi _build_canvas_overlay, tạo chat widget, splitter dọc self._vsplit. Nên tách nhỏ. Đọc self._wf.name (dòng 814) và tạo self.center_stack — TRẠNG THÁI CHIA SẺ dùng bởi _show_runs/_apply_workflow (ngoài phạm vi đọc). Khớp phần '_build_canvas()' trong bảng plan.md dòng 615.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
88
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.flow_bar",
|
|
"kind": "attribute",
|
|
"line_display": "738",
|
|
"line_start": 738,
|
|
"line_end": 738,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "QTabBar bị ẩn (setVisible False dòng 802), chỉ dùng làm index nội bộ ánh xạ flow↔canvas — trạng thái chia sẻ với _on_flow_tab_changed/_close_flow_tab (định nghĩa <701, ngoài phạm vi đọc).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
89
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.flow_add_btn",
|
|
"kind": "attribute",
|
|
"line_display": "764",
|
|
"line_start": 764,
|
|
"line_end": 764,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "ẩn (setVisible False), không hiển thị cho user hiện tại.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
90
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.flow_scroll",
|
|
"kind": "attribute",
|
|
"line_display": "781",
|
|
"line_start": 781,
|
|
"line_end": 781,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
91
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.center_stack",
|
|
"kind": "attribute",
|
|
"line_display": "805",
|
|
"line_start": 805,
|
|
"line_end": 805,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "TRẠNG THÁI CHIA SẺ — chuyển đổi giữa trang Runs (co4e_run_control_widget) và trang flow editor; dùng bởi _show_runs (ngoài phạm vi đọc) và _apply_workflow.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
92
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.name_edit",
|
|
"kind": "attribute",
|
|
"line_display": "814",
|
|
"line_start": 814,
|
|
"line_end": 814,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "khởi tạo từ self._wf.name — trạng thái chia sẻ; cũng bị _on_name_changed/_new_workflow đọc/ghi.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
93
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.add_step_btn",
|
|
"kind": "attribute",
|
|
"line_display": "819",
|
|
"line_start": 819,
|
|
"line_end": 819,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
94
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.save_btn",
|
|
"kind": "attribute",
|
|
"line_display": "822",
|
|
"line_start": 822,
|
|
"line_end": 822,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
95
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.save_tpl_btn",
|
|
"kind": "attribute",
|
|
"line_display": "826",
|
|
"line_start": 826,
|
|
"line_end": 826,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
96
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._vsplit",
|
|
"kind": "attribute",
|
|
"line_display": "863",
|
|
"line_start": 863,
|
|
"line_end": 863,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "splitter dọc canvas/chat — dùng chung với _toggle_messages (co4e_chat_view.py thao tác self._vsplit.setSizes) — trạng thái chia sẻ giữa co4e_tab.py và co4e_chat_view.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
101
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._NARROW",
|
|
"kind": "attribute",
|
|
"line_display": "971",
|
|
"line_start": 971,
|
|
"line_end": 971,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "hằng class-level (không phải self.), ngưỡng chiều rộng dùng bởi _apply_narrow_layout.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
118
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.showEvent",
|
|
"kind": "method",
|
|
"line_display": "973-975",
|
|
"line_start": 973,
|
|
"line_end": 975,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "Qt override, gọi self._narrow_guard.attach() (đối tượng khởi tạo ngoài phạm vi đọc, <701). [ANOMALY: cùng tên method định nghĩa 2 lần ở 2 dòng khác nhau trong cùng class -- có khả năng là lỗi nguồn (định nghĩa sau đè định nghĩa trước), không phải do quét trùng; giữ 2 dòng riêng, cần người quyết định định nghĩa nào còn hiệu lực]",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "ợng khởi tạo ngoài phạm vi đọc, <701). [ANOMALY: cùng tên method định nghĩa 2 lần ở 2 dòng khác nhau trong cùng class -- có khả",
|
|
"merged_from_raw_indices": [
|
|
119
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._apply_narrow_layout",
|
|
"kind": "method",
|
|
"line_display": "977-987",
|
|
"line_start": 977,
|
|
"line_end": 987,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "so self._config_collapsed rồi gọi self._toggle_config() — trạng thái chia sẻ với node_property_panel wrap logic.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
120
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._toggle_config",
|
|
"kind": "method",
|
|
"line_display": "989-1032",
|
|
"line_start": 989,
|
|
"line_end": 1032,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "dài 44 dòng, gộp: ẩn/hiện self.config (widget thuộc node_property_panel.py), đổi icon, tính lại self._split.setSizes, gọi _refresh_min_width — thao tác trực tiếp self.config/self.config_container (node_property_panel.py) và self._split (co4e_tab.py) cùng lúc — ranh giới tách file dễ vỡ nhất ở đoạn này. Ghi self._config_expanded_w.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
121
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._refresh_min_width",
|
|
"kind": "method",
|
|
"line_display": "1034-1039",
|
|
"line_start": 1034,
|
|
"line_end": 1039,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "thao tác trực tiếp self._split (QSplitter) và self.config_container — chia sẻ với _build_center/_wrap_config.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
123
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._apply_workflow",
|
|
"kind": "method",
|
|
"line_display": "1194-1207",
|
|
"line_start": 1194,
|
|
"line_end": 1207,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "hàm điều phối trung tâm khi mở 1 flow: gán self._wf (TRẠNG THÁI CHIA SẺ dùng khắp mọi nhóm chức năng — canvas, chat_stack/_flow_logs, config panel, run button, usage total). Đây là điểm nối chính giữa các file sau khi tách — không nên tách nhỏ hơn nếu không rất cẩn thận.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
150
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._new_workflow",
|
|
"kind": "method",
|
|
"line_display": "1209-1217",
|
|
"line_start": 1209,
|
|
"line_end": 1217,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "gọi self._open_flow(...) — khớp dòng plan.md '_open_flow() -> co4e_tab.py → gọi canvas'.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
151
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._selected_wf",
|
|
"kind": "method",
|
|
"line_display": "1219-1225",
|
|
"line_start": 1219,
|
|
"line_end": 1225,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "đọc self.wf_list (sidebar, dựng ở _build_sidebar <701) rồi gọi co4e.get_workflow (đĩa).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
152
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._load_selected_workflow",
|
|
"kind": "method",
|
|
"line_display": "1227-1230",
|
|
"line_start": 1227,
|
|
"line_end": 1230,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
153
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._edit_selected_workflow",
|
|
"kind": "method",
|
|
"line_display": "1232-1237",
|
|
"line_start": 1232,
|
|
"line_end": 1237,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
154
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._wf_context_menu",
|
|
"kind": "method",
|
|
"line_display": "1248-1271",
|
|
"line_start": 1248,
|
|
"line_end": 1271,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "dựng QMenu cho sidebar flows, điều phối gọi _edit_selected_workflow/_rename_workflow/_duplicate_selected_workflow/_run_selected_in_background/_delete_selected_workflow (một số nằm ngoài phạm vi đọc, dòng >1400).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
156
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._sync_wf_from_canvas",
|
|
"kind": "method",
|
|
"line_display": "1299-1302",
|
|
"line_start": 1299,
|
|
"line_end": 1302,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "đọc self.canvas.nodes()/edges() và ghi self._wf.nodes/edges/name — cầu nối giữa co4e_canvas_widget.py và trạng thái self._wf chia sẻ; cân nhắc đặt cùng canvas nếu muốn canvas tự chịu trách nhiệm export dữ liệu.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
159
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_name_changed",
|
|
"kind": "method",
|
|
"line_display": "1316-1318",
|
|
"line_start": 1316,
|
|
"line_end": 1318,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "ghi self._wf.name (trạng thái chia sẻ) rồi gọi self._sync_active_flow_tab_text() (định nghĩa dòng 444, ngoài phạm vi đọc).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
162
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._add_blank_step",
|
|
"kind": "method",
|
|
"line_display": "1320-1322",
|
|
"line_start": 1320,
|
|
"line_end": 1322,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "nút 'Add' trên toolbar uỷ nhiệm sang self.canvas.add_palette_step — liên quan nhóm _add_node() trong plan.md (co4e_canvas_widget.py) nhưng bản thân handler chỉ là cầu nối từ toolbar.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
163
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.set_project",
|
|
"kind": "method",
|
|
"line_display": "1658-1674",
|
|
"line_start": 1658,
|
|
"line_end": 1674,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "gọi load_project(project_id) (đọc đĩa) và self.manager.set_output_root/set_current_project (self.manager nên là co4e_workflow_service). Gán self._project_id, self._project_dir — không chắc là lần gán đầu tiên (có thể đã init ở __init__ ngoài khoảng đọc). Không khớp rõ nhóm nào trong danh sách đích cho trước — xếp tạm vào co4e_tab.py vì đây là API binding cấp container gọi từ ngoài.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "ể đã init ở __init__ ngoài khoảng đọc). Không khớp rõ nhóm nào trong danh sách đích cho trước — xếp tạm vào co4e_tab.py vì đây là",
|
|
"merged_from_raw_indices": [
|
|
190
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._flow_output_root",
|
|
"kind": "method",
|
|
"line_display": "1676-1686",
|
|
"line_start": 1676,
|
|
"line_end": 1686,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "helper dùng chung bởi cả chat (_out_dir) và run-control (_open_workspace_folder, _open_run_output_folder) — trạng thái/logic cắt ngang nhiều nhóm; đọc self._project_dir, self.ctx.config",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
191
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._refresh_ws_folder_btn",
|
|
"kind": "method",
|
|
"line_display": "1688-1693",
|
|
"line_start": 1688,
|
|
"line_end": 1693,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
192
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._open_workspace_folder",
|
|
"kind": "method",
|
|
"line_display": "1695-1702",
|
|
"line_start": 1695,
|
|
"line_end": 1702,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "root.mkdir + open_location (mở file explorer hệ điều hành — spawn process)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
193
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.showEvent",
|
|
"kind": "method",
|
|
"line_display": "1806-1809",
|
|
"line_start": 1806,
|
|
"line_end": 1809,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "override Qt lifecycle method của chính QWidget container nên phải ở lại co4e_tab.py; gọi self._refresh_runs() (thuộc co4e_run_control_widget.py) — điểm nối giữa container và run-control widget. [ANOMALY: cùng tên method định nghĩa 2 lần ở 2 dòng khác nhau trong cùng class -- có khả năng là lỗi nguồn (định nghĩa sau đè định nghĩa trước), không phải do quét trùng; giữ 2 dòng riêng, cần người quyết định định nghĩa nào còn hiệu lực]",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "giữa container và run-control widget. [ANOMALY: cùng tên method định nghĩa 2 lần ở 2 dòng khác nhau trong cùng class -- có khả",
|
|
"merged_from_raw_indices": [
|
|
200
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._out_dir",
|
|
"kind": "method",
|
|
"line_display": "1811-1817",
|
|
"line_start": 1811,
|
|
"line_end": 1817,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "d.mkdir(parents=True, exist_ok=True) — ghi đĩa; dùng chung bởi _run_chat_turn (chat) và tiềm năng bởi run-control; đọc self._wf.name, self._flow_output_root()",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
201
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._retranslate",
|
|
"kind": "method",
|
|
"line_display": "2059-2079",
|
|
"line_start": 2059,
|
|
"line_end": 2079,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/co4e_tab.py",
|
|
"note": "cập nhật text i18n cho rất nhiều widget thuộc nhiều nhóm khác nhau (sidebar buttons, runs_table, run control buttons) và gọi self._reload_sidebar()/self._refresh_runs() — thuộc container vì bao trùm toàn tab, dù có thể tách nhỏ theo từng panel sau này.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
218
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_SectionHeader",
|
|
"kind": "class",
|
|
"line_display": "30-52",
|
|
"line_start": 30,
|
|
"line_end": 52,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Widget nội bộ (header có thể click, thu/mở section) chỉ dùng bởi StepConfigPanel; không có trong bảng plan.md/function_list.md, xếp cùng chỗ với StepConfigPanel vì mô tả node_property_panel.py là 'Bọc StepConfigPanel'",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "section) chỉ dùng bởi StepConfigPanel; không có trong bảng plan.md/function_list.md, xếp cùng chỗ với StepConfigPanel vì mô tả node_property_panel",
|
|
"merged_from_raw_indices": [
|
|
315
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_SectionHeader.clicked",
|
|
"kind": "attribute",
|
|
"line_display": "36",
|
|
"line_start": 36,
|
|
"line_end": 36,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Signal Qt khai báo ở cấp class, không phải self.<tên> gán trong __init__",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
316
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_SectionHeader.mousePressEvent",
|
|
"kind": "method",
|
|
"line_display": "38-41",
|
|
"line_start": 38,
|
|
"line_end": 41,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
317
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_SectionHeader.showEvent",
|
|
"kind": "method",
|
|
"line_display": "43-52",
|
|
"line_start": 43,
|
|
"line_end": 52,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "recompute fontMetrics khi label thực sự hiển thị — cần widget đang sống, không test được nếu không có QApplication",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
318
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_add_section",
|
|
"kind": "function",
|
|
"line_display": "55-130",
|
|
"line_start": 55,
|
|
"line_end": 130,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Hàm dựng UI khối section thu gọn/mở rộng (header + body animate) dùng riêng cho StepConfigPanel; chứa 2 closure nội bộ _on_finished và _toggle. Không có trong bảng cũ.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "closure nội bộ _on_finished và _toggle. Không có trong bảng cũ.",
|
|
"merged_from_raw_indices": [
|
|
319
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_add_section._on_finished",
|
|
"kind": "function",
|
|
"line_display": "103-112",
|
|
"line_start": 103,
|
|
"line_end": 112,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "closure lồng bên trong _add_section, không phải hàm top-level — chỉ tồn tại khi _add_section chạy",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
320
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_add_section._toggle",
|
|
"kind": "function",
|
|
"line_display": "114-127",
|
|
"line_start": 114,
|
|
"line_end": 127,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "closure lồng bên trong _add_section, gắn vào header.clicked",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
321
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel",
|
|
"kind": "class",
|
|
"line_display": "133-528",
|
|
"line_start": 133,
|
|
"line_end": 528,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "cắt ngang lát — cần agent gộp đối chiếu (lớp còn tiếp tục sau dòng 528, chỉ đọc được 1-528). Bảng plan.md/function_list.md không liệt kê StepConfigPanel trực tiếp (chỉ có _build_config_panel() -> co4e_tab.py container); xếp theo mô tả node_property_panel.py 'Bọc StepConfigPanel, nối chọn node sang panel thuộc tính' trong danh sách đích được giao cho task này — người quyết cuối nên xác nhận lại.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
322
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.changed",
|
|
"kind": "attribute",
|
|
"line_display": "134",
|
|
"line_start": 134,
|
|
"line_end": 134,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Signal Qt: bất kỳ field nào đổi -> canvas repaint node + autosave; đây là điểm nối trạng thái chia sẻ với canvas/co4e_workflow_service, cần giữ tên/signature khi tách file",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
323
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.run_node",
|
|
"kind": "attribute",
|
|
"line_display": "135",
|
|
"line_start": 135,
|
|
"line_end": 135,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Signal Qt 'chạy step này' — nối sang co4e_run_control_widget.py hoặc co4e_workflow_service.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
324
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.run_from",
|
|
"kind": "attribute",
|
|
"line_display": "136",
|
|
"line_start": 136,
|
|
"line_end": 136,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Signal Qt 'chạy từ bước này' — nối sang co4e_run_control_widget.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
325
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.delete_node",
|
|
"kind": "attribute",
|
|
"line_display": "137",
|
|
"line_start": 137,
|
|
"line_end": 137,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Signal Qt xoá step — nối sang co4e_canvas_widget.py để xoá node trên canvas",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
326
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.__init__",
|
|
"kind": "method",
|
|
"line_display": "139-313",
|
|
"line_start": 139,
|
|
"line_end": 313,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": ">80 dòng (174 dòng) — gộp nhiều việc không liên quan: dựng section Cơ bản, section Model&Quyền, section Skills&Tệp, section Sub-agents (ẩn/hiện theo is_parallel), và dựng hàng nút footer Run/Run-from/Delete, cộng thêm cơ chế 'outer.addStretch(1)' vá lỗi layout. Nên tách thành các hàm _build_basic_section(), _build_model_section(), _build_skills_section(), _build_subagent_section(), _build_footer() riêng khi tách file.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
327
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.ctx",
|
|
"kind": "attribute",
|
|
"line_display": "141",
|
|
"line_start": 141,
|
|
"line_end": 141,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "context được truyền từ ngoài vào, dùng cho _ai_draft/_load_models (gọi AI provider) — trạng thái chia sẻ với co4e_tab.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
328
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._step",
|
|
"kind": "attribute",
|
|
"line_display": "142",
|
|
"line_start": 142,
|
|
"line_end": 142,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Step đang chỉnh sửa — trạng thái chia sẻ giữa load_step()/_on_edit()/mọi hành động subagent+attachment; do canvas gán vào qua load_step()",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
329
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._node_id",
|
|
"kind": "attribute",
|
|
"line_display": "143",
|
|
"line_start": 143,
|
|
"line_end": 143,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "id node đang chọn — dùng để emit run_node/run_from/delete_node; là cầu nối canvas <-> property panel",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
330
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._loading",
|
|
"kind": "attribute",
|
|
"line_display": "144",
|
|
"line_start": 144,
|
|
"line_end": 144,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "cờ chặn _on_edit() chạy lại trong lúc load_step() đang set giá trị field",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
331
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.label_edit",
|
|
"kind": "attribute",
|
|
"line_display": "159",
|
|
"line_start": 159,
|
|
"line_end": 159,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
332
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.role_edit",
|
|
"kind": "attribute",
|
|
"line_display": "163",
|
|
"line_start": 163,
|
|
"line_end": 163,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
333
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.icon_edit",
|
|
"kind": "attribute",
|
|
"line_display": "170",
|
|
"line_start": 170,
|
|
"line_end": 170,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
334
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.instructions_edit",
|
|
"kind": "attribute",
|
|
"line_display": "175",
|
|
"line_start": 175,
|
|
"line_end": 175,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
335
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.gen_btn",
|
|
"kind": "attribute",
|
|
"line_display": "178",
|
|
"line_start": 178,
|
|
"line_end": 178,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "nút 'AI draft' — enable chỉ khi có ctx",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
336
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.context_edit",
|
|
"kind": "attribute",
|
|
"line_display": "192",
|
|
"line_start": 192,
|
|
"line_end": 192,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
337
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.model_combo",
|
|
"kind": "attribute",
|
|
"line_display": "201",
|
|
"line_start": 201,
|
|
"line_end": 201,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
338
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.load_models_btn",
|
|
"kind": "attribute",
|
|
"line_display": "204",
|
|
"line_start": 204,
|
|
"line_end": 204,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
339
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.perm_combo",
|
|
"kind": "attribute",
|
|
"line_display": "214",
|
|
"line_start": 214,
|
|
"line_end": 214,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
340
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.verify_chk",
|
|
"kind": "attribute",
|
|
"line_display": "221",
|
|
"line_start": 221,
|
|
"line_end": 221,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
341
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.rounds_spin",
|
|
"kind": "attribute",
|
|
"line_display": "223",
|
|
"line_start": 223,
|
|
"line_end": 223,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
342
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.skills_list",
|
|
"kind": "attribute",
|
|
"line_display": "236",
|
|
"line_start": 236,
|
|
"line_end": 236,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "checklist skill của registry, gán checked theo step.skills",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
343
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.attach_list",
|
|
"kind": "attribute",
|
|
"line_display": "242",
|
|
"line_start": 242,
|
|
"line_end": 242,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
344
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.attach_add_btn",
|
|
"kind": "attribute",
|
|
"line_display": "244",
|
|
"line_start": 244,
|
|
"line_end": 244,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
345
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.attach_del_btn",
|
|
"kind": "attribute",
|
|
"line_display": "247",
|
|
"line_start": 247,
|
|
"line_end": 247,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
346
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._parallel_card",
|
|
"kind": "attribute",
|
|
"line_display": "263",
|
|
"line_start": 263,
|
|
"line_end": 263,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "card cả section Sub-agents; load_step() ẩn/hiện toàn bộ card này theo step.is_parallel",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
347
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.sub_list",
|
|
"kind": "attribute",
|
|
"line_display": "264",
|
|
"line_start": 264,
|
|
"line_end": 264,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
348
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.sub_add_btn",
|
|
"kind": "attribute",
|
|
"line_display": "267",
|
|
"line_start": 267,
|
|
"line_end": 267,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
349
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.config",
|
|
"kind": "attribute",
|
|
"line_display": "268",
|
|
"line_start": 268,
|
|
"line_end": 268,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "StepConfigPanel + wiring changed/run_node/run_from/delete_node (dòng 268-273) — khớp vai trò mô tả cho node_property_panel.py",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
39
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.sub_del_btn",
|
|
"kind": "attribute",
|
|
"line_display": "270",
|
|
"line_start": 270,
|
|
"line_end": 270,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
350
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.run_btn",
|
|
"kind": "attribute",
|
|
"line_display": "283",
|
|
"line_start": 283,
|
|
"line_end": 283,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "click emit run_node(self._node_id)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
351
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.run_from_btn",
|
|
"kind": "attribute",
|
|
"line_display": "287",
|
|
"line_start": 287,
|
|
"line_end": 287,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "click emit run_from(self._node_id)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
352
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.del_btn",
|
|
"kind": "attribute",
|
|
"line_display": "290",
|
|
"line_start": 290,
|
|
"line_end": 290,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "click emit delete_node(self._node_id)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
353
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.load_step",
|
|
"kind": "method",
|
|
"line_display": "316-354",
|
|
"line_start": 316,
|
|
"line_end": 354,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "Điểm nối chính giữa canvas (khi chọn node) và panel thuộc tính — nhận (node_id, step, skill_names) từ ngoài rồi ghi self._step/self._node_id; đây là API mà co4e_canvas_widget.py hoặc co4e_tab.py sẽ gọi khi chọn node",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
354
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel.clear_step",
|
|
"kind": "method",
|
|
"line_display": "356-359",
|
|
"line_start": 356,
|
|
"line_end": 359,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "gọi khi bỏ chọn node — reset self._step/self._node_id",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
355
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._on_edit",
|
|
"kind": "method",
|
|
"line_display": "362-378",
|
|
"line_start": 362,
|
|
"line_end": 378,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "ghi ngược giá trị field UI vào self._step rồi emit changed() — canvas repaint + autosave phụ thuộc signal này, đổi tên/behavior ở đây ảnh hưởng cả canvas lẫn service lưu flow",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
356
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._available_agent_names",
|
|
"kind": "method",
|
|
"line_display": "380-390",
|
|
"line_start": 380,
|
|
"line_end": 390,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "staticmethod; gọi core.co4e.list_custom_agents() đọc file JSON trong AGENTS_DIR trên đĩa — logic thuần Python nhưng có I/O, có thể tách ra application layer nếu cần test không đụng đĩa",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
357
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._add_subagent",
|
|
"kind": "method",
|
|
"line_display": "392-408",
|
|
"line_start": 392,
|
|
"line_end": 408,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "dùng QInputDialog để chọn/nhập tên agent song song",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
358
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._edit_subagent",
|
|
"kind": "method",
|
|
"line_display": "410-428",
|
|
"line_start": 410,
|
|
"line_end": 428,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "double-click 1 dòng sub-agent để chọn lại agent khác",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
359
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._del_subagent",
|
|
"kind": "method",
|
|
"line_display": "430-437",
|
|
"line_start": 430,
|
|
"line_end": 437,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
360
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._add_attachment",
|
|
"kind": "method",
|
|
"line_display": "439-453",
|
|
"line_start": 439,
|
|
"line_end": 453,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "QFileDialog chỉ chọn đường dẫn hiển thị tên file, không tự đọc nội dung ở đây (nội dung được đọc lúc chạy step, ở nơi khác)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
361
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._del_attachment",
|
|
"kind": "method",
|
|
"line_display": "455-462",
|
|
"line_start": 455,
|
|
"line_end": 462,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
362
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._ai_draft",
|
|
"kind": "method",
|
|
"line_display": "464-498",
|
|
"line_start": 464,
|
|
"line_end": 498,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "gọi generate_agent_prompt(ctx.build_active_provider(), ...) qua AgentWorker — gọi network tới AI provider, chạy nền rồi cập nhật UI ở callback done(); nếu tách sang service, phần gọi AI nên chuyển xuống application layer, phần còn lại (QInputDialog + set text) ở lại đây",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
363
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._draft_worker",
|
|
"kind": "attribute",
|
|
"line_display": "497",
|
|
"line_start": 497,
|
|
"line_end": 497,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "giữ tham chiếu AgentWorker (QThread-like) để không bị GC giữa lúc job async đang chạy",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
364
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._load_models",
|
|
"kind": "method",
|
|
"line_display": "500-528",
|
|
"line_start": 500,
|
|
"line_end": 528,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": true,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "gọi preview_ai.fetch_live_models(ctx) qua AgentWorker — network call tới provider để lấy danh sách model; cắt ngang lát — cần agent gộp đối chiếu vì dòng cuối trùng đúng biên đọc được giao (528), chưa chắc thân method đã hết ở đây",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
365
|
|
]
|
|
},
|
|
{
|
|
"symbol": "StepConfigPanel._model_worker",
|
|
"kind": "attribute",
|
|
"line_display": "525",
|
|
"line_start": 525,
|
|
"line_end": 525,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "giữ tham chiếu AgentWorker của _load_models để không bị GC",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
366
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._wrap_config",
|
|
"kind": "method",
|
|
"line_display": "934-964",
|
|
"line_start": 934,
|
|
"line_end": 964,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "bọc self.config (StepConfigPanel) với header expand/collapse — khớp mô tả node_property_panel.py trong prompt.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
111
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.config_toggle_btn",
|
|
"kind": "attribute",
|
|
"line_display": "946",
|
|
"line_start": 946,
|
|
"line_end": 946,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
112
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.config_title",
|
|
"kind": "attribute",
|
|
"line_display": "951",
|
|
"line_start": 951,
|
|
"line_end": 951,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
113
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._cfg_vlayout",
|
|
"kind": "attribute",
|
|
"line_display": "957",
|
|
"line_start": 957,
|
|
"line_end": 957,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "dùng lại trong _toggle_config (co4e_tab.py) — trạng thái chia sẻ.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
114
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._cfg_top_spacer",
|
|
"kind": "attribute",
|
|
"line_display": "961",
|
|
"line_start": 961,
|
|
"line_end": 961,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "QSpacerItem — kiểu giá trị layout, không cần QApplication đang sống.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
115
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._cfg_bot_spacer",
|
|
"kind": "attribute",
|
|
"line_display": "962",
|
|
"line_start": 962,
|
|
"line_end": 962,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
116
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab.config_container",
|
|
"kind": "attribute",
|
|
"line_display": "963",
|
|
"line_start": 963,
|
|
"line_end": 963,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "dùng lại bởi _toggle_config (co4e_tab.py) — trạng thái chia sẻ giữa node_property_panel.py và co4e_tab.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
117
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_node_selected",
|
|
"kind": "method",
|
|
"line_display": "1325-1331",
|
|
"line_start": 1325,
|
|
"line_end": 1331,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "khớp mô tả 'nối chọn node sang panel thuộc tính' trong prompt. Đọc self.canvas.nodes() và self.config, toggle self._config_collapsed (trạng thái chia sẻ với _toggle_config ở co4e_tab.py).",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
164
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._on_config_changed",
|
|
"kind": "method",
|
|
"line_display": "1333-1336",
|
|
"line_start": 1333,
|
|
"line_end": 1336,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/node_property_panel.py",
|
|
"note": "gọi self.canvas.refresh_node cho từng node rồi self._autosave() — cầu nối property panel ↔ canvas ↔ service lưu đĩa.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
165
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._manage_skills",
|
|
"kind": "method",
|
|
"line_display": "1369-1373",
|
|
"line_start": 1369,
|
|
"line_end": 1373,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "presentation/co4e/skills_list_panel.py",
|
|
"note": "mở SkillsDialog rồi self._reload_sidebar() — không có tên tương ứng trực tiếp trong bảng plan.md, tự xếp theo mô tả skills_list_panel.py.",
|
|
"in_old_table": "co",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
170
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_PaletteList",
|
|
"kind": "class",
|
|
"line_display": "97-119",
|
|
"line_start": 97,
|
|
"line_end": 119,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "list kéo-thả dùng chung cho wf_list và agent_list, phát payload CO4E_MIME hiểu bởi canvas — không rõ nên đặt ở co4e_tab.py (nơi dùng) hay co4e_canvas_widget.py (định nghĩa giao thức CO4E_MIME)",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
8
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_PaletteList.__init__",
|
|
"kind": "method",
|
|
"line_display": "102-106",
|
|
"line_start": 102,
|
|
"line_end": 106,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "cùng lý do với class _PaletteList",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
9
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_PaletteList._payload_role",
|
|
"kind": "attribute",
|
|
"line_display": "104",
|
|
"line_start": 104,
|
|
"line_end": 104,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "cùng lý do với class _PaletteList",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
10
|
|
]
|
|
},
|
|
{
|
|
"symbol": "_PaletteList.startDrag",
|
|
"kind": "method",
|
|
"line_display": "108-119",
|
|
"line_start": 108,
|
|
"line_end": 119,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "cùng lý do với class _PaletteList; dùng CO4E_MIME từ co4e_canvas",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
11
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._project_id",
|
|
"kind": "attribute",
|
|
"line_display": "249",
|
|
"line_start": 249,
|
|
"line_end": 249,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "project Workspace đang chọn, ảnh hưởng đường dẫn output flow — không chắc thuộc container hay run control",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
31
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._project_dir",
|
|
"kind": "attribute",
|
|
"line_display": "250",
|
|
"line_start": 250,
|
|
"line_end": 250,
|
|
"needs_qt_widget": false,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "cùng lý do với _project_id",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
32
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._reflect_active_run",
|
|
"kind": "method",
|
|
"line_display": "449-457",
|
|
"line_start": 449,
|
|
"line_end": 457,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "cầu nối giữa self.manager (run control) và self.canvas (canvas widget) — không chắc nên đặt file nào",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
52
|
|
]
|
|
},
|
|
{
|
|
"symbol": "Co4ETab._palette_item",
|
|
"kind": "method",
|
|
"line_display": "724-728",
|
|
"line_start": 724,
|
|
"line_end": 728,
|
|
"needs_qt_widget": true,
|
|
"touches_disk_or_network": false,
|
|
"target_file": "unsure",
|
|
"note": "staticmethod helper dùng chung để tạo QListWidgetItem cho cả agent_list, skill_list, và cả node palette sequential/parallel (thấy dùng ở dòng 701-704) — không rõ nên đặt ở agent_list_panel.py, skills_list_panel.py hay co4e_canvas_widget.py.",
|
|
"in_old_table": "chua/khong ro",
|
|
"old_table_mismatch": "-",
|
|
"merged_from_raw_indices": [
|
|
87
|
|
]
|
|
}
|
|
]
|
|
} |