The merge keeps dev/koko patrol-delete asset fallback behavior while accepting the latest master feature work. Conflicts were limited to ignore rules, local environment/config artifacts, tracked pycache binaries, and the Flask main blueprint.
Constraint: master and dev/koko both edited app/blueprints/main.py around brand and asset serving
Rejected: Drop dev/koko asset fallback logic | patrol delete and rebuilt Vite assets still need hashed asset resolution across app/new_web_source locations
Confidence: medium
Scope-risk: broad
Directive: app/.env remains a tracked local-config file in this repository; do not print or normalize secrets during conflict handling
Tested: uv run python -m py_compile blueprints\\main.py amazon\\base.py amazon\\main.py
Tested: uv run --group dev pytest tests\\test_amazon_base.py tests\\test_patrol_delete.py
Not-tested: Full backend-java/frontend-vue test suites
The patrol-delete flow now waits for country and listing-status controls before acting, uses the dedicated PatrolDeleteTask entry point, and includes the browser helper scripts required by the bulk-delete path. Tests cover delayed dropdown readiness, payload rejection/retry behavior, complete-draft normalization, filtered bulk deletion, and asset fallback lookup.
Constraint: Amazon listing UI exposes status controls through dynamic KAT components and delayed option rendering
Rejected: Keep row-by-row delete flow | bulk selection is the current implemented path and is covered by the added helper scripts
Confidence: high
Scope-risk: moderate
Directive: Do not remove the patrol_delete JS helper files without checking app/amazon/patrol_delete.py script loading
Tested: uv run --group dev pytest tests\\test_amazon_base.py tests\\test_patrol_delete.py
Tested: uv run python -m py_compile amazon\\base.py amazon\\main.py blueprints\\main.py
Not-tested: Real Amazon Seller Central browser session
Patrol delete can spend a long time switching countries, reading listing states, and confirming deletes, so the flow now emits concise progress logs around each high-value step. The logs avoid full DOM dumps outside existing diagnostics and focus on task, shop, country, status, deletion counts, and callback boundaries.
Constraint: Existing patrol delete runs are browser-driven and need observable progress without changing deletion behavior
Rejected: Log every DOM probe | too noisy for routine task monitoring
Confidence: high
Scope-risk: narrow
Tested: uv run --group dev pytest tests\\test_patrol_delete.py
Tested: uv run --group dev ruff check amazon\\patrol_delete.py
Tested: uv run python -m py_compile amazon\\patrol_delete.py
Not-tested: Live Seller Central browser run
Keep the patrol deletion test module aligned with the renamed patrol_delete implementation and update test function names so future searches no longer point at the old product module name.
Constraint: This is a naming-only follow-up to the patrol_delete module rename
Confidence: high
Scope-risk: narrow
Tested: uv run pytest tests/test_patrol_delete.py
Rename the patrol deletion implementation and browser helper scripts away from the generic product name so the filesystem matches the queued patrol-delete task domain. Update imports, script loading, and tests to use the patrol_delete module path.
Constraint: Existing task class remains ProductTask to avoid broad API churn beyond the requested file and script naming
Rejected: Rename ProductTask class now | would expand the change into a larger API update across tests and task dispatch
Confidence: high
Scope-risk: narrow
Directive: Keep patrol-delete script paths under app/amazon/scripts/patrol_delete when adding new helper scripts
Tested: uv run pytest tests/test_product.py
Not-tested: Remote push before this commit due previous SSH publickey failure
Merge origin/master into dev/koko while preserving the patrol delete task added on dev/koko. The task dispatcher now recognizes both patrol deletion and appearance patent collection, and the master-side SpiderTask implementation is included.
Constraint: origin fetch and push over SSH are blocked in this environment by Gitee publickey authentication
Rejected: Overwrite dev/koko with master | would drop the patrol delete branch work
Confidence: medium
Scope-risk: moderate
Directive: Do not remove either patrol-delete-run or appearance-patent-run without checking queued task producers
Tested: python -m py_compile app/amazon/approve.py app/amazon/asin_status.py app/amazon/detail_spider.py app/amazon/main.py app/amazon/match_action.py app/amazon/price_match.py
Not-tested: Remote push, blocked by SSH publickey authentication
Update the README so new contributors start from the latest patrol-delete automation flow instead of treating delete-brand as the primary example. Keep the older delete-brand path as contrast for the file-driven workflow.
Constraint: Recent repository changes made patrol-delete the newest automation module, so the onboarding example needed to match current development reality
Rejected: Leave delete-brand as the primary example | would mislead readers about the latest automation entry point
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Revisit this section when a newer automation module replaces patrol-delete as the primary example
Tested: README diff review
Not-tested: lint, typecheck, unit/integration tests not run (documentation-only change)
new file: "brand - \345\211\257\346\234\254.html"
new file: "brand-\346\227\247.html"
new file: brand.html
new file: home.html
new file: index.html
new file: login.html
Add a root README that explains the active runtime layers and onboarding path, and keep local OMX session state out of version control so developer tooling does not interfere with pulls.
Constraint: Local OMX state is developer-specific and should not block branch sync or appear in shared history
Rejected: Keep onboarding notes untracked | easy to lose and hard to share with the team
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Keep the README aligned with the active app/backend-java/frontend-vue execution path; revisit if the runtime architecture changes
Tested: git diff review; git status after staging
Not-tested: lint, typecheck, unit/integration tests not run (docs and ignore rules only)
new file: update/PyQt5/Qt5/.keep_dir.txt
new file: update/PyQt5/QtCore.pyd
new file: update/PyQt5/QtGui.pyd
new file: update/PyQt5/QtWidgets.pyd
new file: update/PyQt5/qt-plugins/iconengines/qsvgicon.dll
new file: update/PyQt5/qt-plugins/imageformats/qgif.dll
new file: update/PyQt5/qt-plugins/imageformats/qicns.dll
new file: update/PyQt5/qt-plugins/imageformats/qico.dll
new file: update/PyQt5/qt-plugins/imageformats/qjpeg.dll
new file: update/PyQt5/qt-plugins/imageformats/qsvg.dll
new file: update/PyQt5/qt-plugins/imageformats/qtga.dll
new file: update/PyQt5/qt-plugins/imageformats/qtiff.dll
new file: update/PyQt5/qt-plugins/imageformats/qwbmp.dll
new file: update/PyQt5/qt-plugins/imageformats/qwebp.dll
new file: update/PyQt5/qt-plugins/mediaservice/dsengine.dll
new file: update/PyQt5/qt-plugins/mediaservice/qtmedia_audioengine.dll
new file: update/PyQt5/qt-plugins/mediaservice/wmfengine.dll
new file: update/PyQt5/qt-plugins/platforms/qminimal.dll
new file: update/PyQt5/qt-plugins/platforms/qoffscreen.dll
new file: update/PyQt5/qt-plugins/platforms/qwebgl.dll
new file: update/PyQt5/qt-plugins/platforms/qwindows.dll
new file: update/PyQt5/qt-plugins/platformthemes/qxdgdesktopportal.dll
new file: update/PyQt5/qt-plugins/printsupport/windowsprintersupport.dll
new file: update/PyQt5/qt-plugins/styles/qwindowsvistastyle.dll
new file: update/PyQt5/sip.pyd
new file: update/_bz2.pyd
new file: update/_ctypes.pyd
new file: update/_decimal.pyd
new file: update/_elementtree.pyd
new file: update/_hashlib.pyd
new file: update/_hashlib.zip
new file: update/_lzma.pyd
new file: update/_socket.pyd
new file: update/libcrypto-1_1-x64.dll
new file: update/libeay32.dll
new file: update/libffi-7.dll
new file: update/msvcp140.dll
new file: update/msvcp140_1.dll
new file: update/psutil/_psutil_windows.pyd
new file: update/pyexpat.pyd
new file: update/python3.dll
new file: update/python39.dll
new file: update/qt5core.dll
new file: update/qt5dbus.dll
new file: update/qt5gui.dll
new file: update/qt5multimedia.dll
new file: update/qt5network.dll
new file: update/qt5printsupport.dll
new file: update/qt5qml.dll
new file: update/qt5qmlmodels.dll
new file: update/qt5quick.dll
new file: update/qt5svg.dll
new file: update/qt5websockets.dll
new file: update/qt5widgets.dll
new file: update/select.pyd
new file: update/ssleay32.dll
new file: update/unicodedata.pyd
new file: update/update.exe
new file: update/vcruntime140.dll
new file: update/vcruntime140_1.dll