0000000000000000000000000000000000000000 adec54b905fceb3a612695ce265a2d4ad0b3397c Pain <mirsixabcf2@gmail.com> 1788166300 +0700	branch: Created from HEAD
adec54b905fceb3a612695ce265a2d4ad0b3397c 82a1c37ecd137698b829aa01921bc76113701b2b Pain <mirsixabcf2@gmail.com> 1788231939 +0700	commit: feat(erp): mass refactoring to modular monolith architecture with CQRS and Event Bus (Deep 6 Completed)
82a1c37ecd137698b829aa01921bc76113701b2b bbaf371f9f50d3e6e2132c8e26cec0ed06cbb674 Pain <mirsixabcf2@gmail.com> 1789318856 +0700	commit: feat(ops): add production dockerization and GCE deployment scripts
bbaf371f9f50d3e6e2132c8e26cec0ed06cbb674 03d870f875a1555b63f24c061ef6df125db971d5 Pain <mirsixabcf2@gmail.com> 1789318912 +0700	commit: fix(ops): add smart fallback for private repository authentication in deploy_gce.sh
03d870f875a1555b63f24c061ef6df125db971d5 a72faace7aa1f489d7fac0e097738265233e493f Pain <mirsixabcf2@gmail.com> 1790333089 +0800	refactor(arch): Phase 1+2 — Fix test, clean root, deduplicate routes
a72faace7aa1f489d7fac0e097738265233e493f 3aff09ef25d3e81f77cf3f562c906080552d4d76 Pain <mirsixabcf2@gmail.com> 1790333705 +0800	refactor(arch): Phase 3 — Domain Ports & Dependency Inversion for projects + financial
3aff09ef25d3e81f77cf3f562c906080552d4d76 a865565ff1c2c95dd8598319f84a50e84f9fd1a1 Pain <mirsixabcf2@gmail.com> 1790336740 +0800	refactor(arch): Phase 4 — Eliminate 100% Raw SQL from Presentation Layer (Rule 6)
a865565ff1c2c95dd8598319f84a50e84f9fd1a1 1605d3526ef9e67b811c3ce6043160ff65777a2a Pain <mirsixabcf2@gmail.com> 1790336934 +0800	refactor(ui): Phase 5 — Core Frontend Shared Libraries & Cache Buster Bump to v=4.1.0
1605d3526ef9e67b811c3ce6043160ff65777a2a 70b239bd23097f4ea5425173bfa285fe17022c3e Pain <mirsixabcf2@gmail.com> 1790361903 +0800	refactor(arch): Phase 6 — GDT Network Isolation & Hexagonal Adapter Refactoring (Rule 6)
70b239bd23097f4ea5425173bfa285fe17022c3e 801e7e6d72ecaaa842622b3d89ef38fe23558123 Pain <mirsixabcf2@gmail.com> 1790362373 +0800	refactor(ui): Phase 5 — Monolithic HTML Script Extraction (10,262 lines decoupled)
801e7e6d72ecaaa842622b3d89ef38fe23558123 aea2ac8d7a3eb13fbbddd1a6b10fa4defe74bce2 Pain <mirsixabcf2@gmail.com> 1790363612 +0700	commit: refactor(frontend): decompose monolithic files into modular components <= 800 lines
aea2ac8d7a3eb13fbbddd1a6b10fa4defe74bce2 dff4e1e3a5c3f6b67e5b4594e3663e3edbbdce17 Pain <mirsixabcf2@gmail.com> 1790832172 +0700	commit: feat(ai): switch primary model from gemini-3.8-flash to gpt-oss-120b (Antigravity SDK)
dff4e1e3a5c3f6b67e5b4594e3663e3edbbdce17 98106aad4416b14664050d5ae140fbb8d1361054 Pain <mirsixabcf2@gmail.com> 1790900463 +0700	commit: feat(ai): switch primary captcha solver to openrouter/gemini-2.5-flash
98106aad4416b14664050d5ae140fbb8d1361054 8b95304af949532dffa49c05a58c292f85cf4557 Pain <mirsixabcf2@gmail.com> 1791010095 +0700	commit: fix(invoices): multi-model captcha consensus + Vietnam time in sync alerts
8b95304af949532dffa49c05a58c292f85cf4557 2fc098c6aa562f27707417dfeff1295446d85294 Pain <mirsixabcf2@gmail.com> 1791102083 +0700	commit: fix(invoices/gdt): captcha refresh hit modal-close button; denoise SVG + length-constrained consensus; ai_error no longer trips circuit breaker
2fc098c6aa562f27707417dfeff1295446d85294 fa9a40baee17042c9aadd323f6598e121caa2fb9 Pain <mirsixabcf2@gmail.com> 1791173687 +0700	commit: fix(logging): configure app logging so INFO logs reach docker logs (VN time), scheduler log lines in GMT+7
fa9a40baee17042c9aadd323f6598e121caa2fb9 9c87ff70e8ec6a642000f656db8e83b41511e354 Pain <mirsixabcf2@gmail.com> 1791180233 +0700	commit: feat(ong-den): rebuild estimate from appraised TD workbook + BIM source-grounding tests
