281 lines
12 KiB
JSON
281 lines
12 KiB
JSON
{
|
|
"version": "pchome_growth_program_review_v1",
|
|
"generated_at": "2026-07-11T12:00:00+08:00",
|
|
"supersedes_status_only_completion": true,
|
|
"goal": "以新鮮 PChome 業績、可信跨平台同款資料與可歸因動作持續提升業績",
|
|
"production_baseline": {
|
|
"runtime_source_sha": "b4284693e4a86057e24daa3aa2fb3494f046edae",
|
|
"runtime_version": "V10.773",
|
|
"latest_sales_date": "2026-06-24",
|
|
"sales_age_days": 16,
|
|
"catalog_product_count": 13032,
|
|
"catalog_products_with_external_offer": 35,
|
|
"catalog_external_offer_coverage_pct": 0.27,
|
|
"top_opportunity_count": 20,
|
|
"top_opportunity_actionable_mapped_count": 5,
|
|
"top_opportunity_mapping_rate_pct": 25.0,
|
|
"external_offer_sources_with_verified_rows": [
|
|
"momo_reference"
|
|
],
|
|
"verified_external_offer_count": 473,
|
|
"verified_external_product_count": 394,
|
|
"runtime_mcp_router_enabled": false,
|
|
"runtime_rag_enabled": false
|
|
},
|
|
"implementation_receipt": {
|
|
"feature_source_sha": "b8cc27e4c4ae8cc6a649bc04451b7e94d0611bef",
|
|
"dev_integration_sha": "107d8ed",
|
|
"runtime_version": "V10.775",
|
|
"deployment_mode": "controlled_sync_with_targeted_rollback_archive",
|
|
"gitea_cd_run": 1098,
|
|
"gitea_cd_status": "waiting_runner_unavailable",
|
|
"application_containers_healthy": 3,
|
|
"database_container_recreated": false,
|
|
"latest_sales_date": "2026-06-24",
|
|
"sales_decision_ready": false,
|
|
"valid_catalog_mapping_count": 31,
|
|
"valid_catalog_mapping_rate_pct": 0.24,
|
|
"runtime_platforms_with_data": 1,
|
|
"catchup_result": {
|
|
"scanned": 8,
|
|
"candidates": 3,
|
|
"auto_accepted": 0,
|
|
"written": 0,
|
|
"review_candidates": 3,
|
|
"next_due": "cooldown_4.0h"
|
|
}
|
|
},
|
|
"codebase_findings": {
|
|
"relevant_file_count_approx": 250,
|
|
"market_intel_module_count": 140,
|
|
"market_intel_line_count": 53988,
|
|
"mapping_backlog_service_line_count": 44888,
|
|
"mapping_backlog_service_function_count": 297,
|
|
"mapping_backlog_gate_marker_count": 1317,
|
|
"ai_routes_pchome_growth_route_count": 96,
|
|
"primary_root_causes": [
|
|
"status and gate accumulation is much larger than the production data and action loop",
|
|
"sales import polls Google Drive but does not acquire the report from the authorized upstream",
|
|
"external source seeds overwrote runtime activation on every sync",
|
|
"revenue scoring only selected momo_reference even when other normalized offers existed",
|
|
"daily mapping backfill could be missed for a full day after a late container restart",
|
|
"the first viewport did not block decisions when sales data was stale",
|
|
"the source UI expanded every paused platform into a text-heavy card"
|
|
]
|
|
},
|
|
"work_items": [
|
|
{
|
|
"order": 1,
|
|
"id": "PCH-GROWTH-P0-001",
|
|
"priority": "P0",
|
|
"status": "in_progress",
|
|
"lane": "authorized_sales_acquisition",
|
|
"objective": "Automatically acquire and import the latest PChome sales report",
|
|
"completed": [
|
|
"Google Drive polling and import",
|
|
"authorized HTTPS, IMAP and controlled local-drop provider implementation",
|
|
"SHA-256 source idempotency",
|
|
"atomic two-table replace with rollback",
|
|
"same-run source, policy, execution and freshness receipt",
|
|
"post-import table verification",
|
|
"staleness detection",
|
|
"compact source-readiness cockpit"
|
|
],
|
|
"remaining": [
|
|
"configure at least one production authorized upstream export provider",
|
|
"receive and import a report dated within one day in production"
|
|
],
|
|
"production_acceptance": "latest sales age <= 1 day and decision_ready=true"
|
|
},
|
|
{
|
|
"order": 2,
|
|
"id": "PCH-GROWTH-P0-002",
|
|
"priority": "P0",
|
|
"status": "in_progress",
|
|
"lane": "product_identity_graph",
|
|
"objective": "Map the PChome catalog to verified same-product offers across platforms",
|
|
"completed": [
|
|
"MOMO exact and unit-price evidence model",
|
|
"quality and variant gates",
|
|
"bounded high-sales backfill"
|
|
],
|
|
"remaining": [
|
|
"raise full-catalog coverage from 0.27%",
|
|
"brand, GTIN, MPN, model, size, count, color and seller identity graph",
|
|
"automatic replay for unresolved high-sales products"
|
|
],
|
|
"production_acceptance": "top revenue 80% weighted catalog coverage >= 90%"
|
|
},
|
|
{
|
|
"order": 3,
|
|
"id": "PCH-GROWTH-P0-003",
|
|
"priority": "P0",
|
|
"status": "in_progress",
|
|
"lane": "lawful_multiplatform_acquisition",
|
|
"objective": "Continuously acquire normalized offer evidence from relevant commerce platforms",
|
|
"completed": [
|
|
"15-source governed registry",
|
|
"MOMO normalized offers",
|
|
"PixelRAG evidence lane with blocked-page classification",
|
|
"Yahoo, ETMall and friDay public capture feasibility proof"
|
|
],
|
|
"remaining": [
|
|
"authorized or structured-data adapters for Yahoo, ETMall and friDay",
|
|
"Shopee authorized feed or seller API adapter",
|
|
"Coupang official API eligibility and 403 backoff path",
|
|
"Google Merchant price competitiveness and market insights eligibility",
|
|
"Rakuten retry and backoff adapter",
|
|
"Ruten and LINE Shopping feed contracts"
|
|
],
|
|
"production_acceptance": "each active source has source receipt, normalized offers, verifier and freshness SLO"
|
|
},
|
|
{
|
|
"order": 4,
|
|
"id": "PCH-GROWTH-P0-004",
|
|
"priority": "P0",
|
|
"status": "runtime_deployed_dependency_blocked",
|
|
"lane": "cross_platform_revenue_decision",
|
|
"objective": "Compare every qualified platform offer without letting blocked or observational evidence drive price actions",
|
|
"completed": [
|
|
"multi-source latest-offer selection",
|
|
"runtime source-policy enforcement",
|
|
"observation-only evidence separation",
|
|
"sales freshness decision gate",
|
|
"catalog and platform coverage metrics",
|
|
"Gitea main and dev integration",
|
|
"production V10.775 service-layer readback",
|
|
"bounded mapping catch-up receipt"
|
|
],
|
|
"remaining": [
|
|
"production multi-source offer ingestion"
|
|
],
|
|
"production_acceptance": "fresh sales plus at least two enabled verified platforms produce replayable decisions"
|
|
},
|
|
{
|
|
"order": 5,
|
|
"id": "PCH-GROWTH-P0-005",
|
|
"priority": "P0",
|
|
"status": "not_started",
|
|
"lane": "growth_action_and_attribution",
|
|
"objective": "Turn recommendations into bounded price, promotion, content and exposure experiments and measure incremental revenue",
|
|
"completed": [],
|
|
"remaining": [
|
|
"action contract and authorized PChome write adapter",
|
|
"holdout or matched-control experiment design",
|
|
"margin, stock and MAP policy guard",
|
|
"post-action conversion and incremental revenue verifier",
|
|
"automatic rollback and cooldown"
|
|
],
|
|
"production_acceptance": "same run closes decide, apply, verify, attribute and learn with rollback evidence"
|
|
},
|
|
{
|
|
"order": 6,
|
|
"id": "PCH-GROWTH-P0-006",
|
|
"priority": "P0",
|
|
"status": "blocked_with_safe_next_action",
|
|
"lane": "release_automation",
|
|
"objective": "Restore deterministic Gitea CD so every accepted main commit reaches production with independent verification",
|
|
"completed": [
|
|
"Gitea main and dev source truth",
|
|
"controlled sync fallback with targeted rollback archive",
|
|
"production health, container and service-layer readback"
|
|
],
|
|
"remaining": [
|
|
"restore a registered runner with the ewoooc-host label",
|
|
"run the latest main CD to Success",
|
|
"persist source SHA, runtime version and post-deploy verifier as one durable deploy receipt"
|
|
],
|
|
"production_acceptance": "latest main CD succeeds without manual file sync and production readback matches the deployed source SHA"
|
|
},
|
|
{
|
|
"order": 7,
|
|
"id": "PCH-GROWTH-P1-001",
|
|
"priority": "P1",
|
|
"status": "runtime_deployed_visible_auth_pending",
|
|
"lane": "professional_ui_ux",
|
|
"objective": "Provide a compact decision cockpit instead of a status and text wall",
|
|
"completed": [
|
|
"freshness-first next action",
|
|
"multi-platform terminology",
|
|
"real coverage metrics",
|
|
"collapsed pending-source summary",
|
|
"removed fake sales sparkline",
|
|
"desktop and 390px mobile visual verification without horizontal overflow",
|
|
"repaired the circular accent-token fallback that made primary buttons unreadable",
|
|
"production V10.775 static asset readback",
|
|
"sales automation first-viewport cockpit",
|
|
"four-source readiness and runtime-closure readback",
|
|
"manual upload removed from the primary workflow",
|
|
"six-column verified-run history"
|
|
],
|
|
"remaining": [
|
|
"production V10.776 visible readback",
|
|
"per-product cross-platform offer drawer and experiment outcome view"
|
|
],
|
|
"production_acceptance": "first viewport shows freshness, revenue trend, coverage, risk and one executable next action without overflow"
|
|
},
|
|
{
|
|
"order": 8,
|
|
"id": "PCH-GROWTH-P1-002",
|
|
"priority": "P1",
|
|
"status": "in_progress",
|
|
"lane": "ai_mcp_rag_runtime",
|
|
"objective": "Use Ollama-first agents, MCP and RAG to automate retrieval, matching, validation and learning",
|
|
"completed": [
|
|
"internal MCP and RAG inventory",
|
|
"PixelRAG receipts and capture manifests",
|
|
"text RAG service implementation"
|
|
],
|
|
"remaining": [
|
|
"enable and verify MCP router runtime",
|
|
"enable and verify RAG runtime",
|
|
"Qwen3-VL Ollama-first visual replay",
|
|
"PixelRAG receipt to RAG candidate replay",
|
|
"restore GCP-A direct runtime and 110 primary proxy",
|
|
"recover GCP-B bge-m3 embedding latency below the 30 second verifier SLO",
|
|
"restore or formally retire the unreachable 111 fallback route",
|
|
"agent outcome metrics and durable learning acknowledgement"
|
|
],
|
|
"production_acceptance": "runtime flags enabled and same-run retrieval-to-decision receipts pass independent replay"
|
|
},
|
|
{
|
|
"order": 9,
|
|
"id": "PCH-GROWTH-P1-003",
|
|
"priority": "P1",
|
|
"status": "in_progress",
|
|
"lane": "security_and_governance_automation",
|
|
"objective": "Apply risk-based controlled execution with asset, policy, verifier, rollback and learning coverage",
|
|
"completed": [
|
|
"source and runtime review artifacts",
|
|
"read-only visual evidence boundary",
|
|
"production DB lifecycle red lines",
|
|
"OpenTelemetry-compatible trace_id and span_id plus run_id and work_item_id envelope for sales acquisition",
|
|
"medium-risk controlled apply without legacy HITL terminal",
|
|
"durable acquisition receipt and atomic rollback verifier"
|
|
],
|
|
"remaining": [
|
|
"replace preview-only gate chains with executable work items",
|
|
"SBOM and dependency policy enforcement",
|
|
"automated drift work item creation",
|
|
"security control coverage and production closure metrics"
|
|
],
|
|
"production_acceptance": "low, medium and high actions close automatically under policy; only critical actions require break-glass"
|
|
}
|
|
],
|
|
"source_strategy": {
|
|
"priority_order": [
|
|
"official or explicitly authorized API and feed",
|
|
"public structured product data that permits access",
|
|
"PixelRAG visual evidence with OCR or VLM replay",
|
|
"blocked-page classification, backoff and alternate source"
|
|
],
|
|
"hard_rules": [
|
|
"never bypass anti-bot controls",
|
|
"never treat a blocked page as product evidence",
|
|
"never write PixelRAG-only prices into the formal price table",
|
|
"never allow a paused or disabled source to drive a pricing action",
|
|
"never execute a sales action with stale PChome sales data"
|
|
]
|
|
}
|
|
}
|