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
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
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