@shizuoka-its/core 2.1.2 → 3.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -25
- package/dist/_virtual/_rolldown/runtime.cjs +13 -0
- package/dist/_virtual/_rolldown/runtime.mjs +13 -0
- package/dist/application/exceptions/ApplicationExceptions.cjs +124 -0
- package/dist/application/exceptions/ApplicationExceptions.cjs.map +1 -0
- package/dist/application/exceptions/ApplicationExceptions.mjs +115 -0
- package/dist/application/exceptions/ApplicationExceptions.mjs.map +1 -0
- package/dist/application/index.cjs +39 -0
- package/dist/application/index.mjs +40 -0
- package/dist/application/usecase/base.cjs +11 -0
- package/dist/application/usecase/base.cjs.map +1 -0
- package/dist/application/usecase/base.d.cts +12 -0
- package/dist/application/usecase/base.d.mts +12 -0
- package/dist/application/usecase/base.mjs +11 -0
- package/dist/application/usecase/base.mjs.map +1 -0
- package/dist/application/usecase/event/AddExhibitToEvent.cjs +27 -0
- package/dist/application/usecase/event/AddExhibitToEvent.cjs.map +1 -0
- package/dist/application/usecase/event/AddExhibitToEvent.d.cts +32 -0
- package/dist/application/usecase/event/AddExhibitToEvent.d.mts +32 -0
- package/dist/application/usecase/event/AddExhibitToEvent.mjs +27 -0
- package/dist/application/usecase/event/AddExhibitToEvent.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.cjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.d.cts +26 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.d.mts +26 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.mjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitDescription.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.cjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.d.cts +26 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.d.mts +26 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.mjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitMarkdownContent.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitName.cjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitName.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitName.d.cts +26 -0
- package/dist/application/usecase/event/ChangeExhibitName.d.mts +26 -0
- package/dist/application/usecase/event/ChangeExhibitName.mjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitName.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.cjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.d.cts +27 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.d.mts +27 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.mjs +23 -0
- package/dist/application/usecase/event/ChangeExhibitUrl.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.cjs +23 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.d.cts +27 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.d.mts +27 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.mjs +23 -0
- package/dist/application/usecase/event/ChangeLightningTalkDuration.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.cjs +23 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.d.cts +27 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.d.mts +27 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.mjs +23 -0
- package/dist/application/usecase/event/ChangeLightningTalkSlideUrl.mjs.map +1 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.cjs +23 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.cjs.map +1 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.d.cts +26 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.d.mts +26 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.mjs +23 -0
- package/dist/application/usecase/event/ChangeLightningTalkStartTime.mjs.map +1 -0
- package/dist/application/usecase/event/CreateEvent.cjs +23 -0
- package/dist/application/usecase/event/CreateEvent.cjs.map +1 -0
- package/dist/application/usecase/event/CreateEvent.d.cts +25 -0
- package/dist/application/usecase/event/CreateEvent.d.mts +25 -0
- package/dist/application/usecase/event/CreateEvent.mjs +23 -0
- package/dist/application/usecase/event/CreateEvent.mjs.map +1 -0
- package/dist/application/usecase/event/DeleteEvent.cjs +22 -0
- package/dist/application/usecase/event/DeleteEvent.cjs.map +1 -0
- package/dist/application/usecase/event/DeleteEvent.d.cts +23 -0
- package/dist/application/usecase/event/DeleteEvent.d.mts +23 -0
- package/dist/application/usecase/event/DeleteEvent.mjs +22 -0
- package/dist/application/usecase/event/DeleteEvent.mjs.map +1 -0
- package/dist/application/usecase/event/GetEvent.cjs +18 -0
- package/dist/application/usecase/event/GetEvent.cjs.map +1 -0
- package/dist/application/usecase/event/GetEvent.d.cts +23 -0
- package/dist/application/usecase/event/GetEvent.d.mts +23 -0
- package/dist/application/usecase/event/GetEvent.mjs +18 -0
- package/dist/application/usecase/event/GetEvent.mjs.map +1 -0
- package/dist/application/usecase/event/GetEventList.cjs +15 -0
- package/dist/application/usecase/event/GetEventList.cjs.map +1 -0
- package/dist/application/usecase/event/GetEventList.d.cts +17 -0
- package/dist/application/usecase/event/GetEventList.d.mts +17 -0
- package/dist/application/usecase/event/GetEventList.mjs +15 -0
- package/dist/application/usecase/event/GetEventList.mjs.map +1 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.cjs +23 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.cjs.map +1 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.d.cts +25 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.d.mts +25 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.mjs +23 -0
- package/dist/application/usecase/event/RemoveExhibitFromEvent.mjs.map +1 -0
- package/dist/application/usecase/event/UpdateEvent.cjs +21 -0
- package/dist/application/usecase/event/UpdateEvent.cjs.map +1 -0
- package/dist/application/usecase/event/UpdateEvent.d.cts +22 -0
- package/dist/application/usecase/event/UpdateEvent.d.mts +22 -0
- package/dist/application/usecase/event/UpdateEvent.mjs +21 -0
- package/dist/application/usecase/event/UpdateEvent.mjs.map +1 -0
- package/dist/application/usecase/event/index.cjs +14 -0
- package/dist/application/usecase/event/index.mjs +15 -0
- package/dist/application/usecase/eventParticipation/GetEventsByMember.cjs +15 -0
- package/dist/application/usecase/eventParticipation/GetEventsByMember.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetEventsByMember.d.cts +20 -0
- package/dist/application/usecase/eventParticipation/GetEventsByMember.d.mts +20 -0
- package/dist/application/usecase/eventParticipation/GetEventsByMember.mjs +15 -0
- package/dist/application/usecase/eventParticipation/GetEventsByMember.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetExhibitsByMember.cjs +18 -0
- package/dist/application/usecase/eventParticipation/GetExhibitsByMember.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetExhibitsByMember.d.cts +20 -0
- package/dist/application/usecase/eventParticipation/GetExhibitsByMember.d.mts +20 -0
- package/dist/application/usecase/eventParticipation/GetExhibitsByMember.mjs +18 -0
- package/dist/application/usecase/eventParticipation/GetExhibitsByMember.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetMembersByEvent.cjs +19 -0
- package/dist/application/usecase/eventParticipation/GetMembersByEvent.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetMembersByEvent.d.cts +22 -0
- package/dist/application/usecase/eventParticipation/GetMembersByEvent.d.mts +22 -0
- package/dist/application/usecase/eventParticipation/GetMembersByEvent.mjs +19 -0
- package/dist/application/usecase/eventParticipation/GetMembersByEvent.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetMembersByExhibit.cjs +19 -0
- package/dist/application/usecase/eventParticipation/GetMembersByExhibit.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/GetMembersByExhibit.d.cts +22 -0
- package/dist/application/usecase/eventParticipation/GetMembersByExhibit.d.mts +22 -0
- package/dist/application/usecase/eventParticipation/GetMembersByExhibit.mjs +19 -0
- package/dist/application/usecase/eventParticipation/GetMembersByExhibit.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.cjs +22 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.d.cts +24 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.d.mts +24 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.mjs +22 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToEvent.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.cjs +22 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.d.cts +24 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.d.mts +24 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.mjs +22 -0
- package/dist/application/usecase/eventParticipation/RegisterMemberToExhibit.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.cjs +21 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.d.cts +24 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.d.mts +24 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.mjs +21 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromEvent.mjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.cjs +21 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.cjs.map +1 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.d.cts +24 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.d.mts +24 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.mjs +21 -0
- package/dist/application/usecase/eventParticipation/RemoveMemberFromExhibit.mjs.map +1 -0
- package/dist/application/usecase/karte/CorrectKarte.cjs +20 -0
- package/dist/application/usecase/karte/CorrectKarte.cjs.map +1 -0
- package/dist/application/usecase/karte/CorrectKarte.d.cts +20 -0
- package/dist/application/usecase/karte/CorrectKarte.d.mts +20 -0
- package/dist/application/usecase/karte/CorrectKarte.mjs +20 -0
- package/dist/application/usecase/karte/CorrectKarte.mjs.map +1 -0
- package/dist/application/usecase/karte/CreateKarte.cjs +19 -0
- package/dist/application/usecase/karte/CreateKarte.cjs.map +1 -0
- package/dist/application/usecase/karte/CreateKarte.d.cts +20 -0
- package/dist/application/usecase/karte/CreateKarte.d.mts +20 -0
- package/dist/application/usecase/karte/CreateKarte.mjs +19 -0
- package/dist/application/usecase/karte/CreateKarte.mjs.map +1 -0
- package/dist/application/usecase/karte/GetKarte.cjs +18 -0
- package/dist/application/usecase/karte/GetKarte.cjs.map +1 -0
- package/dist/application/usecase/karte/GetKarte.d.cts +20 -0
- package/dist/application/usecase/karte/GetKarte.d.mts +20 -0
- package/dist/application/usecase/karte/GetKarte.mjs +18 -0
- package/dist/application/usecase/karte/GetKarte.mjs.map +1 -0
- package/dist/application/usecase/karte/ImportKarte.cjs +19 -0
- package/dist/application/usecase/karte/ImportKarte.cjs.map +1 -0
- package/dist/application/usecase/karte/ImportKarte.d.cts +39 -0
- package/dist/application/usecase/karte/ImportKarte.d.mts +39 -0
- package/dist/application/usecase/karte/ImportKarte.mjs +19 -0
- package/dist/application/usecase/karte/ImportKarte.mjs.map +1 -0
- package/dist/application/usecase/karte/ListKartes.cjs +15 -0
- package/dist/application/usecase/karte/ListKartes.cjs.map +1 -0
- package/dist/application/usecase/karte/ListKartes.d.cts +17 -0
- package/dist/application/usecase/karte/ListKartes.d.mts +17 -0
- package/dist/application/usecase/karte/ListKartes.mjs +15 -0
- package/dist/application/usecase/karte/ListKartes.mjs.map +1 -0
- package/dist/application/usecase/karte/index.cjs +5 -0
- package/dist/application/usecase/karte/index.mjs +6 -0
- package/dist/application/usecase/member/ChangeDiscordNickName.cjs +20 -0
- package/dist/application/usecase/member/ChangeDiscordNickName.cjs.map +1 -0
- package/dist/application/usecase/member/ChangeDiscordNickName.d.cts +21 -0
- package/dist/application/usecase/member/ChangeDiscordNickName.d.mts +21 -0
- package/dist/application/usecase/member/ChangeDiscordNickName.mjs +20 -0
- package/dist/application/usecase/member/ChangeDiscordNickName.mjs.map +1 -0
- package/dist/application/usecase/member/ConnectDiscordAccount.cjs +27 -0
- package/dist/application/usecase/member/ConnectDiscordAccount.cjs.map +1 -0
- package/dist/application/usecase/member/ConnectDiscordAccount.d.cts +25 -0
- package/dist/application/usecase/member/ConnectDiscordAccount.d.mts +25 -0
- package/dist/application/usecase/member/ConnectDiscordAccount.mjs +27 -0
- package/dist/application/usecase/member/ConnectDiscordAccount.mjs.map +1 -0
- package/dist/application/usecase/member/GetMember.cjs +15 -0
- package/dist/application/usecase/member/GetMember.cjs.map +1 -0
- package/dist/application/usecase/member/GetMember.d.cts +20 -0
- package/dist/application/usecase/member/GetMember.d.mts +20 -0
- package/dist/application/usecase/member/GetMember.mjs +15 -0
- package/dist/application/usecase/member/GetMember.mjs.map +1 -0
- package/dist/application/usecase/member/GetMemberByDiscordId.cjs +18 -0
- package/dist/application/usecase/member/GetMemberByDiscordId.cjs.map +1 -0
- package/dist/application/usecase/member/GetMemberByDiscordId.d.cts +22 -0
- package/dist/application/usecase/member/GetMemberByDiscordId.d.mts +22 -0
- package/dist/application/usecase/member/GetMemberByDiscordId.mjs +18 -0
- package/dist/application/usecase/member/GetMemberByDiscordId.mjs.map +1 -0
- package/dist/application/usecase/member/GetMemberByEmail.cjs +15 -0
- package/dist/application/usecase/member/GetMemberByEmail.cjs.map +1 -0
- package/dist/application/usecase/member/GetMemberByEmail.d.cts +20 -0
- package/dist/application/usecase/member/GetMemberByEmail.d.mts +20 -0
- package/dist/application/usecase/member/GetMemberByEmail.mjs +15 -0
- package/dist/application/usecase/member/GetMemberByEmail.mjs.map +1 -0
- package/dist/application/usecase/member/GetMemberList.cjs +15 -0
- package/dist/application/usecase/member/GetMemberList.cjs.map +1 -0
- package/dist/application/usecase/member/GetMemberList.d.cts +17 -0
- package/dist/application/usecase/member/GetMemberList.d.mts +17 -0
- package/dist/application/usecase/member/GetMemberList.mjs +15 -0
- package/dist/application/usecase/member/GetMemberList.mjs.map +1 -0
- package/dist/application/usecase/member/RegisterMember.cjs +30 -0
- package/dist/application/usecase/member/RegisterMember.cjs.map +1 -0
- package/dist/application/usecase/member/RegisterMember.d.cts +28 -0
- package/dist/application/usecase/member/RegisterMember.d.mts +28 -0
- package/dist/application/usecase/member/RegisterMember.mjs +30 -0
- package/dist/application/usecase/member/RegisterMember.mjs.map +1 -0
- package/dist/application/usecase/member/UpdateMember.cjs +24 -0
- package/dist/application/usecase/member/UpdateMember.cjs.map +1 -0
- package/dist/application/usecase/member/UpdateMember.d.cts +26 -0
- package/dist/application/usecase/member/UpdateMember.d.mts +26 -0
- package/dist/application/usecase/member/UpdateMember.mjs +24 -0
- package/dist/application/usecase/member/UpdateMember.mjs.map +1 -0
- package/dist/application/usecase/member/index.cjs +8 -0
- package/dist/application/usecase/member/index.mjs +9 -0
- package/dist/domain/aggregates/discord-account/DiscordAccount.cjs +47 -0
- package/dist/domain/aggregates/discord-account/DiscordAccount.cjs.map +1 -0
- package/dist/domain/aggregates/discord-account/DiscordAccount.d.cts +43 -0
- package/dist/domain/aggregates/discord-account/DiscordAccount.d.mts +43 -0
- package/dist/domain/aggregates/discord-account/DiscordAccount.mjs +46 -0
- package/dist/domain/aggregates/discord-account/DiscordAccount.mjs.map +1 -0
- package/dist/domain/aggregates/discord-account/DiscordAccountRepository.d.cts +14 -0
- package/dist/domain/aggregates/discord-account/DiscordAccountRepository.d.mts +14 -0
- package/dist/domain/aggregates/discord-account/DiscordId.cjs +8 -0
- package/dist/domain/aggregates/discord-account/DiscordId.cjs.map +1 -0
- package/dist/domain/aggregates/discord-account/DiscordId.d.cts +9 -0
- package/dist/domain/aggregates/discord-account/DiscordId.d.mts +9 -0
- package/dist/domain/aggregates/discord-account/DiscordId.mjs +8 -0
- package/dist/domain/aggregates/discord-account/DiscordId.mjs.map +1 -0
- package/dist/domain/aggregates/event/Event.cjs +91 -0
- package/dist/domain/aggregates/event/Event.cjs.map +1 -0
- package/dist/domain/aggregates/event/Event.d.cts +59 -0
- package/dist/domain/aggregates/event/Event.d.mts +59 -0
- package/dist/domain/aggregates/event/Event.mjs +91 -0
- package/dist/domain/aggregates/event/Event.mjs.map +1 -0
- package/dist/domain/aggregates/event/EventId.cjs +8 -0
- package/dist/domain/aggregates/event/EventId.cjs.map +1 -0
- package/dist/domain/aggregates/event/EventId.d.cts +9 -0
- package/dist/domain/aggregates/event/EventId.d.mts +9 -0
- package/dist/domain/aggregates/event/EventId.mjs +8 -0
- package/dist/domain/aggregates/event/EventId.mjs.map +1 -0
- package/dist/domain/aggregates/event/EventRepository.d.cts +17 -0
- package/dist/domain/aggregates/event/EventRepository.d.mts +17 -0
- package/dist/domain/aggregates/event/Exhibit.cjs +86 -0
- package/dist/domain/aggregates/event/Exhibit.cjs.map +1 -0
- package/dist/domain/aggregates/event/Exhibit.d.cts +52 -0
- package/dist/domain/aggregates/event/Exhibit.d.mts +52 -0
- package/dist/domain/aggregates/event/Exhibit.mjs +86 -0
- package/dist/domain/aggregates/event/Exhibit.mjs.map +1 -0
- package/dist/domain/aggregates/event/ExhibitId.cjs +8 -0
- package/dist/domain/aggregates/event/ExhibitId.cjs.map +1 -0
- package/dist/domain/aggregates/event/ExhibitId.d.cts +9 -0
- package/dist/domain/aggregates/event/ExhibitId.d.mts +9 -0
- package/dist/domain/aggregates/event/ExhibitId.mjs +8 -0
- package/dist/domain/aggregates/event/ExhibitId.mjs.map +1 -0
- package/dist/domain/aggregates/event/LightningTalk.cjs +39 -0
- package/dist/domain/aggregates/event/LightningTalk.cjs.map +1 -0
- package/dist/domain/aggregates/event/LightningTalk.d.cts +27 -0
- package/dist/domain/aggregates/event/LightningTalk.d.mts +27 -0
- package/dist/domain/aggregates/event/LightningTalk.mjs +39 -0
- package/dist/domain/aggregates/event/LightningTalk.mjs.map +1 -0
- package/dist/domain/aggregates/event/LightningTalkDuration.cjs +12 -0
- package/dist/domain/aggregates/event/LightningTalkDuration.cjs.map +1 -0
- package/dist/domain/aggregates/event/LightningTalkDuration.d.cts +9 -0
- package/dist/domain/aggregates/event/LightningTalkDuration.d.mts +9 -0
- package/dist/domain/aggregates/event/LightningTalkDuration.mjs +12 -0
- package/dist/domain/aggregates/event/LightningTalkDuration.mjs.map +1 -0
- package/dist/domain/aggregates/event/Url.cjs +19 -0
- package/dist/domain/aggregates/event/Url.cjs.map +1 -0
- package/dist/domain/aggregates/event/Url.d.cts +9 -0
- package/dist/domain/aggregates/event/Url.d.mts +9 -0
- package/dist/domain/aggregates/event/Url.mjs +19 -0
- package/dist/domain/aggregates/event/Url.mjs.map +1 -0
- package/dist/domain/aggregates/index.cjs +25 -0
- package/dist/domain/aggregates/index.mjs +26 -0
- package/dist/domain/aggregates/karte/Assignee.cjs +7 -0
- package/dist/domain/aggregates/karte/Assignee.cjs.map +1 -0
- package/dist/domain/aggregates/karte/Assignee.d.cts +20 -0
- package/dist/domain/aggregates/karte/Assignee.d.mts +20 -0
- package/dist/domain/aggregates/karte/Assignee.mjs +7 -0
- package/dist/domain/aggregates/karte/Assignee.mjs.map +1 -0
- package/dist/domain/aggregates/karte/Client.cjs +20 -0
- package/dist/domain/aggregates/karte/Client.cjs.map +1 -0
- package/dist/domain/aggregates/karte/Client.d.cts +42 -0
- package/dist/domain/aggregates/karte/Client.d.mts +42 -0
- package/dist/domain/aggregates/karte/Client.mjs +19 -0
- package/dist/domain/aggregates/karte/Client.mjs.map +1 -0
- package/dist/domain/aggregates/karte/Consent.d.cts +14 -0
- package/dist/domain/aggregates/karte/Consent.d.mts +14 -0
- package/dist/domain/aggregates/karte/Consultation.d.cts +19 -0
- package/dist/domain/aggregates/karte/Consultation.d.mts +19 -0
- package/dist/domain/aggregates/karte/ConsultationCategory.cjs +89 -0
- package/dist/domain/aggregates/karte/ConsultationCategory.cjs.map +1 -0
- package/dist/domain/aggregates/karte/ConsultationCategory.d.cts +75 -0
- package/dist/domain/aggregates/karte/ConsultationCategory.d.mts +75 -0
- package/dist/domain/aggregates/karte/ConsultationCategory.mjs +89 -0
- package/dist/domain/aggregates/karte/ConsultationCategory.mjs.map +1 -0
- package/dist/domain/aggregates/karte/ConsultedAt.cjs +90 -0
- package/dist/domain/aggregates/karte/ConsultedAt.cjs.map +1 -0
- package/dist/domain/aggregates/karte/ConsultedAt.d.cts +49 -0
- package/dist/domain/aggregates/karte/ConsultedAt.d.mts +49 -0
- package/dist/domain/aggregates/karte/ConsultedAt.mjs +85 -0
- package/dist/domain/aggregates/karte/ConsultedAt.mjs.map +1 -0
- package/dist/domain/aggregates/karte/FollowUp.cjs +13 -0
- package/dist/domain/aggregates/karte/FollowUp.cjs.map +1 -0
- package/dist/domain/aggregates/karte/FollowUp.d.cts +8 -0
- package/dist/domain/aggregates/karte/FollowUp.d.mts +8 -0
- package/dist/domain/aggregates/karte/FollowUp.mjs +13 -0
- package/dist/domain/aggregates/karte/FollowUp.mjs.map +1 -0
- package/dist/domain/aggregates/karte/Karte.cjs +94 -0
- package/dist/domain/aggregates/karte/Karte.cjs.map +1 -0
- package/dist/domain/aggregates/karte/Karte.d.cts +131 -0
- package/dist/domain/aggregates/karte/Karte.d.mts +131 -0
- package/dist/domain/aggregates/karte/Karte.mjs +94 -0
- package/dist/domain/aggregates/karte/Karte.mjs.map +1 -0
- package/dist/domain/aggregates/karte/KarteId.cjs +8 -0
- package/dist/domain/aggregates/karte/KarteId.cjs.map +1 -0
- package/dist/domain/aggregates/karte/KarteId.d.cts +9 -0
- package/dist/domain/aggregates/karte/KarteId.d.mts +9 -0
- package/dist/domain/aggregates/karte/KarteId.mjs +8 -0
- package/dist/domain/aggregates/karte/KarteId.mjs.map +1 -0
- package/dist/domain/aggregates/karte/KarteRepository.d.cts +12 -0
- package/dist/domain/aggregates/karte/KarteRepository.d.mts +12 -0
- package/dist/domain/aggregates/karte/Resolution.cjs +7 -0
- package/dist/domain/aggregates/karte/Resolution.cjs.map +1 -0
- package/dist/domain/aggregates/karte/Resolution.d.cts +21 -0
- package/dist/domain/aggregates/karte/Resolution.d.mts +21 -0
- package/dist/domain/aggregates/karte/Resolution.mjs +7 -0
- package/dist/domain/aggregates/karte/Resolution.mjs.map +1 -0
- package/dist/domain/aggregates/karte/SupportRecord.d.cts +22 -0
- package/dist/domain/aggregates/karte/SupportRecord.d.mts +22 -0
- package/dist/domain/aggregates/karte/WorkDuration.cjs +11 -0
- package/dist/domain/aggregates/karte/WorkDuration.cjs.map +1 -0
- package/dist/domain/aggregates/karte/WorkDuration.d.cts +10 -0
- package/dist/domain/aggregates/karte/WorkDuration.d.mts +10 -0
- package/dist/domain/aggregates/karte/WorkDuration.mjs +11 -0
- package/dist/domain/aggregates/karte/WorkDuration.mjs.map +1 -0
- package/dist/domain/aggregates/karte/index.cjs +9 -0
- package/dist/domain/aggregates/karte/index.mjs +10 -0
- package/dist/domain/aggregates/member/Email.cjs +12 -0
- package/dist/domain/aggregates/member/Email.cjs.map +1 -0
- package/dist/domain/aggregates/member/Email.d.cts +9 -0
- package/dist/domain/aggregates/member/Email.d.mts +9 -0
- package/dist/domain/aggregates/member/Email.mjs +12 -0
- package/dist/domain/aggregates/member/Email.mjs.map +1 -0
- package/dist/domain/aggregates/member/Member.cjs +247 -0
- package/dist/domain/aggregates/member/Member.cjs.map +1 -0
- package/dist/domain/aggregates/member/Member.d.cts +91 -0
- package/dist/domain/aggregates/member/Member.d.mts +91 -0
- package/dist/domain/aggregates/member/Member.mjs +245 -0
- package/dist/domain/aggregates/member/Member.mjs.map +1 -0
- package/dist/domain/aggregates/member/MemberEvent.cjs +20 -0
- package/dist/domain/aggregates/member/MemberEvent.cjs.map +1 -0
- package/dist/domain/aggregates/member/MemberEvent.d.cts +115 -0
- package/dist/domain/aggregates/member/MemberEvent.d.mts +115 -0
- package/dist/domain/aggregates/member/MemberEvent.mjs +20 -0
- package/dist/domain/aggregates/member/MemberEvent.mjs.map +1 -0
- package/dist/domain/aggregates/member/MemberId.cjs +8 -0
- package/dist/domain/aggregates/member/MemberId.cjs.map +1 -0
- package/dist/domain/aggregates/member/MemberId.d.cts +9 -0
- package/dist/domain/aggregates/member/MemberId.d.mts +9 -0
- package/dist/domain/aggregates/member/MemberId.mjs +8 -0
- package/dist/domain/aggregates/member/MemberId.mjs.map +1 -0
- package/dist/domain/aggregates/member/MemberRepository.d.cts +14 -0
- package/dist/domain/aggregates/member/MemberRepository.d.mts +14 -0
- package/dist/domain/aggregates/member/UniversityEmail.cjs +14 -0
- package/dist/domain/aggregates/member/UniversityEmail.cjs.map +1 -0
- package/dist/domain/aggregates/member/UniversityEmail.d.cts +9 -0
- package/dist/domain/aggregates/member/UniversityEmail.d.mts +9 -0
- package/dist/domain/aggregates/member/UniversityEmail.mjs +14 -0
- package/dist/domain/aggregates/member/UniversityEmail.mjs.map +1 -0
- package/dist/domain/aggregates/member/index.cjs +5 -0
- package/dist/domain/aggregates/member/index.mjs +6 -0
- package/dist/domain/base/DomainEvent.d.cts +9 -0
- package/dist/domain/base/DomainEvent.d.mts +9 -0
- package/dist/domain/base/NonEmptyArray.d.cts +10 -0
- package/dist/domain/base/NonEmptyArray.d.mts +10 -0
- package/dist/domain/base/NonEmptyString.cjs +12 -0
- package/dist/domain/base/NonEmptyString.cjs.map +1 -0
- package/dist/domain/base/NonEmptyString.d.cts +12 -0
- package/dist/domain/base/NonEmptyString.d.mts +12 -0
- package/dist/domain/base/NonEmptyString.mjs +12 -0
- package/dist/domain/base/NonEmptyString.mjs.map +1 -0
- package/dist/domain/base/ValueObject.cjs +21 -0
- package/dist/domain/base/ValueObject.cjs.map +1 -0
- package/dist/domain/base/ValueObject.d.cts +12 -0
- package/dist/domain/base/ValueObject.d.mts +12 -0
- package/dist/domain/base/ValueObject.mjs +21 -0
- package/dist/domain/base/ValueObject.mjs.map +1 -0
- package/dist/domain/exceptions/DomainExceptions.cjs +196 -0
- package/dist/domain/exceptions/DomainExceptions.cjs.map +1 -0
- package/dist/domain/exceptions/DomainExceptions.d.cts +192 -0
- package/dist/domain/exceptions/DomainExceptions.d.mts +192 -0
- package/dist/domain/exceptions/DomainExceptions.mjs +181 -0
- package/dist/domain/exceptions/DomainExceptions.mjs.map +1 -0
- package/dist/domain/index.cjs +32 -0
- package/dist/domain/index.mjs +33 -0
- package/dist/domain/shared/Recorded.cjs +17 -0
- package/dist/domain/shared/Recorded.cjs.map +1 -0
- package/dist/domain/shared/Recorded.d.cts +20 -0
- package/dist/domain/shared/Recorded.d.mts +20 -0
- package/dist/domain/shared/Recorded.mjs +16 -0
- package/dist/domain/shared/Recorded.mjs.map +1 -0
- package/dist/domain/shared/StudentId.cjs +35 -0
- package/dist/domain/shared/StudentId.cjs.map +1 -0
- package/dist/domain/shared/StudentId.d.cts +25 -0
- package/dist/domain/shared/StudentId.d.mts +25 -0
- package/dist/domain/shared/StudentId.mjs +35 -0
- package/dist/domain/shared/StudentId.mjs.map +1 -0
- package/dist/domain/shared/affiliation/Affiliation.cjs +12 -0
- package/dist/domain/shared/affiliation/Affiliation.cjs.map +1 -0
- package/dist/domain/shared/affiliation/Affiliation.d.cts +59 -0
- package/dist/domain/shared/affiliation/Affiliation.d.mts +59 -0
- package/dist/domain/shared/affiliation/Affiliation.mjs +12 -0
- package/dist/domain/shared/affiliation/Affiliation.mjs.map +1 -0
- package/dist/domain/shared/affiliation/index.cjs +2 -0
- package/dist/domain/shared/affiliation/index.mjs +3 -0
- package/dist/domain/shared/affiliation/universityStructure.cjs +444 -0
- package/dist/domain/shared/affiliation/universityStructure.cjs.map +1 -0
- package/dist/domain/shared/affiliation/universityStructure.d.cts +262 -0
- package/dist/domain/shared/affiliation/universityStructure.d.mts +262 -0
- package/dist/domain/shared/affiliation/universityStructure.mjs +439 -0
- package/dist/domain/shared/affiliation/universityStructure.mjs.map +1 -0
- package/dist/domain/shared/index.cjs +5 -0
- package/dist/domain/shared/index.mjs +6 -0
- package/dist/executable/event.cjs +63 -0
- package/dist/executable/event.cjs.map +1 -0
- package/dist/executable/event.d.cts +56 -0
- package/dist/executable/event.d.mts +56 -0
- package/dist/executable/event.mjs +63 -0
- package/dist/executable/event.mjs.map +1 -0
- package/dist/executable/eventService.cjs +146 -0
- package/dist/executable/eventService.cjs.map +1 -0
- package/dist/executable/eventService.d.cts +143 -0
- package/dist/executable/eventService.d.mts +143 -0
- package/dist/executable/eventService.mjs +146 -0
- package/dist/executable/eventService.mjs.map +1 -0
- package/dist/executable/index.cjs +6 -0
- package/dist/executable/index.mjs +7 -0
- package/dist/executable/karte.cjs +24 -0
- package/dist/executable/karte.cjs.map +1 -0
- package/dist/executable/karte.d.cts +19 -0
- package/dist/executable/karte.d.mts +19 -0
- package/dist/executable/karte.mjs +24 -0
- package/dist/executable/karte.mjs.map +1 -0
- package/dist/executable/karteService.cjs +79 -0
- package/dist/executable/karteService.cjs.map +1 -0
- package/dist/executable/karteService.d.cts +87 -0
- package/dist/executable/karteService.d.mts +87 -0
- package/dist/executable/karteService.mjs +79 -0
- package/dist/executable/karteService.mjs.map +1 -0
- package/dist/executable/member.cjs +32 -0
- package/dist/executable/member.cjs.map +1 -0
- package/dist/executable/member.d.cts +25 -0
- package/dist/executable/member.d.mts +25 -0
- package/dist/executable/member.mjs +32 -0
- package/dist/executable/member.mjs.map +1 -0
- package/dist/executable/memberService.cjs +63 -0
- package/dist/executable/memberService.cjs.map +1 -0
- package/dist/executable/memberService.d.cts +59 -0
- package/dist/executable/memberService.d.mts +59 -0
- package/dist/executable/memberService.mjs +63 -0
- package/dist/executable/memberService.mjs.map +1 -0
- package/dist/index.cjs +105 -1914
- package/dist/index.d.cts +46 -754
- package/dist/index.d.mts +46 -0
- package/dist/index.mjs +39 -0
- package/dist/infrastructure/drizzle/DrizzleDiscordAccountRepository.cjs +57 -0
- package/dist/infrastructure/drizzle/DrizzleDiscordAccountRepository.cjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleDiscordAccountRepository.mjs +57 -0
- package/dist/infrastructure/drizzle/DrizzleDiscordAccountRepository.mjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleEventRepository.cjs +196 -0
- package/dist/infrastructure/drizzle/DrizzleEventRepository.cjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleEventRepository.mjs +196 -0
- package/dist/infrastructure/drizzle/DrizzleEventRepository.mjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleKarteRepository.cjs +241 -0
- package/dist/infrastructure/drizzle/DrizzleKarteRepository.cjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleKarteRepository.mjs +241 -0
- package/dist/infrastructure/drizzle/DrizzleKarteRepository.mjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleMemberRepository.cjs +112 -0
- package/dist/infrastructure/drizzle/DrizzleMemberRepository.cjs.map +1 -0
- package/dist/infrastructure/drizzle/DrizzleMemberRepository.mjs +112 -0
- package/dist/infrastructure/drizzle/DrizzleMemberRepository.mjs.map +1 -0
- package/dist/infrastructure/drizzle/client.cjs +20 -0
- package/dist/infrastructure/drizzle/client.cjs.map +1 -0
- package/dist/infrastructure/drizzle/client.mjs +20 -0
- package/dist/infrastructure/drizzle/client.mjs.map +1 -0
- package/dist/infrastructure/drizzle/index.cjs +4 -0
- package/dist/infrastructure/drizzle/index.mjs +5 -0
- package/dist/infrastructure/drizzle/schema.cjs +353 -0
- package/dist/infrastructure/drizzle/schema.cjs.map +1 -0
- package/dist/infrastructure/drizzle/schema.mjs +337 -0
- package/dist/infrastructure/drizzle/schema.mjs.map +1 -0
- package/dist/infrastructure/drizzle/serializeDiscordAccountEvent.cjs +14 -0
- package/dist/infrastructure/drizzle/serializeDiscordAccountEvent.cjs.map +1 -0
- package/dist/infrastructure/drizzle/serializeDiscordAccountEvent.mjs +14 -0
- package/dist/infrastructure/drizzle/serializeDiscordAccountEvent.mjs.map +1 -0
- package/dist/infrastructure/drizzle/serializeMemberEvent.cjs +61 -0
- package/dist/infrastructure/drizzle/serializeMemberEvent.cjs.map +1 -0
- package/dist/infrastructure/drizzle/serializeMemberEvent.mjs +61 -0
- package/dist/infrastructure/drizzle/serializeMemberEvent.mjs.map +1 -0
- package/dist/infrastructure/index.cjs +5 -0
- package/dist/infrastructure/index.mjs +6 -0
- package/package.json +67 -60
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -754
- package/dist/index.js +0 -1875
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/ConsultationCategory.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 相談カテゴリ — PC相談室で扱うトラブルの分類タグ
|
|
4
|
+
*
|
|
5
|
+
* IDと表示名のペアで構成され、追加はできるが削除はできない(履歴整合性のため)。
|
|
6
|
+
*/
|
|
7
|
+
/** 定義済みカテゴリ一覧(単一の情報源) */
|
|
8
|
+
declare const CONSULTATION_CATEGORIES: readonly [{
|
|
9
|
+
readonly id: "wifi_eduroam";
|
|
10
|
+
readonly displayName: "eduroamに対する接続方法の相談";
|
|
11
|
+
}, {
|
|
12
|
+
readonly id: "wifi_success";
|
|
13
|
+
readonly displayName: "SUCCESSに対する接続方法の相談";
|
|
14
|
+
}, {
|
|
15
|
+
readonly id: "wifi_smartphone";
|
|
16
|
+
readonly displayName: "スマホからのWiFi接続方法に関する相談";
|
|
17
|
+
}, {
|
|
18
|
+
readonly id: "usage_mac";
|
|
19
|
+
readonly displayName: "MacOSの使い方に関する相談";
|
|
20
|
+
}, {
|
|
21
|
+
readonly id: "usage_fs";
|
|
22
|
+
readonly displayName: "FSの使い方に関する相談";
|
|
23
|
+
}, {
|
|
24
|
+
readonly id: "usage_vpn";
|
|
25
|
+
readonly displayName: "VPNの使い方に関する相談";
|
|
26
|
+
}, {
|
|
27
|
+
readonly id: "usage_mail";
|
|
28
|
+
readonly displayName: "メールの使い方に関する相談";
|
|
29
|
+
}, {
|
|
30
|
+
readonly id: "usage_gakujo";
|
|
31
|
+
readonly displayName: "学情の使い方に関する相談";
|
|
32
|
+
}, {
|
|
33
|
+
readonly id: "usage_onedrive";
|
|
34
|
+
readonly displayName: "OneDriveの使い方に関する相談";
|
|
35
|
+
}, {
|
|
36
|
+
readonly id: "usage_printer";
|
|
37
|
+
readonly displayName: "プリンタの使い方に関する相談";
|
|
38
|
+
}, {
|
|
39
|
+
readonly id: "usage_vm";
|
|
40
|
+
readonly displayName: "Virtual Machineに関する相談";
|
|
41
|
+
}, {
|
|
42
|
+
readonly id: "usage_ms_software";
|
|
43
|
+
readonly displayName: "Microsoftのソフトウェアに関する相談";
|
|
44
|
+
}, {
|
|
45
|
+
readonly id: "hardware_pc";
|
|
46
|
+
readonly displayName: "PCのハードウェアに関する問題の相談";
|
|
47
|
+
}, {
|
|
48
|
+
readonly id: "problem_credential";
|
|
49
|
+
readonly displayName: "資格情報に関する相談";
|
|
50
|
+
}, {
|
|
51
|
+
readonly id: "problem_windows";
|
|
52
|
+
readonly displayName: "Windowsに関する問題";
|
|
53
|
+
}, {
|
|
54
|
+
readonly id: "problem_linux";
|
|
55
|
+
readonly displayName: "Linuxに関する問題";
|
|
56
|
+
}, {
|
|
57
|
+
readonly id: "programming";
|
|
58
|
+
readonly displayName: "プログラミングに関する相談";
|
|
59
|
+
}, {
|
|
60
|
+
readonly id: "rent";
|
|
61
|
+
readonly displayName: "貸し出しに関する相談";
|
|
62
|
+
}, {
|
|
63
|
+
readonly id: "other";
|
|
64
|
+
readonly displayName: "その他の相談";
|
|
65
|
+
}];
|
|
66
|
+
/** 定義済みカテゴリID — CONSULTATION_CATEGORIESから導出 */
|
|
67
|
+
type ConsultationCategoryId = (typeof CONSULTATION_CATEGORIES)[number]["id"];
|
|
68
|
+
/** カテゴリ型 */
|
|
69
|
+
type ConsultationCategory = {
|
|
70
|
+
readonly id: ConsultationCategoryId;
|
|
71
|
+
readonly displayName: string;
|
|
72
|
+
};
|
|
73
|
+
//#endregion
|
|
74
|
+
export { CONSULTATION_CATEGORIES, ConsultationCategory, ConsultationCategoryId };
|
|
75
|
+
//# sourceMappingURL=ConsultationCategory.d.mts.map
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/ConsultationCategory.ts
|
|
2
|
+
/**
|
|
3
|
+
* 相談カテゴリ — PC相談室で扱うトラブルの分類タグ
|
|
4
|
+
*
|
|
5
|
+
* IDと表示名のペアで構成され、追加はできるが削除はできない(履歴整合性のため)。
|
|
6
|
+
*/
|
|
7
|
+
/** 定義済みカテゴリ一覧(単一の情報源) */
|
|
8
|
+
const CONSULTATION_CATEGORIES = [
|
|
9
|
+
{
|
|
10
|
+
id: "wifi_eduroam",
|
|
11
|
+
displayName: "eduroamに対する接続方法の相談"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: "wifi_success",
|
|
15
|
+
displayName: "SUCCESSに対する接続方法の相談"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: "wifi_smartphone",
|
|
19
|
+
displayName: "スマホからのWiFi接続方法に関する相談"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "usage_mac",
|
|
23
|
+
displayName: "MacOSの使い方に関する相談"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: "usage_fs",
|
|
27
|
+
displayName: "FSの使い方に関する相談"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: "usage_vpn",
|
|
31
|
+
displayName: "VPNの使い方に関する相談"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "usage_mail",
|
|
35
|
+
displayName: "メールの使い方に関する相談"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "usage_gakujo",
|
|
39
|
+
displayName: "学情の使い方に関する相談"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "usage_onedrive",
|
|
43
|
+
displayName: "OneDriveの使い方に関する相談"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
id: "usage_printer",
|
|
47
|
+
displayName: "プリンタの使い方に関する相談"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
id: "usage_vm",
|
|
51
|
+
displayName: "Virtual Machineに関する相談"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "usage_ms_software",
|
|
55
|
+
displayName: "Microsoftのソフトウェアに関する相談"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
id: "hardware_pc",
|
|
59
|
+
displayName: "PCのハードウェアに関する問題の相談"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "problem_credential",
|
|
63
|
+
displayName: "資格情報に関する相談"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
id: "problem_windows",
|
|
67
|
+
displayName: "Windowsに関する問題"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
id: "problem_linux",
|
|
71
|
+
displayName: "Linuxに関する問題"
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: "programming",
|
|
75
|
+
displayName: "プログラミングに関する相談"
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "rent",
|
|
79
|
+
displayName: "貸し出しに関する相談"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: "other",
|
|
83
|
+
displayName: "その他の相談"
|
|
84
|
+
}
|
|
85
|
+
];
|
|
86
|
+
//#endregion
|
|
87
|
+
export { CONSULTATION_CATEGORIES };
|
|
88
|
+
|
|
89
|
+
//# sourceMappingURL=ConsultationCategory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsultationCategory.mjs","names":[],"sources":["../../../../src/domain/aggregates/karte/ConsultationCategory.ts"],"sourcesContent":["/**\n * 相談カテゴリ — PC相談室で扱うトラブルの分類タグ\n *\n * IDと表示名のペアで構成され、追加はできるが削除はできない(履歴整合性のため)。\n */\n\n/** 定義済みカテゴリ一覧(単一の情報源) */\nexport const CONSULTATION_CATEGORIES = [\n\t{ id: \"wifi_eduroam\", displayName: \"eduroamに対する接続方法の相談\" },\n\t{ id: \"wifi_success\", displayName: \"SUCCESSに対する接続方法の相談\" },\n\t{\n\t\tid: \"wifi_smartphone\",\n\t\tdisplayName: \"スマホからのWiFi接続方法に関する相談\",\n\t},\n\t{ id: \"usage_mac\", displayName: \"MacOSの使い方に関する相談\" },\n\t{ id: \"usage_fs\", displayName: \"FSの使い方に関する相談\" },\n\t{ id: \"usage_vpn\", displayName: \"VPNの使い方に関する相談\" },\n\t{ id: \"usage_mail\", displayName: \"メールの使い方に関する相談\" },\n\t{ id: \"usage_gakujo\", displayName: \"学情の使い方に関する相談\" },\n\t{ id: \"usage_onedrive\", displayName: \"OneDriveの使い方に関する相談\" },\n\t{ id: \"usage_printer\", displayName: \"プリンタの使い方に関する相談\" },\n\t{ id: \"usage_vm\", displayName: \"Virtual Machineに関する相談\" },\n\t{\n\t\tid: \"usage_ms_software\",\n\t\tdisplayName: \"Microsoftのソフトウェアに関する相談\",\n\t},\n\t{ id: \"hardware_pc\", displayName: \"PCのハードウェアに関する問題の相談\" },\n\t{ id: \"problem_credential\", displayName: \"資格情報に関する相談\" },\n\t{ id: \"problem_windows\", displayName: \"Windowsに関する問題\" },\n\t{ id: \"problem_linux\", displayName: \"Linuxに関する問題\" },\n\t{ id: \"programming\", displayName: \"プログラミングに関する相談\" },\n\t{ id: \"rent\", displayName: \"貸し出しに関する相談\" },\n\t{ id: \"other\", displayName: \"その他の相談\" },\n] as const;\n\n/** 定義済みカテゴリID — CONSULTATION_CATEGORIESから導出 */\nexport type ConsultationCategoryId = (typeof CONSULTATION_CATEGORIES)[number][\"id\"];\n\n/** カテゴリ型 */\nexport type ConsultationCategory = {\n\treadonly id: ConsultationCategoryId;\n\treadonly displayName: string;\n};\n"],"mappings":";;;;;;;AAOA,MAAa,0BAA0B;CACtC;EAAE,IAAI;EAAgB,aAAa;EAAsB;CACzD;EAAE,IAAI;EAAgB,aAAa;EAAsB;CACzD;EACC,IAAI;EACJ,aAAa;EACb;CACD;EAAE,IAAI;EAAa,aAAa;EAAmB;CACnD;EAAE,IAAI;EAAY,aAAa;EAAgB;CAC/C;EAAE,IAAI;EAAa,aAAa;EAAiB;CACjD;EAAE,IAAI;EAAc,aAAa;EAAiB;CAClD;EAAE,IAAI;EAAgB,aAAa;EAAgB;CACnD;EAAE,IAAI;EAAkB,aAAa;EAAsB;CAC3D;EAAE,IAAI;EAAiB,aAAa;EAAkB;CACtD;EAAE,IAAI;EAAY,aAAa;EAAyB;CACxD;EACC,IAAI;EACJ,aAAa;EACb;CACD;EAAE,IAAI;EAAe,aAAa;EAAsB;CACxD;EAAE,IAAI;EAAsB,aAAa;EAAc;CACvD;EAAE,IAAI;EAAmB,aAAa;EAAiB;CACvD;EAAE,IAAI;EAAiB,aAAa;EAAe;CACnD;EAAE,IAAI;EAAe,aAAa;EAAiB;CACnD;EAAE,IAAI;EAAQ,aAAa;EAAc;CACzC;EAAE,IAAI;EAAS,aAAa;EAAU;CACtC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
const require_DomainExceptions = require("../../exceptions/DomainExceptions.cjs");
|
|
2
|
+
//#region src/domain/aggregates/karte/ConsultedAt.ts
|
|
3
|
+
/**
|
|
4
|
+
* 相談日時 — 精度付き時間表現
|
|
5
|
+
*
|
|
6
|
+
* 過去データでは日時の記録精度にばらつきがある。
|
|
7
|
+
* 「年だけ判明」「日付まで判明」「日時まで判明」など、
|
|
8
|
+
* わかっている粒度を型で明示し、不明な部分を推定値で埋めない。
|
|
9
|
+
*/
|
|
10
|
+
/** 精度の選択肢一覧 */
|
|
11
|
+
const CONSULTED_AT_PRECISIONS = [
|
|
12
|
+
"year",
|
|
13
|
+
"yearMonth",
|
|
14
|
+
"date",
|
|
15
|
+
"datetime"
|
|
16
|
+
];
|
|
17
|
+
function yearOnly(year) {
|
|
18
|
+
return {
|
|
19
|
+
precision: "year",
|
|
20
|
+
year
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function yearMonth(year, month) {
|
|
24
|
+
if (month < 1 || month > 12) throw new require_DomainExceptions.InvalidConsultedAtException(`月は1〜12の範囲: ${month}`);
|
|
25
|
+
return {
|
|
26
|
+
precision: "yearMonth",
|
|
27
|
+
year,
|
|
28
|
+
month
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function dateOnly(value) {
|
|
32
|
+
return {
|
|
33
|
+
precision: "date",
|
|
34
|
+
value: new Date(value)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function dateTime(value) {
|
|
38
|
+
return {
|
|
39
|
+
precision: "datetime",
|
|
40
|
+
value: new Date(value)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 日付文字列から精度を自動判定して ConsultedAt を生成する
|
|
45
|
+
*
|
|
46
|
+
* - "2005" → yearOnly
|
|
47
|
+
* - "2005-02" → yearMonth
|
|
48
|
+
* - "2005-02-17" → dateOnly
|
|
49
|
+
* - "2005-02-17T10:00" or "2005/02/17 10:00:00" → dateTime
|
|
50
|
+
*/
|
|
51
|
+
function parseConsultedAt(input) {
|
|
52
|
+
const trimmed = input.trim().replace(/\//g, "-");
|
|
53
|
+
if (/^\d{4}$/.test(trimmed)) return yearOnly(Number(trimmed));
|
|
54
|
+
if (/^\d{4}-\d{1,2}$/.test(trimmed)) {
|
|
55
|
+
const [y, m] = trimmed.split("-").map(Number);
|
|
56
|
+
return yearMonth(y, m);
|
|
57
|
+
}
|
|
58
|
+
const dateMatch = trimmed.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
|
|
59
|
+
if (dateMatch) {
|
|
60
|
+
const isoDate = toIsoDateString(dateMatch[1], dateMatch[2], dateMatch[3]);
|
|
61
|
+
return dateOnly(/* @__PURE__ */ new Date(`${isoDate}T00:00:00`));
|
|
62
|
+
}
|
|
63
|
+
const normalized = trimmed.replace(" ", "T");
|
|
64
|
+
const dtMatch = normalized.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/);
|
|
65
|
+
if (dtMatch) {
|
|
66
|
+
const isoDate = toIsoDateString(dtMatch[1], dtMatch[2], dtMatch[3]);
|
|
67
|
+
const isoTime = [
|
|
68
|
+
dtMatch[4].padStart(2, "0"),
|
|
69
|
+
dtMatch[5].padStart(2, "0"),
|
|
70
|
+
(dtMatch[6] ?? "00").padStart(2, "0")
|
|
71
|
+
].join(":");
|
|
72
|
+
return dateTime(/* @__PURE__ */ new Date(`${isoDate}T${isoTime}`));
|
|
73
|
+
}
|
|
74
|
+
const parsed = new Date(normalized);
|
|
75
|
+
if (Number.isNaN(parsed.getTime())) throw new require_DomainExceptions.InvalidConsultedAtException(`日時のパースに失敗: "${input}"`);
|
|
76
|
+
return dateTime(parsed);
|
|
77
|
+
}
|
|
78
|
+
/** 年・月・日の文字列をゼロ埋めしてISO 8601形式に正規化する */
|
|
79
|
+
function toIsoDateString(y, m, d) {
|
|
80
|
+
return `${y.padStart(4, "0")}-${m.padStart(2, "0")}-${d.padStart(2, "0")}`;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
exports.CONSULTED_AT_PRECISIONS = CONSULTED_AT_PRECISIONS;
|
|
84
|
+
exports.dateOnly = dateOnly;
|
|
85
|
+
exports.dateTime = dateTime;
|
|
86
|
+
exports.parseConsultedAt = parseConsultedAt;
|
|
87
|
+
exports.yearMonth = yearMonth;
|
|
88
|
+
exports.yearOnly = yearOnly;
|
|
89
|
+
|
|
90
|
+
//# sourceMappingURL=ConsultedAt.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsultedAt.cjs","names":["InvalidConsultedAtException"],"sources":["../../../../src/domain/aggregates/karte/ConsultedAt.ts"],"sourcesContent":["/**\n * 相談日時 — 精度付き時間表現\n *\n * 過去データでは日時の記録精度にばらつきがある。\n * 「年だけ判明」「日付まで判明」「日時まで判明」など、\n * わかっている粒度を型で明示し、不明な部分を推定値で埋めない。\n */\n\nimport { InvalidConsultedAtException } from \"../../exceptions\";\n\n/** 年のみ判明 */\nexport type YearOnly = {\n\treadonly precision: \"year\";\n\treadonly year: number;\n};\n\n/** 年月まで判明 */\nexport type YearMonth = {\n\treadonly precision: \"yearMonth\";\n\treadonly year: number;\n\treadonly month: number; // 1–12\n};\n\n/** 日付まで判明(時刻不明) */\nexport type DateOnly = {\n\treadonly precision: \"date\";\n\treadonly value: Date;\n};\n\n/** 日時まで判明 */\nexport type DateTime = {\n\treadonly precision: \"datetime\";\n\treadonly value: Date;\n};\n\n/** 精度付き日時 */\nexport type ConsultedAt = YearOnly | YearMonth | DateOnly | DateTime;\n\n/** 精度の選択肢一覧 */\nexport const CONSULTED_AT_PRECISIONS = [\n\t\"year\",\n\t\"yearMonth\",\n\t\"date\",\n\t\"datetime\",\n] as const satisfies readonly ConsultedAt[\"precision\"][];\n\n// ============================================================================\n// Factory functions\n// ============================================================================\n\nexport function yearOnly(year: number): ConsultedAt {\n\treturn { precision: \"year\", year };\n}\n\nexport function yearMonth(year: number, month: number): ConsultedAt {\n\tif (month < 1 || month > 12) {\n\t\tthrow new InvalidConsultedAtException(`月は1〜12の範囲: ${month}`);\n\t}\n\treturn { precision: \"yearMonth\", year, month };\n}\n\nexport function dateOnly(value: Date): ConsultedAt {\n\treturn { precision: \"date\", value: new Date(value) };\n}\n\nexport function dateTime(value: Date): ConsultedAt {\n\treturn { precision: \"datetime\", value: new Date(value) };\n}\n\n// ============================================================================\n// Utility\n// ============================================================================\n\n/**\n * 日付文字列から精度を自動判定して ConsultedAt を生成する\n *\n * - \"2005\" → yearOnly\n * - \"2005-02\" → yearMonth\n * - \"2005-02-17\" → dateOnly\n * - \"2005-02-17T10:00\" or \"2005/02/17 10:00:00\" → dateTime\n */\nexport function parseConsultedAt(input: string): ConsultedAt {\n\tconst trimmed = input.trim().replace(/\\//g, \"-\");\n\n\t// YYYY のみ\n\tif (/^\\d{4}$/.test(trimmed)) {\n\t\treturn yearOnly(Number(trimmed));\n\t}\n\n\t// YYYY-MM\n\tif (/^\\d{4}-\\d{1,2}$/.test(trimmed)) {\n\t\tconst [y, m] = trimmed.split(\"-\").map(Number) as [number, number];\n\t\treturn yearMonth(y, m);\n\t}\n\n\t// YYYY-MM-DD(時刻なし)— ゼロ埋め無しを正規化してからDateに渡す\n\tconst dateMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n\tif (dateMatch) {\n\t\tconst isoDate = toIsoDateString(dateMatch[1], dateMatch[2], dateMatch[3]);\n\t\treturn dateOnly(new Date(`${isoDate}T00:00:00`));\n\t}\n\n\t// 時刻を含む(ISO形式 or スペース区切り)— ゼロ埋め無しを正規化\n\tconst normalized = trimmed.replace(\" \", \"T\");\n\tconst dtMatch = normalized.match(\n\t\t/^(\\d{4})-(\\d{1,2})-(\\d{1,2})T(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?$/,\n\t);\n\tif (dtMatch) {\n\t\tconst isoDate = toIsoDateString(dtMatch[1], dtMatch[2], dtMatch[3]);\n\t\tconst isoTime = [\n\t\t\tdtMatch[4].padStart(2, \"0\"),\n\t\t\tdtMatch[5].padStart(2, \"0\"),\n\t\t\t(dtMatch[6] ?? \"00\").padStart(2, \"0\"),\n\t\t].join(\":\");\n\t\treturn dateTime(new Date(`${isoDate}T${isoTime}`));\n\t}\n\n\t// その他の形式はDateに委譲\n\tconst parsed = new Date(normalized);\n\tif (Number.isNaN(parsed.getTime())) {\n\t\tthrow new InvalidConsultedAtException(`日時のパースに失敗: \"${input}\"`);\n\t}\n\treturn dateTime(parsed);\n}\n\n/** 年・月・日の文字列をゼロ埋めしてISO 8601形式に正規化する */\nfunction toIsoDateString(y: string, m: string, d: string): string {\n\treturn `${y.padStart(4, \"0\")}-${m.padStart(2, \"0\")}-${d.padStart(2, \"0\")}`;\n}\n"],"mappings":";;;;;;;;;;AAuCA,MAAa,0BAA0B;CACtC;CACA;CACA;CACA;CACA;AAMD,SAAgB,SAAS,MAA2B;AACnD,QAAO;EAAE,WAAW;EAAQ;EAAM;;AAGnC,SAAgB,UAAU,MAAc,OAA4B;AACnE,KAAI,QAAQ,KAAK,QAAQ,GACxB,OAAM,IAAIA,yBAAAA,4BAA4B,cAAc,QAAQ;AAE7D,QAAO;EAAE,WAAW;EAAa;EAAM;EAAO;;AAG/C,SAAgB,SAAS,OAA0B;AAClD,QAAO;EAAE,WAAW;EAAQ,OAAO,IAAI,KAAK,MAAM;EAAE;;AAGrD,SAAgB,SAAS,OAA0B;AAClD,QAAO;EAAE,WAAW;EAAY,OAAO,IAAI,KAAK,MAAM;EAAE;;;;;;;;;;AAezD,SAAgB,iBAAiB,OAA4B;CAC5D,MAAM,UAAU,MAAM,MAAM,CAAC,QAAQ,OAAO,IAAI;AAGhD,KAAI,UAAU,KAAK,QAAQ,CAC1B,QAAO,SAAS,OAAO,QAAQ,CAAC;AAIjC,KAAI,kBAAkB,KAAK,QAAQ,EAAE;EACpC,MAAM,CAAC,GAAG,KAAK,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;AAC7C,SAAO,UAAU,GAAG,EAAE;;CAIvB,MAAM,YAAY,QAAQ,MAAM,gCAAgC;AAChE,KAAI,WAAW;EACd,MAAM,UAAU,gBAAgB,UAAU,IAAI,UAAU,IAAI,UAAU,GAAG;AACzE,SAAO,yBAAS,IAAI,KAAK,GAAG,QAAQ,WAAW,CAAC;;CAIjD,MAAM,aAAa,QAAQ,QAAQ,KAAK,IAAI;CAC5C,MAAM,UAAU,WAAW,MAC1B,mEACA;AACD,KAAI,SAAS;EACZ,MAAM,UAAU,gBAAgB,QAAQ,IAAI,QAAQ,IAAI,QAAQ,GAAG;EACnE,MAAM,UAAU;GACf,QAAQ,GAAG,SAAS,GAAG,IAAI;GAC3B,QAAQ,GAAG,SAAS,GAAG,IAAI;IAC1B,QAAQ,MAAM,MAAM,SAAS,GAAG,IAAI;GACrC,CAAC,KAAK,IAAI;AACX,SAAO,yBAAS,IAAI,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;;CAInD,MAAM,SAAS,IAAI,KAAK,WAAW;AACnC,KAAI,OAAO,MAAM,OAAO,SAAS,CAAC,CACjC,OAAM,IAAIA,yBAAAA,4BAA4B,eAAe,MAAM,GAAG;AAE/D,QAAO,SAAS,OAAO;;;AAIxB,SAAS,gBAAgB,GAAW,GAAW,GAAmB;AACjE,QAAO,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/ConsultedAt.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 相談日時 — 精度付き時間表現
|
|
4
|
+
*
|
|
5
|
+
* 過去データでは日時の記録精度にばらつきがある。
|
|
6
|
+
* 「年だけ判明」「日付まで判明」「日時まで判明」など、
|
|
7
|
+
* わかっている粒度を型で明示し、不明な部分を推定値で埋めない。
|
|
8
|
+
*/
|
|
9
|
+
/** 年のみ判明 */
|
|
10
|
+
type YearOnly = {
|
|
11
|
+
readonly precision: "year";
|
|
12
|
+
readonly year: number;
|
|
13
|
+
};
|
|
14
|
+
/** 年月まで判明 */
|
|
15
|
+
type YearMonth = {
|
|
16
|
+
readonly precision: "yearMonth";
|
|
17
|
+
readonly year: number;
|
|
18
|
+
readonly month: number;
|
|
19
|
+
};
|
|
20
|
+
/** 日付まで判明(時刻不明) */
|
|
21
|
+
type DateOnly = {
|
|
22
|
+
readonly precision: "date";
|
|
23
|
+
readonly value: Date;
|
|
24
|
+
};
|
|
25
|
+
/** 日時まで判明 */
|
|
26
|
+
type DateTime = {
|
|
27
|
+
readonly precision: "datetime";
|
|
28
|
+
readonly value: Date;
|
|
29
|
+
};
|
|
30
|
+
/** 精度付き日時 */
|
|
31
|
+
type ConsultedAt = YearOnly | YearMonth | DateOnly | DateTime;
|
|
32
|
+
/** 精度の選択肢一覧 */
|
|
33
|
+
declare const CONSULTED_AT_PRECISIONS: readonly ["year", "yearMonth", "date", "datetime"];
|
|
34
|
+
declare function yearOnly(year: number): ConsultedAt;
|
|
35
|
+
declare function yearMonth(year: number, month: number): ConsultedAt;
|
|
36
|
+
declare function dateOnly(value: Date): ConsultedAt;
|
|
37
|
+
declare function dateTime(value: Date): ConsultedAt;
|
|
38
|
+
/**
|
|
39
|
+
* 日付文字列から精度を自動判定して ConsultedAt を生成する
|
|
40
|
+
*
|
|
41
|
+
* - "2005" → yearOnly
|
|
42
|
+
* - "2005-02" → yearMonth
|
|
43
|
+
* - "2005-02-17" → dateOnly
|
|
44
|
+
* - "2005-02-17T10:00" or "2005/02/17 10:00:00" → dateTime
|
|
45
|
+
*/
|
|
46
|
+
declare function parseConsultedAt(input: string): ConsultedAt;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { CONSULTED_AT_PRECISIONS, ConsultedAt, DateOnly, DateTime, YearMonth, YearOnly, dateOnly, dateTime, parseConsultedAt, yearMonth, yearOnly };
|
|
49
|
+
//# sourceMappingURL=ConsultedAt.d.cts.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/ConsultedAt.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* 相談日時 — 精度付き時間表現
|
|
4
|
+
*
|
|
5
|
+
* 過去データでは日時の記録精度にばらつきがある。
|
|
6
|
+
* 「年だけ判明」「日付まで判明」「日時まで判明」など、
|
|
7
|
+
* わかっている粒度を型で明示し、不明な部分を推定値で埋めない。
|
|
8
|
+
*/
|
|
9
|
+
/** 年のみ判明 */
|
|
10
|
+
type YearOnly = {
|
|
11
|
+
readonly precision: "year";
|
|
12
|
+
readonly year: number;
|
|
13
|
+
};
|
|
14
|
+
/** 年月まで判明 */
|
|
15
|
+
type YearMonth = {
|
|
16
|
+
readonly precision: "yearMonth";
|
|
17
|
+
readonly year: number;
|
|
18
|
+
readonly month: number;
|
|
19
|
+
};
|
|
20
|
+
/** 日付まで判明(時刻不明) */
|
|
21
|
+
type DateOnly = {
|
|
22
|
+
readonly precision: "date";
|
|
23
|
+
readonly value: Date;
|
|
24
|
+
};
|
|
25
|
+
/** 日時まで判明 */
|
|
26
|
+
type DateTime = {
|
|
27
|
+
readonly precision: "datetime";
|
|
28
|
+
readonly value: Date;
|
|
29
|
+
};
|
|
30
|
+
/** 精度付き日時 */
|
|
31
|
+
type ConsultedAt = YearOnly | YearMonth | DateOnly | DateTime;
|
|
32
|
+
/** 精度の選択肢一覧 */
|
|
33
|
+
declare const CONSULTED_AT_PRECISIONS: readonly ["year", "yearMonth", "date", "datetime"];
|
|
34
|
+
declare function yearOnly(year: number): ConsultedAt;
|
|
35
|
+
declare function yearMonth(year: number, month: number): ConsultedAt;
|
|
36
|
+
declare function dateOnly(value: Date): ConsultedAt;
|
|
37
|
+
declare function dateTime(value: Date): ConsultedAt;
|
|
38
|
+
/**
|
|
39
|
+
* 日付文字列から精度を自動判定して ConsultedAt を生成する
|
|
40
|
+
*
|
|
41
|
+
* - "2005" → yearOnly
|
|
42
|
+
* - "2005-02" → yearMonth
|
|
43
|
+
* - "2005-02-17" → dateOnly
|
|
44
|
+
* - "2005-02-17T10:00" or "2005/02/17 10:00:00" → dateTime
|
|
45
|
+
*/
|
|
46
|
+
declare function parseConsultedAt(input: string): ConsultedAt;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { CONSULTED_AT_PRECISIONS, ConsultedAt, DateOnly, DateTime, YearMonth, YearOnly, dateOnly, dateTime, parseConsultedAt, yearMonth, yearOnly };
|
|
49
|
+
//# sourceMappingURL=ConsultedAt.d.mts.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { InvalidConsultedAtException } from "../../exceptions/DomainExceptions.mjs";
|
|
2
|
+
//#region src/domain/aggregates/karte/ConsultedAt.ts
|
|
3
|
+
/**
|
|
4
|
+
* 相談日時 — 精度付き時間表現
|
|
5
|
+
*
|
|
6
|
+
* 過去データでは日時の記録精度にばらつきがある。
|
|
7
|
+
* 「年だけ判明」「日付まで判明」「日時まで判明」など、
|
|
8
|
+
* わかっている粒度を型で明示し、不明な部分を推定値で埋めない。
|
|
9
|
+
*/
|
|
10
|
+
/** 精度の選択肢一覧 */
|
|
11
|
+
const CONSULTED_AT_PRECISIONS = [
|
|
12
|
+
"year",
|
|
13
|
+
"yearMonth",
|
|
14
|
+
"date",
|
|
15
|
+
"datetime"
|
|
16
|
+
];
|
|
17
|
+
function yearOnly(year) {
|
|
18
|
+
return {
|
|
19
|
+
precision: "year",
|
|
20
|
+
year
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function yearMonth(year, month) {
|
|
24
|
+
if (month < 1 || month > 12) throw new InvalidConsultedAtException(`月は1〜12の範囲: ${month}`);
|
|
25
|
+
return {
|
|
26
|
+
precision: "yearMonth",
|
|
27
|
+
year,
|
|
28
|
+
month
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function dateOnly(value) {
|
|
32
|
+
return {
|
|
33
|
+
precision: "date",
|
|
34
|
+
value: new Date(value)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function dateTime(value) {
|
|
38
|
+
return {
|
|
39
|
+
precision: "datetime",
|
|
40
|
+
value: new Date(value)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 日付文字列から精度を自動判定して ConsultedAt を生成する
|
|
45
|
+
*
|
|
46
|
+
* - "2005" → yearOnly
|
|
47
|
+
* - "2005-02" → yearMonth
|
|
48
|
+
* - "2005-02-17" → dateOnly
|
|
49
|
+
* - "2005-02-17T10:00" or "2005/02/17 10:00:00" → dateTime
|
|
50
|
+
*/
|
|
51
|
+
function parseConsultedAt(input) {
|
|
52
|
+
const trimmed = input.trim().replace(/\//g, "-");
|
|
53
|
+
if (/^\d{4}$/.test(trimmed)) return yearOnly(Number(trimmed));
|
|
54
|
+
if (/^\d{4}-\d{1,2}$/.test(trimmed)) {
|
|
55
|
+
const [y, m] = trimmed.split("-").map(Number);
|
|
56
|
+
return yearMonth(y, m);
|
|
57
|
+
}
|
|
58
|
+
const dateMatch = trimmed.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/);
|
|
59
|
+
if (dateMatch) {
|
|
60
|
+
const isoDate = toIsoDateString(dateMatch[1], dateMatch[2], dateMatch[3]);
|
|
61
|
+
return dateOnly(/* @__PURE__ */ new Date(`${isoDate}T00:00:00`));
|
|
62
|
+
}
|
|
63
|
+
const normalized = trimmed.replace(" ", "T");
|
|
64
|
+
const dtMatch = normalized.match(/^(\d{4})-(\d{1,2})-(\d{1,2})T(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/);
|
|
65
|
+
if (dtMatch) {
|
|
66
|
+
const isoDate = toIsoDateString(dtMatch[1], dtMatch[2], dtMatch[3]);
|
|
67
|
+
const isoTime = [
|
|
68
|
+
dtMatch[4].padStart(2, "0"),
|
|
69
|
+
dtMatch[5].padStart(2, "0"),
|
|
70
|
+
(dtMatch[6] ?? "00").padStart(2, "0")
|
|
71
|
+
].join(":");
|
|
72
|
+
return dateTime(/* @__PURE__ */ new Date(`${isoDate}T${isoTime}`));
|
|
73
|
+
}
|
|
74
|
+
const parsed = new Date(normalized);
|
|
75
|
+
if (Number.isNaN(parsed.getTime())) throw new InvalidConsultedAtException(`日時のパースに失敗: "${input}"`);
|
|
76
|
+
return dateTime(parsed);
|
|
77
|
+
}
|
|
78
|
+
/** 年・月・日の文字列をゼロ埋めしてISO 8601形式に正規化する */
|
|
79
|
+
function toIsoDateString(y, m, d) {
|
|
80
|
+
return `${y.padStart(4, "0")}-${m.padStart(2, "0")}-${d.padStart(2, "0")}`;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { CONSULTED_AT_PRECISIONS, dateOnly, dateTime, parseConsultedAt, yearMonth, yearOnly };
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=ConsultedAt.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConsultedAt.mjs","names":[],"sources":["../../../../src/domain/aggregates/karte/ConsultedAt.ts"],"sourcesContent":["/**\n * 相談日時 — 精度付き時間表現\n *\n * 過去データでは日時の記録精度にばらつきがある。\n * 「年だけ判明」「日付まで判明」「日時まで判明」など、\n * わかっている粒度を型で明示し、不明な部分を推定値で埋めない。\n */\n\nimport { InvalidConsultedAtException } from \"../../exceptions\";\n\n/** 年のみ判明 */\nexport type YearOnly = {\n\treadonly precision: \"year\";\n\treadonly year: number;\n};\n\n/** 年月まで判明 */\nexport type YearMonth = {\n\treadonly precision: \"yearMonth\";\n\treadonly year: number;\n\treadonly month: number; // 1–12\n};\n\n/** 日付まで判明(時刻不明) */\nexport type DateOnly = {\n\treadonly precision: \"date\";\n\treadonly value: Date;\n};\n\n/** 日時まで判明 */\nexport type DateTime = {\n\treadonly precision: \"datetime\";\n\treadonly value: Date;\n};\n\n/** 精度付き日時 */\nexport type ConsultedAt = YearOnly | YearMonth | DateOnly | DateTime;\n\n/** 精度の選択肢一覧 */\nexport const CONSULTED_AT_PRECISIONS = [\n\t\"year\",\n\t\"yearMonth\",\n\t\"date\",\n\t\"datetime\",\n] as const satisfies readonly ConsultedAt[\"precision\"][];\n\n// ============================================================================\n// Factory functions\n// ============================================================================\n\nexport function yearOnly(year: number): ConsultedAt {\n\treturn { precision: \"year\", year };\n}\n\nexport function yearMonth(year: number, month: number): ConsultedAt {\n\tif (month < 1 || month > 12) {\n\t\tthrow new InvalidConsultedAtException(`月は1〜12の範囲: ${month}`);\n\t}\n\treturn { precision: \"yearMonth\", year, month };\n}\n\nexport function dateOnly(value: Date): ConsultedAt {\n\treturn { precision: \"date\", value: new Date(value) };\n}\n\nexport function dateTime(value: Date): ConsultedAt {\n\treturn { precision: \"datetime\", value: new Date(value) };\n}\n\n// ============================================================================\n// Utility\n// ============================================================================\n\n/**\n * 日付文字列から精度を自動判定して ConsultedAt を生成する\n *\n * - \"2005\" → yearOnly\n * - \"2005-02\" → yearMonth\n * - \"2005-02-17\" → dateOnly\n * - \"2005-02-17T10:00\" or \"2005/02/17 10:00:00\" → dateTime\n */\nexport function parseConsultedAt(input: string): ConsultedAt {\n\tconst trimmed = input.trim().replace(/\\//g, \"-\");\n\n\t// YYYY のみ\n\tif (/^\\d{4}$/.test(trimmed)) {\n\t\treturn yearOnly(Number(trimmed));\n\t}\n\n\t// YYYY-MM\n\tif (/^\\d{4}-\\d{1,2}$/.test(trimmed)) {\n\t\tconst [y, m] = trimmed.split(\"-\").map(Number) as [number, number];\n\t\treturn yearMonth(y, m);\n\t}\n\n\t// YYYY-MM-DD(時刻なし)— ゼロ埋め無しを正規化してからDateに渡す\n\tconst dateMatch = trimmed.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n\tif (dateMatch) {\n\t\tconst isoDate = toIsoDateString(dateMatch[1], dateMatch[2], dateMatch[3]);\n\t\treturn dateOnly(new Date(`${isoDate}T00:00:00`));\n\t}\n\n\t// 時刻を含む(ISO形式 or スペース区切り)— ゼロ埋め無しを正規化\n\tconst normalized = trimmed.replace(\" \", \"T\");\n\tconst dtMatch = normalized.match(\n\t\t/^(\\d{4})-(\\d{1,2})-(\\d{1,2})T(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?$/,\n\t);\n\tif (dtMatch) {\n\t\tconst isoDate = toIsoDateString(dtMatch[1], dtMatch[2], dtMatch[3]);\n\t\tconst isoTime = [\n\t\t\tdtMatch[4].padStart(2, \"0\"),\n\t\t\tdtMatch[5].padStart(2, \"0\"),\n\t\t\t(dtMatch[6] ?? \"00\").padStart(2, \"0\"),\n\t\t].join(\":\");\n\t\treturn dateTime(new Date(`${isoDate}T${isoTime}`));\n\t}\n\n\t// その他の形式はDateに委譲\n\tconst parsed = new Date(normalized);\n\tif (Number.isNaN(parsed.getTime())) {\n\t\tthrow new InvalidConsultedAtException(`日時のパースに失敗: \"${input}\"`);\n\t}\n\treturn dateTime(parsed);\n}\n\n/** 年・月・日の文字列をゼロ埋めしてISO 8601形式に正規化する */\nfunction toIsoDateString(y: string, m: string, d: string): string {\n\treturn `${y.padStart(4, \"0\")}-${m.padStart(2, \"0\")}-${d.padStart(2, \"0\")}`;\n}\n"],"mappings":";;;;;;;;;;AAuCA,MAAa,0BAA0B;CACtC;CACA;CACA;CACA;CACA;AAMD,SAAgB,SAAS,MAA2B;AACnD,QAAO;EAAE,WAAW;EAAQ;EAAM;;AAGnC,SAAgB,UAAU,MAAc,OAA4B;AACnE,KAAI,QAAQ,KAAK,QAAQ,GACxB,OAAM,IAAI,4BAA4B,cAAc,QAAQ;AAE7D,QAAO;EAAE,WAAW;EAAa;EAAM;EAAO;;AAG/C,SAAgB,SAAS,OAA0B;AAClD,QAAO;EAAE,WAAW;EAAQ,OAAO,IAAI,KAAK,MAAM;EAAE;;AAGrD,SAAgB,SAAS,OAA0B;AAClD,QAAO;EAAE,WAAW;EAAY,OAAO,IAAI,KAAK,MAAM;EAAE;;;;;;;;;;AAezD,SAAgB,iBAAiB,OAA4B;CAC5D,MAAM,UAAU,MAAM,MAAM,CAAC,QAAQ,OAAO,IAAI;AAGhD,KAAI,UAAU,KAAK,QAAQ,CAC1B,QAAO,SAAS,OAAO,QAAQ,CAAC;AAIjC,KAAI,kBAAkB,KAAK,QAAQ,EAAE;EACpC,MAAM,CAAC,GAAG,KAAK,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;AAC7C,SAAO,UAAU,GAAG,EAAE;;CAIvB,MAAM,YAAY,QAAQ,MAAM,gCAAgC;AAChE,KAAI,WAAW;EACd,MAAM,UAAU,gBAAgB,UAAU,IAAI,UAAU,IAAI,UAAU,GAAG;AACzE,SAAO,yBAAS,IAAI,KAAK,GAAG,QAAQ,WAAW,CAAC;;CAIjD,MAAM,aAAa,QAAQ,QAAQ,KAAK,IAAI;CAC5C,MAAM,UAAU,WAAW,MAC1B,mEACA;AACD,KAAI,SAAS;EACZ,MAAM,UAAU,gBAAgB,QAAQ,IAAI,QAAQ,IAAI,QAAQ,GAAG;EACnE,MAAM,UAAU;GACf,QAAQ,GAAG,SAAS,GAAG,IAAI;GAC3B,QAAQ,GAAG,SAAS,GAAG,IAAI;IAC1B,QAAQ,MAAM,MAAM,SAAS,GAAG,IAAI;GACrC,CAAC,KAAK,IAAI;AACX,SAAO,yBAAS,IAAI,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC;;CAInD,MAAM,SAAS,IAAI,KAAK,WAAW;AACnC,KAAI,OAAO,MAAM,OAAO,SAAS,CAAC,CACjC,OAAM,IAAI,4BAA4B,eAAe,MAAM,GAAG;AAE/D,QAAO,SAAS,OAAO;;;AAIxB,SAAS,gBAAgB,GAAW,GAAW,GAAmB;AACjE,QAAO,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/FollowUp.ts
|
|
2
|
+
/** 後処理の選択肢一覧 */
|
|
3
|
+
const FOLLOW_UP_OPTIONS = [
|
|
4
|
+
"技術部",
|
|
5
|
+
"生協",
|
|
6
|
+
"情報基盤センター",
|
|
7
|
+
"見送り",
|
|
8
|
+
"その他"
|
|
9
|
+
];
|
|
10
|
+
//#endregion
|
|
11
|
+
exports.FOLLOW_UP_OPTIONS = FOLLOW_UP_OPTIONS;
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=FollowUp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowUp.cjs","names":[],"sources":["../../../../src/domain/aggregates/karte/FollowUp.ts"],"sourcesContent":["/** 後処理の選択肢一覧 */\nexport const FOLLOW_UP_OPTIONS = [\n\t\"技術部\",\n\t\"生協\",\n\t\"情報基盤センター\",\n\t\"見送り\",\n\t\"その他\",\n] as const;\n\n/** 後処理 — 相談対応後のアクション */\nexport type FollowUp = (typeof FOLLOW_UP_OPTIONS)[number];\n"],"mappings":";;AACA,MAAa,oBAAoB;CAChC;CACA;CACA;CACA;CACA;CACA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/FollowUp.d.ts
|
|
2
|
+
/** 後処理の選択肢一覧 */
|
|
3
|
+
declare const FOLLOW_UP_OPTIONS: readonly ["技術部", "生協", "情報基盤センター", "見送り", "その他"];
|
|
4
|
+
/** 後処理 — 相談対応後のアクション */
|
|
5
|
+
type FollowUp = (typeof FOLLOW_UP_OPTIONS)[number];
|
|
6
|
+
//#endregion
|
|
7
|
+
export { FOLLOW_UP_OPTIONS, FollowUp };
|
|
8
|
+
//# sourceMappingURL=FollowUp.d.cts.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
//#region src/domain/aggregates/karte/FollowUp.d.ts
|
|
2
|
+
/** 後処理の選択肢一覧 */
|
|
3
|
+
declare const FOLLOW_UP_OPTIONS: readonly ["技術部", "生協", "情報基盤センター", "見送り", "その他"];
|
|
4
|
+
/** 後処理 — 相談対応後のアクション */
|
|
5
|
+
type FollowUp = (typeof FOLLOW_UP_OPTIONS)[number];
|
|
6
|
+
//#endregion
|
|
7
|
+
export { FOLLOW_UP_OPTIONS, FollowUp };
|
|
8
|
+
//# sourceMappingURL=FollowUp.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FollowUp.mjs","names":[],"sources":["../../../../src/domain/aggregates/karte/FollowUp.ts"],"sourcesContent":["/** 後処理の選択肢一覧 */\nexport const FOLLOW_UP_OPTIONS = [\n\t\"技術部\",\n\t\"生協\",\n\t\"情報基盤センター\",\n\t\"見送り\",\n\t\"その他\",\n] as const;\n\n/** 後処理 — 相談対応後のアクション */\nexport type FollowUp = (typeof FOLLOW_UP_OPTIONS)[number];\n"],"mappings":";;AACA,MAAa,oBAAoB;CAChC;CACA;CACA;CACA;CACA;CACA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const require_Recorded = require("../../shared/Recorded.cjs");
|
|
2
|
+
require("../../shared/index.cjs");
|
|
3
|
+
//#region src/domain/aggregates/karte/Karte.ts
|
|
4
|
+
/**
|
|
5
|
+
* カルテ集約ルート
|
|
6
|
+
*
|
|
7
|
+
* PC相談室での相談記録を表す。
|
|
8
|
+
* 同意事項・相談事・対応記録という3つのドメイン概念で構成される。
|
|
9
|
+
* 作成時に全データが揃うイミュータブルな記録であり、
|
|
10
|
+
* 修正は correct() による明示的な訂正操作のみ許可する。
|
|
11
|
+
*
|
|
12
|
+
* 過去データでは一部フィールドが未記録(Recorded型のnotRecorded)の場合がある。
|
|
13
|
+
* 新規作成時は create() により全フィールドの完全性を保証する。
|
|
14
|
+
*/
|
|
15
|
+
var Karte = class Karte {
|
|
16
|
+
/**
|
|
17
|
+
* Dateはミュータブルなため、privateで保持しgetterで防御的コピーを返す。
|
|
18
|
+
* readonlyは再代入を防ぐが、Date.setTime()等の破壊的メソッドは防げない。
|
|
19
|
+
*/
|
|
20
|
+
_recordedAt;
|
|
21
|
+
_lastUpdatedAt;
|
|
22
|
+
constructor(id, recordedAt, consultedAt, lastUpdatedAt, client, consent, consultation, supportRecord) {
|
|
23
|
+
this.id = id;
|
|
24
|
+
this.consultedAt = consultedAt;
|
|
25
|
+
this.client = client;
|
|
26
|
+
this.consent = consent;
|
|
27
|
+
this.consultation = consultation;
|
|
28
|
+
this.supportRecord = supportRecord;
|
|
29
|
+
this._recordedAt = recordedAt;
|
|
30
|
+
this._lastUpdatedAt = lastUpdatedAt;
|
|
31
|
+
}
|
|
32
|
+
/** 記録日時 */
|
|
33
|
+
get recordedAt() {
|
|
34
|
+
return new Date(this._recordedAt);
|
|
35
|
+
}
|
|
36
|
+
/** 最終更新日時 */
|
|
37
|
+
get lastUpdatedAt() {
|
|
38
|
+
return new Date(this._lastUpdatedAt);
|
|
39
|
+
}
|
|
40
|
+
/** 新規カルテの作成 — 全フィールド完全であることを型で保証する */
|
|
41
|
+
static create(props) {
|
|
42
|
+
const now = Date.now();
|
|
43
|
+
return new Karte(props.id, new Date(now), require_Recorded.recorded(props.consultedAt), new Date(now), require_Recorded.recorded(props.client), props.consent, toConsultation(props), toSupportRecord(props));
|
|
44
|
+
}
|
|
45
|
+
/** 永続化データからの復元 — バリデーションなし */
|
|
46
|
+
static reconstruct(props) {
|
|
47
|
+
return new Karte(props.id, props.recordedAt, props.consultedAt, props.lastUpdatedAt, props.client, props.consent, props.consultation, props.supportRecord);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* カルテの訂正
|
|
51
|
+
*
|
|
52
|
+
* 記録ミスの修正など、既存カルテの内容を訂正した新しいインスタンスを返す。
|
|
53
|
+
* recordedAt(元の記録日時)は保持し、lastUpdatedAt を現在時刻に更新する。
|
|
54
|
+
* 完全な生の値を受け取り、不変条件は型で保証する。
|
|
55
|
+
*/
|
|
56
|
+
correct(props) {
|
|
57
|
+
return new Karte(this.id, this.recordedAt, require_Recorded.recorded(props.consultedAt), /* @__PURE__ */ new Date(), require_Recorded.recorded(props.client), props.consent, toConsultation(props), toSupportRecord(props));
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
/** 生の入力から Consultation(Recorded付き)を構築する */
|
|
61
|
+
function toConsultation(props) {
|
|
62
|
+
return {
|
|
63
|
+
categories: require_Recorded.recorded(props.consultation.categories),
|
|
64
|
+
targetDevice: require_Recorded.recorded(props.consultation.targetDevice),
|
|
65
|
+
troubleDetails: require_Recorded.recorded(props.consultation.troubleDetails)
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** 生の入力から SupportRecord(Recorded付き)を構築する */
|
|
69
|
+
function toSupportRecord(props) {
|
|
70
|
+
const [first, ...rest] = props.supportRecord.assignedMemberIds;
|
|
71
|
+
return {
|
|
72
|
+
assignees: require_Recorded.recorded([{
|
|
73
|
+
type: "resolved",
|
|
74
|
+
memberId: first
|
|
75
|
+
}, ...rest.map((memberId) => ({
|
|
76
|
+
type: "resolved",
|
|
77
|
+
memberId
|
|
78
|
+
}))]),
|
|
79
|
+
content: require_Recorded.recorded(props.supportRecord.content),
|
|
80
|
+
resolution: require_Recorded.recorded(toRecordedResolution(props.supportRecord.resolution)),
|
|
81
|
+
workDuration: require_Recorded.recorded(props.supportRecord.workDuration)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function toRecordedResolution(complete) {
|
|
85
|
+
if (complete.type === "resolved") return { type: "resolved" };
|
|
86
|
+
return {
|
|
87
|
+
type: "unresolved",
|
|
88
|
+
followUp: require_Recorded.recorded(complete.followUp)
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
//#endregion
|
|
92
|
+
exports.Karte = Karte;
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=Karte.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Karte.cjs","names":["recorded"],"sources":["../../../../src/domain/aggregates/karte/Karte.ts"],"sourcesContent":["import type { MemberId } from \"#domain\";\nimport type { NonEmptyArray } from \"../../base\";\nimport type { NonEmptyString } from \"../../base\";\nimport type { CompleteAffiliation } from \"../../shared\";\nimport type { StudentId } from \"../../shared\";\nimport { type Recorded, recorded } from \"../../shared\";\nimport type { Assignee } from \"./Assignee\";\nimport type { Client } from \"./Client\";\nimport type { Consent } from \"./Consent\";\nimport type { Consultation } from \"./Consultation\";\nimport type { ConsultationCategory } from \"./ConsultationCategory\";\nimport type { ConsultedAt } from \"./ConsultedAt\";\nimport type { FollowUp } from \"./FollowUp\";\nimport type { KarteId } from \"./KarteId\";\nimport type { Resolution } from \"./Resolution\";\nimport type { SupportRecord } from \"./SupportRecord\";\nimport type { WorkDuration } from \"./WorkDuration\";\n\n/** 新規作成・訂正時の解決ステータス — 後処理は必須 */\nexport type CompleteResolution =\n\t| { readonly type: \"resolved\" }\n\t| {\n\t\t\treadonly type: \"unresolved\";\n\t\t\treadonly followUp: FollowUp;\n\t };\n\n/**\n * 新規作成・訂正時の相談者\n *\n * 完全なAffiliationのみ受け付ける。PartialAffiliationは不可。\n */\nexport type CompleteClient =\n\t| {\n\t\t\treadonly type: \"student\";\n\t\t\treadonly studentId: StudentId;\n\t\t\treadonly name: string;\n\t\t\treadonly affiliation: CompleteAffiliation;\n\t }\n\t| { readonly type: \"teacher\"; readonly name: string }\n\t| { readonly type: \"staff\"; readonly name: string }\n\t| { readonly type: \"other\"; readonly name: string };\n\n/**\n * カルテの内容を表す入力型\n *\n * create/correctの共通部分。全フィールドが完全に揃った状態を要求する。\n * Recorded型は使わず、生の値を受け取る。\n */\nexport type KarteContentProps = {\n\treadonly consultedAt: ConsultedAt;\n\treadonly client: CompleteClient;\n\treadonly consent: Consent;\n\treadonly consultation: {\n\t\treadonly categories: NonEmptyArray<ConsultationCategory>;\n\t\treadonly targetDevice: NonEmptyString;\n\t\treadonly troubleDetails: NonEmptyString;\n\t};\n\treadonly supportRecord: {\n\t\treadonly assignedMemberIds: NonEmptyArray<MemberId>;\n\t\treadonly content: NonEmptyString;\n\t\treadonly resolution: CompleteResolution;\n\t\treadonly workDuration: WorkDuration;\n\t};\n};\n\n/** 新規カルテ作成時の入力型 */\ntype KarteCreationProps = KarteContentProps & { readonly id: KarteId };\n\n/** 永続化データからの復元時の入力型 */\ntype KarteReconstructProps = {\n\treadonly id: KarteId;\n\treadonly recordedAt: Date;\n\treadonly consultedAt: Recorded<ConsultedAt>;\n\treadonly lastUpdatedAt: Date;\n\treadonly client: Recorded<Client>;\n\treadonly consent: Consent;\n\treadonly consultation: Consultation;\n\treadonly supportRecord: SupportRecord;\n};\n\n/**\n * カルテ集約ルート\n *\n * PC相談室での相談記録を表す。\n * 同意事項・相談事・対応記録という3つのドメイン概念で構成される。\n * 作成時に全データが揃うイミュータブルな記録であり、\n * 修正は correct() による明示的な訂正操作のみ許可する。\n *\n * 過去データでは一部フィールドが未記録(Recorded型のnotRecorded)の場合がある。\n * 新規作成時は create() により全フィールドの完全性を保証する。\n */\nexport class Karte {\n\t/**\n\t * Dateはミュータブルなため、privateで保持しgetterで防御的コピーを返す。\n\t * readonlyは再代入を防ぐが、Date.setTime()等の破壊的メソッドは防げない。\n\t */\n\tprivate readonly _recordedAt: Date;\n\tprivate readonly _lastUpdatedAt: Date;\n\n\tprivate constructor(\n\t\tpublic readonly id: KarteId,\n\t\trecordedAt: Date,\n\t\t/** 相談日時 */\n\t\tpublic readonly consultedAt: Recorded<ConsultedAt>,\n\t\tlastUpdatedAt: Date,\n\t\t/** 相談者 */\n\t\tpublic readonly client: Recorded<Client>,\n\t\t/** 同意事項 */\n\t\tpublic readonly consent: Consent,\n\t\t/** 相談事 */\n\t\tpublic readonly consultation: Consultation,\n\t\t/** 対応記録 */\n\t\tpublic readonly supportRecord: SupportRecord,\n\t) {\n\t\tthis._recordedAt = recordedAt;\n\t\tthis._lastUpdatedAt = lastUpdatedAt;\n\t}\n\n\t/** 記録日時 */\n\tget recordedAt(): Date {\n\t\treturn new Date(this._recordedAt);\n\t}\n\n\t/** 最終更新日時 */\n\tget lastUpdatedAt(): Date {\n\t\treturn new Date(this._lastUpdatedAt);\n\t}\n\n\t/** 新規カルテの作成 — 全フィールド完全であることを型で保証する */\n\tstatic create(props: KarteCreationProps): Karte {\n\t\tconst now = Date.now();\n\t\treturn new Karte(\n\t\t\tprops.id,\n\t\t\tnew Date(now),\n\t\t\trecorded(props.consultedAt),\n\t\t\tnew Date(now),\n\t\t\trecorded(props.client),\n\t\t\tprops.consent,\n\t\t\ttoConsultation(props),\n\t\t\ttoSupportRecord(props),\n\t\t);\n\t}\n\n\t/** 永続化データからの復元 — バリデーションなし */\n\tstatic reconstruct(props: KarteReconstructProps): Karte {\n\t\treturn new Karte(\n\t\t\tprops.id,\n\t\t\tprops.recordedAt,\n\t\t\tprops.consultedAt,\n\t\t\tprops.lastUpdatedAt,\n\t\t\tprops.client,\n\t\t\tprops.consent,\n\t\t\tprops.consultation,\n\t\t\tprops.supportRecord,\n\t\t);\n\t}\n\n\t/**\n\t * カルテの訂正\n\t *\n\t * 記録ミスの修正など、既存カルテの内容を訂正した新しいインスタンスを返す。\n\t * recordedAt(元の記録日時)は保持し、lastUpdatedAt を現在時刻に更新する。\n\t * 完全な生の値を受け取り、不変条件は型で保証する。\n\t */\n\tcorrect(props: KarteContentProps): Karte {\n\t\treturn new Karte(\n\t\t\tthis.id,\n\t\t\tthis.recordedAt,\n\t\t\trecorded(props.consultedAt),\n\t\t\tnew Date(),\n\t\t\trecorded(props.client),\n\t\t\tprops.consent,\n\t\t\ttoConsultation(props),\n\t\t\ttoSupportRecord(props),\n\t\t);\n\t}\n}\n\n/** 生の入力から Consultation(Recorded付き)を構築する */\nfunction toConsultation(props: KarteContentProps): Consultation {\n\treturn {\n\t\tcategories: recorded(props.consultation.categories),\n\t\ttargetDevice: recorded(props.consultation.targetDevice),\n\t\ttroubleDetails: recorded(props.consultation.troubleDetails),\n\t};\n}\n\n/** 生の入力から SupportRecord(Recorded付き)を構築する */\nfunction toSupportRecord(props: KarteContentProps): SupportRecord {\n\tconst [first, ...rest] = props.supportRecord.assignedMemberIds;\n\tconst assignees: NonEmptyArray<Assignee> = [\n\t\t{ type: \"resolved\", memberId: first },\n\t\t...rest.map((memberId): Assignee => ({ type: \"resolved\", memberId })),\n\t];\n\n\treturn {\n\t\tassignees: recorded(assignees),\n\t\tcontent: recorded(props.supportRecord.content),\n\t\tresolution: recorded(toRecordedResolution(props.supportRecord.resolution)),\n\t\tworkDuration: recorded(props.supportRecord.workDuration),\n\t};\n}\n\nfunction toRecordedResolution(complete: CompleteResolution): Resolution {\n\tif (complete.type === \"resolved\") {\n\t\treturn { type: \"resolved\" };\n\t}\n\treturn {\n\t\ttype: \"unresolved\",\n\t\tfollowUp: recorded(complete.followUp),\n\t};\n}\n"],"mappings":";;;;;;;;;;;;;;AA2FA,IAAa,QAAb,MAAa,MAAM;;;;;CAKlB;CACA;CAEA,YACC,IACA,YAEA,aACA,eAEA,QAEA,SAEA,cAEA,eACC;AAbe,OAAA,KAAA;AAGA,OAAA,cAAA;AAGA,OAAA,SAAA;AAEA,OAAA,UAAA;AAEA,OAAA,eAAA;AAEA,OAAA,gBAAA;AAEhB,OAAK,cAAc;AACnB,OAAK,iBAAiB;;;CAIvB,IAAI,aAAmB;AACtB,SAAO,IAAI,KAAK,KAAK,YAAY;;;CAIlC,IAAI,gBAAsB;AACzB,SAAO,IAAI,KAAK,KAAK,eAAe;;;CAIrC,OAAO,OAAO,OAAkC;EAC/C,MAAM,MAAM,KAAK,KAAK;AACtB,SAAO,IAAI,MACV,MAAM,IACN,IAAI,KAAK,IAAI,EACbA,iBAAAA,SAAS,MAAM,YAAY,EAC3B,IAAI,KAAK,IAAI,EACbA,iBAAAA,SAAS,MAAM,OAAO,EACtB,MAAM,SACN,eAAe,MAAM,EACrB,gBAAgB,MAAM,CACtB;;;CAIF,OAAO,YAAY,OAAqC;AACvD,SAAO,IAAI,MACV,MAAM,IACN,MAAM,YACN,MAAM,aACN,MAAM,eACN,MAAM,QACN,MAAM,SACN,MAAM,cACN,MAAM,cACN;;;;;;;;;CAUF,QAAQ,OAAiC;AACxC,SAAO,IAAI,MACV,KAAK,IACL,KAAK,YACLA,iBAAAA,SAAS,MAAM,YAAY,kBAC3B,IAAI,MAAM,EACVA,iBAAAA,SAAS,MAAM,OAAO,EACtB,MAAM,SACN,eAAe,MAAM,EACrB,gBAAgB,MAAM,CACtB;;;;AAKH,SAAS,eAAe,OAAwC;AAC/D,QAAO;EACN,YAAYA,iBAAAA,SAAS,MAAM,aAAa,WAAW;EACnD,cAAcA,iBAAAA,SAAS,MAAM,aAAa,aAAa;EACvD,gBAAgBA,iBAAAA,SAAS,MAAM,aAAa,eAAe;EAC3D;;;AAIF,SAAS,gBAAgB,OAAyC;CACjE,MAAM,CAAC,OAAO,GAAG,QAAQ,MAAM,cAAc;AAM7C,QAAO;EACN,WAAWA,iBAAAA,SAN+B,CAC1C;GAAE,MAAM;GAAY,UAAU;GAAO,EACrC,GAAG,KAAK,KAAK,cAAwB;GAAE,MAAM;GAAY;GAAU,EAAE,CACrE,CAG8B;EAC9B,SAASA,iBAAAA,SAAS,MAAM,cAAc,QAAQ;EAC9C,YAAYA,iBAAAA,SAAS,qBAAqB,MAAM,cAAc,WAAW,CAAC;EAC1E,cAAcA,iBAAAA,SAAS,MAAM,cAAc,aAAa;EACxD;;AAGF,SAAS,qBAAqB,UAA0C;AACvE,KAAI,SAAS,SAAS,WACrB,QAAO,EAAE,MAAM,YAAY;AAE5B,QAAO;EACN,MAAM;EACN,UAAUA,iBAAAA,SAAS,SAAS,SAAS;EACrC"}
|