تخطَّ إلى المحتوى
- refactor(analytics): :truck: move rollup documents out of the api layer (#708)
- feat(checkout): :sparkles: guard checkout against charging more than quoted
- fix(open-api): :white_check_mark: publish Media in the gRPC OpenAPI test so the 64-bit assertion runs
- fix(subscription): :white_check_mark: pin PARTNER_MEDIA_API into the platform pricing rate card test
- docs: :wrench: added tech comments
- docs(scripts): :memo: record partner media Metronome runs across all three accounts (#696)
- feat(analytics): :sparkles: cache assembled chart responses in the consumer facades (#702)
- feat(analytics): :sparkles: incremental rollup writer with watermarks, lease, and backfill endpoint (#700)
- feat(analytics): :sparkles: rollup document schema for booking, link, and API usage time series (#699)
- feat(analytics): :sparkles: route chart and usage reads to the rollup collections behind a flag (#701)
- feat(media): env/account CDN folders, asset metadata standard, migration suite (#695)
- feat(partner): partner media retrieval API with per-hotel metering (#693)
- fix(analytics): :bug: accept the staging analytics database name in the rollup index script (#705)
- fix(analytics): :bug: repair grouped-chart group keys, projection copy-paste bugs, and quadratic gap-fill (#698)
- fix(booking): cap Stripe refunds at the PaymentIntent’s remaining refundable amount (#694)
- fix(pricing-view): :bug: compare EFFECTIVE currency in the shadow snapshot diff (#697)
- fix(scripts): :bug: eviction reminder printed prod for staging-target hotels (#706)
- fix(scripts): :bug: harden media-migration suite from live-run findings (#704)
- fix(channel-manager): :bug: stamp the property currency on eZee rate pushes (#689)
- fix(rate): :bug: floor quantity at 0 and repair the 30 negative rows (#690)
- fix(scripts): :bug: repair negative VariableCharge.fixedAmount, the last bad-data class (#692)
- fix(web): :bug: stop reporting client errors to Sentry (#691)
- fix(web): :bug: unwrap CompletionException so async 4xx are not served as 500 (#688)
- fix(pricing-view): :bug: fall back to the room-type base-rate currency instead of skipping the hotel (#687)
- fix(build): :wrench: scope MaxDirectMemorySize per app — it is taken off the heap (#685)
- fix(pricing-view): :bug: keep the full master-rate set on the availableOnly=false path (#684)
- feat(payment): :sparkles: process stripe booking webhook synchronously and fail loud so stripe retries (#681)
- feat(pricing-view): :chart_with_upwards_trend: emit shadow denominators and count distinct drifting hotels (#683)
- fix(pricing-view): :building_construction: move @Document PricingView out of the api layer (#682)
- feat(monitoring): :chart_with_upwards_trend: Micrometer -> Google Cloud Monitoring export (allow-listed) (#679)
- feat(pricing-view): nightly-grain pricing read model + maintenance pipeline (#675)
- feat(pricing-view): view-backed pricing gateway with shadow mode (#677)
- fix(pricing-view): rewrite staleness gate as digest-drift convergence probe (#680)
- fix(scripts): repair legacy VariableCharge percent scale + negative occupancy (#678)
- perf(pricing): batch pricing N+1s, cache hot lookups, response-cache /inventory/period (#674)
- refactor(computed): PricingDataGateway seam — split pricing data fetch from pricing math (#676)
- feat(open-api): document the gRPC surface by generating OpenAPI from protobuf descriptors (#669)
- feat(partner): first business gRPC endpoint — destination autocomplete + lookup contract trim (#666)
- feat(partner): migrate GetLookup and establish the Stripe-style expand convention (#668)
- feat(property-aggregate): collapse 8 per-dimension scores into one demand score (#667)
- perf(inventory): harden the inventory/period endpoint
- perf(inventory): make the supplier-aggregate city search index-usable (#670)
- perf(rate): bulk portal edits, bounded retries, processedEvents guard, index audit (#672)
- perf(rate): flatten the rooted-$or daily-rate query into one cacheable shape (#671)