Skip to content

Legacy UI Business Logic Gap Mining

This pass compares source-refs/sanmopia-admin, source-refs/sanmopia-manager, source-refs/sanmopia_web, and source-refs/sanmopia-user-old against the modern docs/backend. The source UI is evidence only. Target behavior must be expressed as backend-owned domain policy, application commands, or versioned read models.

Target capabilityGap typeSource evidenceBackend migration obligation
CustomerReservationListBucketProjectionUnder-modeledsource-refs/sanmopia-user-old/src/design-system/ui-kit/templates/TemplateReservationList.astro:26-29, source-refs/sanmopia-user-old/src/design-system/ui-kit/islands/ReservationTabIsland.tsx:57-80Reservation list membership must be a backend projection with bucket code, lifecycle stage, disabled/new-reservation blockers, and source-status catalog version. UI must not parse card dataset status ids or maintain separate proceeding/completed arrays.
CustomerPaymentActionProjectionUnder-modeledsource-refs/sanmopia-user-old/src/design-system/ui-kit/organisms/ReservationPaymentInfo.astro:22-80, source-refs/sanmopia_web/application/views/modal/modal_change_payment.php:3-25Payment, payment-change, deposit-confirm, and receipt actions need one backend projection with action id, purpose, amount authority, source payment product plan, eligible method, disabled reason, and idempotency scope. UI must not select actions from Korean payment labels, 미지급/지급 strings, or local coupon/pre-reservation arithmetic.
GiftCouponPurchaseCloseoutProjectionPartialsource-refs/sanmopia_web/static/js/shop_gift.js:8, source-refs/sanmopia_web/static/js/shop_gift.js:92-128, source-refs/sanmopia_web/application/views/shop/coupon_order.php:47-158, source-refs/sanmopia_web/application/controllers/api/Payment.php:223-303, source-refs/sanmopia_web/application/controllers/api/Kcp.php:18-101, source-refs/sanmopia_web/application/models/Payment_model.php:283-324, source-refs/sanmopia_web/application/models/Payment_model.php:707-728Gift-coupon price bounds, selected offer code, buyer/receiver authority, KCP/Kill Bill route, payment closeout, phone-based recipient registration, entitlement issuance, resend, and settlement effect must be backend projections/commands. UI must not own custom-price, data-price, minimum price, receiver mutation, or paid amount logic.
CustomerReceiptAccessProjectionPartialsource-refs/sanmopia-user-old/src/design-system/ui-kit/molecules/ReceiptButtonGroup.astro:22-89, source-refs/sanmopia-user-old/src/data/mock/reservation.ts:900-1019Backend now has the CustomerReceiptTaxEvidenceArtifact foundation for cash-receipt tax evidence (d247aba) and visibility policy (e5a1571): provider order ids, provider payment refs, and transaction refs stay backend-only while customer-visible masked identity, approval number, tax purpose, ledger revision, field profile, denial reason, reservation/customer/branch match, and source evidence keys are backend-owned. Remaining access work must still separate old voucher deposit/balance receipts, new single customer-share receipt, normal deposit receipt, refunded receipt visibility, disabled reasons, and public handoff refs.
CustomerDocumentAvailabilityProjectionPartialsource-refs/sanmopia-user-old/src/design-system/ui-kit/molecules/DocumentList.astro:23-46, source-refs/sanmopia-user-old/src/data/mock/reservation.ts:683-879Document catalog must return document kind, template version, readiness, missing reasons, access grant state, and eligibility reason for end-notice/stopped-service cases. UI must not compare numeric document type ids, status 13, end-date strings, or current browser date to decide download visibility.
CustomerReportObligationProjectionUnder-modeledsource-refs/sanmopia-user-old/src/design-system/ui-kit/templates/TemplateDailySubReport.astro:22-31, source-refs/sanmopia-user-old/src/design-system/ui-kit/molecules/ReportItem.astro:31-44, source-refs/sanmopia-user-old/src/design-system/ui-kit/organisms/ReservationReportList.astro:21-70Daily-report and sub-report surfaces must consume backend obligation rows with role, service occurrence evidence, question-set kind, final-day/stop-day marker, write status, rating requirement, and lock reason. UI must not infer final day from 마지막날, sort/report completion locally, or hide reports with hardcoded status arrays.
CareManagerServiceBalanceAcknowledgementProjectionPartialsource-refs/sanmopia-manager/application/views/schedule/schedule_info.php:136-203Care-manager schedule and payout screens need frozen service-balance receipt/acknowledgement rows for main and assistant caregivers. Backend must own extra-service totals, Saturday/holiday option handling, voucher add-on inclusion, normal-service balance math, assistant split, processing state, and command availability.
PublicFeeGuideCatalogProjectionMissingsource-refs/sanmopia_web/static/js/menu/feeguide.js:1-144, source-refs/sanmopia-user-old/src/data/mock/about/fee.ts:34-138Public fee guides need effective-dated catalog projections for normal/special cash fees and voucher fee artifacts by baby count, provider count or birth order, income band, year, and region/program. UI must not select price images from filename conventions or hardcoded nowYear suffixes.
HolidayPolicyCommandProjectionPartialsource-refs/sanmopia-admin/application/models/Manage_system_model.php:52-181, source-refs/sanmopia-admin/application/controllers/ManageSystem.php:43-69, source-refs/sanmopia-admin/application/controllers/ajax/ManageSystem.php:14-32, source-refs/sanmopia-admin/static/js/manage_system/holiday_list.js:1-107Holiday management needs command/read projections with add/revise/withdraw decisions, duplicate-date policy, source/import authority, substitute-of relationship, branch scope, supersession, expected revision, and execution audit. UI must not decide command kind from modal data-type strings, typo-prone delete payloads, date-only calendar arrays, or unversioned free-text holiday rows.
ReservationChargeLineCatalogProjectionMissingsource-refs/sanmopia_web/static/js/step3.js:198-560, source-refs/sanmopia_web/static/js/step3.js:766-831, source-refs/sanmopia_web/application/views/reservation/retc.php:1-205, source-refs/sanmopia-admin/application/views/reservation_status/pre_reservation_price_table.php:1-124, source-refs/sanmopia-admin/static/js/reservation_status/reservation_add.js:927-948, source-refs/sanmopia-admin/static/js/reservation_status/reservation_add.js:1518-1542Booking, reservation review, and admin-add flows hardcode charge labels, support-item ids, delivery/pre-reservation amounts, voucher add-on display, local-support payload fragments, regional discounts, and weekend/holiday option math. Backend must return frozen charge lines with label keys, amount source, policy/catalog version, adjustment reason, support profile, and snapshot id.
VoucherPreReservationConversionEligibilityProjectionMissingsource-refs/sanmopia_web/static/js/step3_selecttype.js:23-31, source-refs/sanmopia-admin/application/config/constants.php:112-136, source-refs/sanmopia-admin/application/views/reservation_status/pre_reservation_price_table.php:94-121Year-boundary voucher booking cannot live as a frontend warning plus direct /service/preReservationPayment/payment/{reservationId}/{serviceDetailId} route. Backend must decide when December/January voucher reservations require pre-reservation, expose the applicable price-year/local-government ambiguity reason, freeze the 100000 pre-reservation amount or catalog override, return branch-led conversion action metadata, and carry source status ids 15/16/17/18 as adapter vocabulary only.
ReservationPartyAuthorityProjectionUnder-modeledsource-refs/sanmopia_web/application/views/service/step1.php:91-213, source-refs/sanmopia_web/application/controllers/api/Service.php:67-83, source-refs/sanmopia_web/application/controllers/api/Payment.php:89-113, source-refs/sanmopia_web/application/models/Payment_model.php:570-704Reservation forms and payment/notification paths mix mother, login user, emergency contact, family relation, payer, and branch notice recipients. Backend projections must expose actor-specific payment/document/refund/notification authority, with contact-only recipients separated from delegated payers and reservation owners.
ReservationBirthDeliveryReadinessProjectionUnder-modeledsource-refs/sanmopia_web/static/js/step2.js:160-203, source-refs/sanmopia_web/static/js/step2.js:215-241, source-refs/sanmopia_web/static/js/step2.js:476-482, source-refs/sanmopia_web/static/js/step2.js:551-680Booking intake previews expected service start by adding delivery-method, first-child/multipara, and postpartum-center offsets in JavaScript; the same file owns consultation copy and multi-baby/fourth-baby field availability. Backend must issue normalized birth/delivery readiness with expected service-start window, consultation reason, baby-count eligibility, price-catalog rollover reason, and customer-copy keys. UI must not decide consultation, baby-count availability, or price-version readiness from DOM text or browser date math.
ReservationServiceTypeSelectionHandoffUnder-modeledsource-refs/sanmopia_web/static/js/step3_selecttype.js:1-24, source-refs/sanmopia_web/application/controllers/api/Service.php:220-260, source-refs/sanmopia_web/application/controllers/api/Service.php:296-304, source-refs/sanmopia_web/static/js/step3_normal.js:77-110, source-refs/sanmopia_web/static/js/step3_voucher.js:255-288Service-type selection deletes prior service/add-option rows, applies picked-caregiver grade uplift, derives price version from session/start date, and returns next-route choices such as provider search, smart matching, review, or payment handoff. Backend must replace this with a revisioned service-type selection command and handoff projection carrying supersession, selected offering, quote/catalog version, matching requirement, and payment/review next action. UI must not route from source service labels, raw detail ids, or session-derived price version.
  • Customer and caregiver portals render backend projections only. They may send explicit commands but must not recalculate totals, filter lifecycle buckets, or infer workflow state from raw status ids.
  • Every migrated projection needs projectionRevision, policy/catalog version, source evidence key, actor scope, disabled/missing reason vocabulary, and command target metadata when an action is exposed.
  • Korean source labels such as 바우처, 일반, 본인부담 계약금, 본인부담 잔금, 예약금, 미지급, 지급, 환불, 토요일 추가, 휴일 추가, and 마지막날 remain adapter/source-evidence vocabulary only.
  • Source amounts and ids such as delivery/pre-reservation/voucher-add-on display amounts, local support item ids, relation ids, branch notice exceptions, and tax cutover dates must be catalog or policy data. UI must not branch on those numeric values, even when it only displays them.
  • Browser-observed amounts and dates are diagnostics. Financial authority, service calendar authority, document readiness, report obligation, and settlement/payout readiness come from backend snapshots.
  • Birth/delivery readiness, baby-count eligibility, service-type selection, and booking next actions are backend command/projection facts. Legacy browser date previews and route redirects are source evidence only.
  • CustomerReservationListBucketProjection extends existing CustomerSelfServiceWorkspace and CustomerReservationStateProjection obligations with concrete old-Astro status-bucket evidence.
  • CustomerPaymentActionProjection extends payment-change and financial lifecycle work by making visible actions a backend read model, not a local payment-label switch.
  • CustomerReceiptAccessProjection should align pricing_settlement receipt handoff refs with document_reporting receipt artifacts, so one customer surface decides receipt button visibility.
  • CustomerDocumentAvailabilityProjection extends ReservationDocumentCatalog with end-notice and stopped-service eligibility reasons.
  • CustomerReportObligationProjection extends daily-report and service-calendar work by replacing 마지막날 string matching with occurrence-backed question-set decisions.
  • CareManagerServiceBalanceAcknowledgementProjection bridges caregiver payout, service calendar, and customer payment closeout; it prevents schedule screens from recomputing service-balance shares.
  • PublicFeeGuideCatalogProjection is a new migration backlog item because current backend/docs focus on internal price quotes but not customer-facing static fee-guide selection.
  • VoucherPreReservationConversionEligibilityProjection extends the existing pre-reservation charge rows with the missing year-boundary eligibility and branch-led conversion decision, so the portal never owns voucher price-year ambiguity copy or action routing.
  • ReservationBirthDeliveryReadinessProjection extends the existing consultation-gate rows by naming the frontend-owned birth/delivery offset, baby-count, and customer-copy decisions that must become backend readiness facts.
  • ReservationServiceTypeSelectionHandoff extends the customer reservation creation row with the missing command boundary for service-offering supersession, picked-caregiver grade uplift, catalog-version resolution, and next-action routing.