feat(people): add purpose-bound Employment history read - #149
seonghobae wants to merge 64 commits into
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (4)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughEmployment 이력 읽기 경계를 추가했습니다. 요청을 사전 인가하고, 정적으로 고정한 persistence 함수를 호출하며, 결과 행과 UUID·시간·필드 스키마를 검증한 뒤 허용 필드만 반환합니다. 관련 문서와 회귀 테스트도 추가했습니다. ChangesEmployment 이력 읽기
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~45 minutes Change: Feature Sequence Diagram(s)sequenceDiagram
participant Caller
participant read_employment_history
participant authorize_resource_fields
participant EmploymentHistoryReadPort
participant AuthorizedEmploymentHistoryView
Caller->>read_employment_history: 요청 필드와 known_at 전달
read_employment_history->>read_employment_history: 구체 persistence 함수 정적 바인딩
read_employment_history->>authorize_resource_fields: tenant, Person, purpose, 작업, 필드 인가
read_employment_history->>EmploymentHistoryReadPort: 바인딩된 함수로 이력 조회
EmploymentHistoryReadPort-->>read_employment_history: EmploymentHistoryRecord 튜플 반환
read_employment_history->>AuthorizedEmploymentHistoryView: 행과 필드 검증 후 출력 구성
AuthorizedEmploymentHistoryView-->>Caller: 인가된 Employment 이력 반환
Merge Risk: ⚪ Minimal · up to The new Employment-history read boundary includes validation and regression coverage for its stated security and integrity contracts. No concrete merge-blocking issue remains. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 63.93% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 61 functions across 6 files. (2 skipped: 2 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Buyer-visible HRIS gap
Adds purpose-bound bitemporal Employment history to the governed Person read surface. This slice reads canonical Orgmetra Employment identity/version truth only; it does not mutate Employment, infer employment decisions, query another service's application tables, or become a parallel governed-People-read owner.
Canonical owner stack
PR #55 remains the direct single writer for governed People reads. Current direct parent: #55
5907537d38dc0e9e4d0a5539805089002b7ee1aa; protected truth below it remainsdevelop@eb9757f8649aaad026a9865508d9aad50c1a7a4f.Current exact head
69b5e8796245ef82bcc05a316bc0aa8b4f171b8dordinary-forward adopts #341's confirmed-hire dependency binding. Only canonical parent-ownedhire_http.pyand the focused dependency-binding regression were adopted; #149's Employment-history feature delta remains intact. Earlier #333–#337 request/header/read hardening remains inherited through the same canonical lineage. Independent authorization-owner prerequisite remains #65/#175. ADR 0149 remains Proposed.Checked-versus-used repository binding, tuple/cardinality validation, authorization-schema validation, immutable scalar row identity, raw-scalar-before-UUID-reconstruction, deterministic ordering, and authorization-before-retrieval regressions remain intact. Shared People transport/authentication/read-model authority is inherited from #55 rather than reimplemented here.
This PR intentionally targets #55 while Foundation PR acceptance targets protected
develop; parent checks/reviews do not transfer. After #55 and #65 reach protecteddevelop, #149 must ordinary-forward onto protected owner truth, retarget todevelop, and reacquire exact-head Foundation/Security/SAST/CodeQL/model review plus qualifying independent approval.Keep Draft. No force-push, destructive rebase, self/model approval, routine bypass, mutable-owner source copy, synthetic status, no-op retrigger, predecessor-evidence transfer, gate weakening, or simple Close is authorized.