@simplysm/sd-claude 14.0.79 → 14.0.81

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.
Files changed (96) hide show
  1. package/claude/references/sd-requirement-source-handling.md +17 -17
  2. package/claude/references/sd-simplysm14/README.md +58 -58
  3. package/claude/references/sd-simplysm14/manuals/client-component.md +739 -739
  4. package/claude/references/sd-simplysm14/manuals/client-crud.md +1 -1
  5. package/claude/references/sd-simplysm14/manuals/client-demo.md +1 -1
  6. package/claude/references/sd-simplysm14/manuals/client-setup.md +2 -2
  7. package/claude/references/sd-simplysm14/manuals/client-tab.md +2 -2
  8. package/claude/references/sd-simplysm14/manuals/logging.md +3 -3
  9. package/claude/references/sd-simplysm14/manuals/orm-union.md +7 -7
  10. package/claude/references/sd-simplysm14/manuals/orm.md +75 -75
  11. package/claude/references/sd-simplysm14/manuals/test.md +8 -8
  12. package/claude/rules/sd-base-rules.md +261 -354
  13. package/claude/rules/sd-design-rules.md +44 -0
  14. package/claude/{sd-check-forbidden-files.py → sd-check-edit.py} +2 -1
  15. package/claude/{sd-check-bash.py → sd-check-shell.py} +2 -2
  16. package/claude/settings.json +3 -4
  17. package/claude/skills/sd-commit/SKILL.md +17 -17
  18. package/claude/skills/sd-config/SKILL.md +4 -4
  19. package/claude/skills/sd-demo/SKILL.md +41 -43
  20. package/claude/skills/sd-demo/evals/fixtures/inventory-list/.specs/inventory/spec.md +99 -0
  21. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/package.json +12 -0
  22. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/index.ts +3 -0
  23. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inbound/inbound.list.ts +150 -0
  24. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/inventory/inventory-master.list.ts +143 -0
  25. package/claude/skills/sd-demo/evals/fixtures/inventory-list/packages/demo-client/src/screens/outbound/outbound.list.ts +150 -0
  26. package/claude/skills/sd-demo/evals/fixtures/inventory-list/pnpm-workspace.yaml +2 -0
  27. package/claude/skills/sd-demo/evals/fixtures/inventory-list/sd.config.ts +12 -0
  28. package/claude/skills/sd-demo/evals/golden.jsonl +1 -5
  29. package/claude/skills/sd-dev/SKILL.md +49 -22
  30. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/package.json +8 -0
  31. package/claude/skills/sd-dev/evals/fixtures/minimal-ts-pkg/tests/.gitkeep +0 -0
  32. package/claude/skills/sd-dev/evals/fixtures/{case-modify → minimal-ts-pkg}/tsconfig.json +1 -3
  33. package/claude/skills/sd-dev/evals/golden.jsonl +1 -3
  34. package/claude/skills/sd-docs/SKILL.md +8 -8
  35. package/claude/skills/sd-impl/SKILL.md +172 -82
  36. package/claude/skills/sd-impl/evals/fixtures/case-a-new-screen/.specs/260513120000_warehouse/spec.md +101 -0
  37. package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/.specs/260513120000_warehouse/spec.md +101 -0
  38. package/claude/skills/sd-impl/evals/fixtures/case-b-update-with-demo/packages/app/src/screens/box-register/box-register.view.ts +46 -0
  39. package/claude/skills/sd-impl/evals/fixtures/case-c-new-cross/.specs/260513120000_warehouse/spec.md +89 -0
  40. package/claude/skills/sd-impl/evals/fixtures/case-d-spec-modify/.specs/260513120000_warehouse/spec.md +101 -0
  41. package/claude/skills/sd-impl/evals/golden.jsonl +4 -6
  42. package/claude/skills/sd-review/SKILL.md +33 -0
  43. package/claude/skills/sd-review/evals/fixtures/code-review/src/foo.ts +7 -0
  44. package/claude/skills/sd-review/evals/fixtures/doc-review/docs/foo.md +4 -0
  45. package/claude/skills/sd-review/evals/golden.jsonl +2 -0
  46. package/claude/skills/sd-skill/SKILL.md +217 -29
  47. package/claude/skills/sd-skill/evals/fixtures/existing-skill/.claude/skills/todo-format/SKILL.md +14 -0
  48. package/claude/skills/sd-skill/evals/fixtures/new-skill/.gitkeep +0 -0
  49. package/claude/skills/sd-skill/evals/golden.jsonl +2 -5
  50. package/claude/skills/sd-spec/SKILL.md +384 -305
  51. package/claude/skills/sd-spec/references/example-spec.md +41 -64
  52. package/claude/skills/sd-unpack/SKILL.md +83 -83
  53. package/claude/skills/sd-use/SKILL.md +4 -4
  54. package/package.json +1 -1
  55. package/claude/output-styles/sd-tone.md +0 -152
  56. package/claude/skills/sd-demo/evals/fixtures/empty/.specs/260513120000_warehouse/spec.md +0 -45
  57. package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/.specs/260513120000_warehouse/spec.md +0 -42
  58. package/claude/skills/sd-demo/evals/fixtures/with-existing-screen/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  59. package/claude/skills/sd-demo/evals/fixtures/with-master-screen/.specs/260513120000_warehouse/spec.md +0 -45
  60. package/claude/skills/sd-demo/evals/fixtures/with-master-screen/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  61. package/claude/skills/sd-demo/evals/fixtures/with-modal/.specs/260513120000_warehouse/spec.md +0 -75
  62. package/claude/skills/sd-demo/evals/fixtures/with-modal/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  63. package/claude/skills/sd-demo/evals/fixtures/with-screens/.specs/260513120000_warehouse/spec.md +0 -45
  64. package/claude/skills/sd-demo/evals/fixtures/with-screens/packages/app/src/screens/dashboard/dashboard.view.ts +0 -33
  65. package/claude/skills/sd-dev/evals/fixtures/case-add/package.json +0 -13
  66. package/claude/skills/sd-dev/evals/fixtures/case-add/src/index.ts +0 -10
  67. package/claude/skills/sd-dev/evals/fixtures/case-add/tests/index.test.ts +0 -11
  68. package/claude/skills/sd-dev/evals/fixtures/case-add/tsconfig.json +0 -12
  69. package/claude/skills/sd-dev/evals/fixtures/case-bug/package.json +0 -13
  70. package/claude/skills/sd-dev/evals/fixtures/case-bug/src/index.ts +0 -10
  71. package/claude/skills/sd-dev/evals/fixtures/case-bug/tests/index.test.ts +0 -11
  72. package/claude/skills/sd-dev/evals/fixtures/case-bug/tsconfig.json +0 -12
  73. package/claude/skills/sd-dev/evals/fixtures/case-modify/package.json +0 -13
  74. package/claude/skills/sd-dev/evals/fixtures/case-modify/src/index.ts +0 -10
  75. package/claude/skills/sd-dev/evals/fixtures/case-modify/tests/index.test.ts +0 -11
  76. package/claude/skills/sd-impl/evals/fixtures/case-001-new-screen/spec.md +0 -55
  77. package/claude/skills/sd-impl/evals/fixtures/case-002-auto-process/spec.md +0 -55
  78. package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/packages/client/src/pages/book-list.ts +0 -22
  79. package/claude/skills/sd-impl/evals/fixtures/case-003-update-screen/spec.md +0 -57
  80. package/claude/skills/sd-impl/evals/fixtures/case-004-ambiguous-spec/spec.md +0 -58
  81. package/claude/skills/sd-impl/evals/fixtures/case-005-id-mismatch/spec.md +0 -52
  82. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.test.ts +0 -10
  83. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/client/src/pages//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.ts +0 -11
  84. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/data-access//352/261/260/353/236/230/354/262/230-/354/240/221/352/267/274.ts +0 -12
  85. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/packages/server/src/models//352/261/260/353/236/230/354/262/230.ts +0 -8
  86. package/claude/skills/sd-impl/evals/fixtures/case-006-with-reference-units/spec.md +0 -77
  87. package/claude/skills/sd-impl/evals/fixtures/case-new/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +0 -101
  88. package/claude/skills/sd-impl/evals/fixtures/case-update/.specs/260514120000_/352/261/260/353/236/230/354/262/230/spec.md +0 -101
  89. package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/250/353/215/270.txt +0 -1
  90. package/claude/skills/sd-impl/evals/fixtures/case-update/src//352/261/260/353/236/230/354/262/230//352/261/260/353/236/230/354/262/230-/353/252/251/353/241/235.txt +0 -1
  91. package/claude/skills/sd-impl/references/spec-cross-check.md +0 -82
  92. package/claude/skills/sd-skill/evals/fixtures/with-existing-review/.claude/skills/review/SKILL.md +0 -14
  93. package/claude/skills/sd-skill/references/eval-authoring.md +0 -81
  94. package/claude/skills/sd-skill/references/eval-run.md +0 -32
  95. package/claude/skills/sd-skill/references/skill-authoring.md +0 -70
  96. /package/claude/skills/{sd-skill/evals/fixtures/empty → sd-dev/evals/fixtures/minimal-ts-pkg/src}/.gitkeep +0 -0
@@ -1,55 +0,0 @@
1
- # 도서 관리 시스템 spec
2
-
3
- ## §1 개요
4
-
5
- 도서관 내부 시스템. 사서가 도서를 등록·조회.
6
-
7
- ## §4 화면
8
-
9
- | ID | 이름 | Actor | 장치 |
10
- | ----- | -------- | ----- | ---- |
11
- | §4.1 | 도서 목록 | 사서 | PC |
12
-
13
- ### §4.1 도서 목록 [확정: 2026-05-01]
14
-
15
- **Actor**: 사서
16
- **관련 섹션**: §7.1 도서
17
- **장치**: PC 웹
18
-
19
- **기능 개요**:
20
- - 등록된 도서 전체 목록 표시.
21
- - 제목·저자로 부분일치 검색 (대소문자 무시).
22
-
23
- **와이어프레임**:
24
- ```
25
- [검색창: 제목/저자] [등록]
26
- +----------+----------+-----------+
27
- | 제목 | 저자 | 출판일 |
28
- +----------+----------+-----------+
29
- | ... | ... | ... |
30
- +----------+----------+-----------+
31
- ```
32
-
33
- **항목표**:
34
-
35
- | 항목 | 타입 | 비고 |
36
- | ------ | ------ | --------------------------------- |
37
- | 제목 | text | §7.1.title |
38
- | 저자 | text | §7.1.author |
39
- | 출판일 | date | §7.1.publishedAt, YYYY-MM-DD 형식 |
40
-
41
- **동작**:
42
- - 진입 시 도서 전체를 출판일 내림차순으로 로드.
43
- - 검색창 입력 시 제목·저자 부분일치 필터링 (대소문자 무시).
44
- - "등록" 클릭 시 등록 화면 (본 spec 범위 외).
45
-
46
- ## §7 도메인 모델
47
-
48
- ### §7.1 도서 [확정: 2026-05-01]
49
-
50
- | 필드 | 타입 | 제약 | 기본값 |
51
- | ----------- | ------------- | --------------------- | --------- |
52
- | id | string (UUID) | PK | 자동 생성 |
53
- | title | string | NOT NULL, 최대 200자 | - |
54
- | author | string | NOT NULL, 최대 100자 | - |
55
- | publishedAt | date | NOT NULL | - |
@@ -1,55 +0,0 @@
1
- # 도서관 시스템 spec
2
-
3
- ## §1 개요
4
-
5
- 도서관 자동 처리 - 대여 만료 임박 알림 발송.
6
-
7
- ## §5 자동 처리
8
-
9
- | ID | 이름 | 트리거 |
10
- | ----- | -------------- | ------------ |
11
- | §5.1 | 대여 만료 알림 | 매일 00:00 |
12
-
13
- ### §5.1 대여 만료 알림 [확정: 2026-05-01]
14
-
15
- **트리거**: 매일 00:00 (cron)
16
- **관련 섹션**: §7.1 대여, §7.2 알림 이력
17
-
18
- **처리 내용**:
19
-
20
- 1. 반납 예정일이 오늘 이후 3일 이내(오늘 포함)인 미반납 대여 레코드를 모두 조회.
21
- 2. 각 레코드의 사용자에게 이메일로 알림 발송.
22
- 3. 알림 발송 결과를 §7.2 알림 이력에 저장.
23
-
24
- **알림 내용**:
25
-
26
- - 제목: `도서 반납 예정 알림`
27
- - 본문: `대여하신 도서 [도서명] 의 반납 예정일은 [반납예정일] 입니다.` (`[도서명]`·`[반납예정일]` 치환)
28
-
29
- **중복 발송 방지**:
30
-
31
- - 같은 대여 레코드에 대해 같은 날짜에 알림이 이미 발송됐으면 (§7.2 에서 매칭) 재발송하지 않음.
32
-
33
- ## §7 도메인 모델
34
-
35
- ### §7.1 대여 [확정: 2026-05-01]
36
-
37
- | 필드 | 타입 | 제약 | 기본값 |
38
- | ----------- | ------------- | ------------------------------------- | ----------------- |
39
- | id | string (UUID) | PK | 자동 생성 |
40
- | bookId | string (UUID) | NOT NULL, FK→Book.id | - |
41
- | userId | string (UUID) | NOT NULL, FK→User.id | - |
42
- | borrowedAt | datetime | NOT NULL | 현재 시각 |
43
- | dueAt | datetime | NOT NULL | borrowedAt + 14일 |
44
- | returnedAt | datetime | nullable | NULL |
45
-
46
- ### §7.2 알림 이력 [확정: 2026-05-01]
47
-
48
- | 필드 | 타입 | 제약 | 기본값 |
49
- | ------ | ------------- | ----------------------------------- | ------------ |
50
- | id | string (UUID) | PK | 자동 생성 |
51
- | userId | string (UUID) | NOT NULL, FK→User.id | - |
52
- | rentalId | string (UUID) | NOT NULL, FK→Rental.id | - |
53
- | type | enum | `RENTAL_DUE_REMINDER` | - |
54
- | sentAt | datetime | NOT NULL | 현재 시각 |
55
- | payload | json | - | `{}` |
@@ -1,22 +0,0 @@
1
- // 기존 구현 - 카테고리 필드 없음 상태
2
- export interface Book {
3
- id: string;
4
- title: string;
5
- author: string;
6
- publishedAt: Date;
7
- }
8
-
9
- export async function loadBooks(): Promise<Book[]> {
10
- // 출판일 내림차순 로드
11
- throw new Error("stub - 테스트 환경 전용");
12
- }
13
-
14
- export function searchBooks(keyword: string, books: Book[]): Book[] {
15
- // 제목·저자 부분일치 (대소문자 무시)
16
- const lower = keyword.toLowerCase();
17
- return books.filter(
18
- (b) =>
19
- b.title.toLowerCase().includes(lower) ||
20
- b.author.toLowerCase().includes(lower)
21
- );
22
- }
@@ -1,57 +0,0 @@
1
- # 도서 관리 시스템 spec
2
-
3
- ## §1 개요
4
-
5
- 도서관 내부 시스템. 사서가 도서를 등록·조회.
6
-
7
- ## §4 화면
8
-
9
- | ID | 이름 | Actor | 장치 |
10
- | ----- | -------- | ----- | ---- |
11
- | §4.1 | 도서 목록 | 사서 | PC |
12
-
13
- ### §4.1 도서 목록 [확정: 2026-05-15]
14
-
15
- **Actor**: 사서
16
- **관련 섹션**: §7.1 도서
17
- **장치**: PC 웹
18
-
19
- **기능 개요**:
20
- - 등록된 도서 전체 목록 표시.
21
- - 제목·저자·**카테고리**로 부분일치 검색 (대소문자 무시).
22
-
23
- **와이어프레임**:
24
- ```
25
- [검색창: 제목/저자/카테고리] [등록]
26
- +----------+----------+-----------+-----------+
27
- | 제목 | 저자 | 카테고리 | 출판일 |
28
- +----------+----------+-----------+-----------+
29
- | ... | ... | ... | ... |
30
- +----------+----------+-----------+-----------+
31
- ```
32
-
33
- **항목표**:
34
-
35
- | 항목 | 타입 | 비고 |
36
- | -------- | ------ | --------------------------------- |
37
- | 제목 | text | §7.1.title |
38
- | 저자 | text | §7.1.author |
39
- | 카테고리 | text | §7.1.category |
40
- | 출판일 | date | §7.1.publishedAt, YYYY-MM-DD 형식 |
41
-
42
- **동작**:
43
- - 진입 시 도서 전체를 출판일 내림차순으로 로드.
44
- - 검색창 입력 시 제목·저자·카테고리 부분일치 필터링 (대소문자 무시).
45
- - "등록" 클릭 시 등록 화면 (본 spec 범위 외).
46
-
47
- ## §7 도메인 모델
48
-
49
- ### §7.1 도서 [확정: 2026-05-15]
50
-
51
- | 필드 | 타입 | 제약 | 기본값 |
52
- | ----------- | ------------- | --------------------- | --------- |
53
- | id | string (UUID) | PK | 자동 생성 |
54
- | title | string | NOT NULL, 최대 200자 | - |
55
- | author | string | NOT NULL, 최대 100자 | - |
56
- | category | string | NOT NULL, 최대 50자 | `기타` |
57
- | publishedAt | date | NOT NULL | - |
@@ -1,58 +0,0 @@
1
- # 도서 대여 spec
2
-
3
- ## §1 개요
4
-
5
- 도서관 시스템 - 도서 대여 처리.
6
-
7
- ## §4 화면
8
-
9
- | ID | 이름 | Actor |
10
- | ----- | -------------- | ----- |
11
- | §4.1 | 도서 대여 처리 | 사서 |
12
-
13
- ### §4.1 도서 대여 처리 [확정: 2026-05-15]
14
-
15
- **Actor**: 사서
16
- **관련 섹션**: §7.1 도서, §7.2 대여
17
- **장치**: PC 웹
18
-
19
- **기능 개요**:
20
- - 도서 검색 후 사용자 지정해 대여 등록.
21
-
22
- **와이어프레임**:
23
- ```
24
- [도서 검색] [선택]
25
- [사용자 ID 입력] [대여]
26
- ```
27
-
28
- **항목표**:
29
-
30
- | 항목 | 타입 | 비고 |
31
- | ------------ | ------ | ---------------- |
32
- | 도서 검색 | text | 제목·저자 검색 |
33
- | 사용자 ID | text | - |
34
-
35
- **동작**:
36
- - 도서 검색 후 1건 선택.
37
- - 사용자 ID 입력.
38
- - "대여" 클릭 시 §7.2 대여 레코드 생성.
39
- - **재고 부족 시 처리.**
40
-
41
- ## §7 도메인 모델
42
-
43
- ### §7.1 도서 [확정: 2026-05-15]
44
-
45
- | 필드 | 타입 | 제약 |
46
- | ---------- | ------------- | ------------- |
47
- | id | string (UUID) | PK |
48
- | title | string | NOT NULL |
49
- | stockCount | int | NOT NULL, ≥ 0 |
50
-
51
- ### §7.2 대여 [확정: 2026-05-15]
52
-
53
- | 필드 | 타입 | 제약 |
54
- | ---------- | ------------- | --------------------- |
55
- | id | string (UUID) | PK |
56
- | bookId | string (UUID) | NOT NULL, FK→Book.id |
57
- | userId | string (UUID) | NOT NULL |
58
- | borrowedAt | datetime | NOT NULL |
@@ -1,52 +0,0 @@
1
- # 도서 관리 spec
2
-
3
- ## §1 개요
4
-
5
- 도서관 시스템 minimal.
6
-
7
- ## §4 화면
8
-
9
- | ID | 이름 | Actor |
10
- | ----- | -------- | ----- |
11
- | §4.1 | 도서 목록 | 사서 |
12
- | §4.2 | 도서 등록 | 사서 |
13
-
14
- ### §4.1 도서 목록 [확정: 2026-05-01]
15
-
16
- **Actor**: 사서
17
-
18
- **기능 개요**: 등록된 도서 전체 목록 표시.
19
-
20
- **항목표**:
21
-
22
- | 항목 | 타입 | 비고 |
23
- | ------ | ---- | ----------- |
24
- | 제목 | text | §7.1.title |
25
- | 저자 | text | §7.1.author |
26
-
27
- **동작**: 진입 시 전체 목록 로드.
28
-
29
- ### §4.2 도서 등록 [확정: 2026-05-01]
30
-
31
- **Actor**: 사서
32
-
33
- **기능 개요**: 신규 도서 등록 폼.
34
-
35
- **항목표**:
36
-
37
- | 항목 | 타입 | 비고 |
38
- | ---- | ---- | ----------- |
39
- | 제목 | text | §7.1.title |
40
- | 저자 | text | §7.1.author |
41
-
42
- **동작**: 입력 후 "저장" 클릭 시 §7.1 레코드 생성.
43
-
44
- ## §7 도메인 모델
45
-
46
- ### §7.1 도서 [확정: 2026-05-01]
47
-
48
- | 필드 | 타입 | 제약 |
49
- | ------ | ------------- | -------- |
50
- | id | string (UUID) | PK |
51
- | title | string | NOT NULL |
52
- | author | string | NOT NULL |
@@ -1,10 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { CustomerListPage } from "./거래처-목록";
3
-
4
- describe("거래처 목록", () => {
5
- it("진입 시 거래처 전체를 로드", async () => {
6
- const page = new CustomerListPage();
7
- await page.onInit();
8
- expect(page.customers).toBeDefined();
9
- });
10
- });
@@ -1,11 +0,0 @@
1
- // §4.1 거래처 목록 (이미 풀구현)
2
- import type { Customer } from "../../../../server/src/models/거래처";
3
- import { loadCustomers } from "../../../../server/src/data-access/거래처-접근";
4
-
5
- export class CustomerListPage {
6
- customers: Customer[] = [];
7
-
8
- async onInit() {
9
- this.customers = await loadCustomers();
10
- }
11
- }
@@ -1,12 +0,0 @@
1
- import type { Customer } from "../models/거래처";
2
-
3
- export async function loadCustomers(): Promise<Customer[]> {
4
- // 등록일 내림차순
5
- return [];
6
- }
7
-
8
- export async function insertCustomer(
9
- input: Omit<Customer, "id" | "createdAt">,
10
- ): Promise<Customer> {
11
- throw new Error("stub");
12
- }
@@ -1,8 +0,0 @@
1
- export interface Customer {
2
- id: string;
3
- name: string;
4
- businessNumber: string;
5
- manager: string;
6
- contact: string;
7
- createdAt: Date;
8
- }
@@ -1,77 +0,0 @@
1
- # 거래처 관리 시스템 spec
2
-
3
- ## §1 개요
4
-
5
- 영업담당이 거래처를 등록·조회한다.
6
-
7
- ## §4 화면
8
-
9
- | ID | 이름 | Actor | 장치 |
10
- | ----- | ----------- | -------- | ---- |
11
- | §4.1 | 거래처 목록 | 영업담당 | PC |
12
- | §4.2 | 거래처 등록 | 영업담당 | PC |
13
-
14
- ### §4.1 거래처 목록 [확정: 2026-05-01, 구현: 2026-05-10]
15
-
16
- **Actor**: 영업담당
17
- **관련 섹션**: §7.1 거래처
18
- **장치**: PC 웹
19
-
20
- **기능 개요**:
21
-
22
- - 등록된 거래처 전체 목록 표시.
23
-
24
- **동작**:
25
-
26
- - 진입 시 거래처 전체를 등록일 내림차순 로드.
27
-
28
- ### §4.2 거래처 등록 [확정: 2026-05-15]
29
-
30
- **Actor**: 영업담당
31
- **관련 섹션**: §7.1 거래처
32
- **장치**: PC 웹
33
-
34
- **기능 개요**:
35
-
36
- - 신규 거래처 등록 폼.
37
-
38
- **와이어프레임**:
39
-
40
- ```
41
- +----------------------------+
42
- | 거래처명 (필수) |
43
- | 사업자번호 |
44
- | 담당자 |
45
- | 연락처 |
46
- | |
47
- | [등록] [취소] |
48
- +----------------------------+
49
- ```
50
-
51
- **항목표**:
52
-
53
- | 항목 | 타입 | 비고 |
54
- | ---------- | ---- | --------------------- |
55
- | 거래처명 | text | §7.1.name, NOT NULL |
56
- | 사업자번호 | text | §7.1.businessNumber |
57
- | 담당자 | text | §7.1.manager |
58
- | 연락처 | text | §7.1.contact |
59
-
60
- **동작**:
61
-
62
- - "등록" 클릭 시 §7.1 거래처 저장 (`createdAt` 자동 = 현재 시각).
63
- - 거래처명 미입력 시 등록 차단.
64
- - "취소" 클릭 시 입력 폐기 후 §4.1 거래처 목록으로 이동.
65
-
66
- ## §7 도메인 모델
67
-
68
- ### §7.1 거래처 [확정: 2026-05-01]
69
-
70
- | 필드 | 타입 | 제약 | 기본값 |
71
- | -------------- | ------------- | --------------------- | --------- |
72
- | id | string (UUID) | PK | 자동 생성 |
73
- | name | string | NOT NULL, 최대 100자 | - |
74
- | businessNumber | string | 10자리 숫자 | - |
75
- | manager | string | 최대 50자 | - |
76
- | contact | string | 최대 30자 | - |
77
- | createdAt | datetime | NOT NULL | 현재 시각 |
@@ -1,101 +0,0 @@
1
- # 거래처 관리 요구 분석서
2
-
3
- ## 1. 개요
4
-
5
- ### 1.1 핵심 목적 [확정: 2026-05-14]
6
-
7
- 거래처 정보 조회·검색.
8
-
9
- ### 1.2 주요 목표 [확정: 2026-05-14]
10
-
11
- - 거래처 목록 조회·검색
12
-
13
- ### 1.3 최종 사용자/이해관계자 [확정: 2026-05-14]
14
-
15
- - 영업 담당자: 거래처 정보를 조회하는 사람
16
-
17
- ### 1.4 환경/장치 [확정: 2026-05-14]
18
-
19
- PC — Windows 11, Chrome 최신, 1920 x 1080
20
-
21
- ## 2. 업무 프로세스
22
-
23
- ### 2.1 거래처 조회 [확정: 2026-05-14]
24
-
25
- 영업 담당자가 거래처 목록을 검색·조회한다.
26
-
27
- 관련 섹션: [화면.거래처 목록]
28
-
29
- ## 3. 기타 요구사항
30
-
31
- 없음.
32
-
33
- ## 4. 화면
34
-
35
- | § | 분류 | 화면 | 유형 | 장치 |
36
- | --- | -------- | ----------- | ------ | ---- |
37
- | 4.1 | 기준정보 | 거래처 목록 | 마스터 | PC |
38
-
39
- ### 4.1 거래처 목록 (PC) [확정: 2026-05-14]
40
-
41
- Actor: 영업 담당자
42
- 관련 섹션: [프로세스.거래처 조회]
43
-
44
- 기능 개요:
45
-
46
- - 거래처 목록 표시
47
- - 거래처명·사업자번호로 검색
48
-
49
- 와이어프레임:
50
-
51
- ```
52
- ┌──────────────────────────────────────────────────┐
53
- │ 검색어: [_______________] [조회] │
54
- ├────┬───────────┬──────────────┬──────────────────┤
55
- │ # │ 거래처명 │ 사업자번호 │ 연락처 │
56
- ├────┼───────────┼──────────────┼──────────────────┤
57
- │ 1 │ ABC상사 │ 123-45-67890 │ 02-1234-5678 │
58
- │ 2 │ XYZ유통 │ 234-56-78901 │ 02-2345-6789 │
59
- └────┴───────────┴──────────────┴──────────────────┘
60
- ```
61
-
62
- 항목:
63
-
64
- | 항목 | 타입 | 비고 |
65
- | ---------- | ------ | ------------------ |
66
- | 거래처명 | 문자열 | 필수 |
67
- | 사업자번호 | 문자열 | 10자리 하이픈 포함 |
68
- | 연락처 | 문자열 | 선택 |
69
-
70
- 동작:
71
-
72
- - [조회] 클릭 → 검색어로 필터된 목록 갱신.
73
-
74
- ## 5. 자동 처리
75
-
76
- 없음.
77
-
78
- ## 6. 공통 정의
79
-
80
- 없음.
81
-
82
- ## 7. 도메인 모델
83
-
84
- ### 7.1 거래처 [확정: 2026-05-14]
85
-
86
- - id: 식별자
87
- - 거래처명: 문자열, 필수
88
- - 사업자번호: 문자열, 10자리 하이픈 포함
89
- - 연락처: 문자열, 선택
90
-
91
- ## 8. 외부 인터페이스
92
-
93
- 없음.
94
-
95
- ## 9. 본문 외 결정사항
96
-
97
- 없음.
98
-
99
- ## 10. 변경 이력
100
-
101
- - 2026-05-14: 초안 작성
@@ -1,101 +0,0 @@
1
- # 거래처 관리 요구 분석서
2
-
3
- ## 1. 개요
4
-
5
- ### 1.1 핵심 목적 [확정: 2026-05-14]
6
-
7
- 거래처 정보 조회·검색.
8
-
9
- ### 1.2 주요 목표 [확정: 2026-05-14]
10
-
11
- - 거래처 목록 조회·검색
12
-
13
- ### 1.3 최종 사용자/이해관계자 [확정: 2026-05-14]
14
-
15
- - 영업 담당자: 거래처 정보를 조회하는 사람
16
-
17
- ### 1.4 환경/장치 [확정: 2026-05-14]
18
-
19
- PC — Windows 11, Chrome 최신, 1920 x 1080
20
-
21
- ## 2. 업무 프로세스
22
-
23
- ### 2.1 거래처 조회 [확정: 2026-05-14]
24
-
25
- 영업 담당자가 거래처 목록을 검색·조회한다.
26
-
27
- 관련 섹션: [화면.거래처 목록]
28
-
29
- ## 3. 기타 요구사항
30
-
31
- 없음.
32
-
33
- ## 4. 화면
34
-
35
- | § | 분류 | 화면 | 유형 | 장치 |
36
- | --- | -------- | ----------- | ------ | ---- |
37
- | 4.1 | 기준정보 | 거래처 목록 | 마스터 | PC |
38
-
39
- ### 4.1 거래처 목록 (PC) [확정: 2026-05-14]
40
-
41
- Actor: 영업 담당자
42
- 관련 섹션: [프로세스.거래처 조회]
43
-
44
- 기능 개요:
45
-
46
- - 거래처 목록 표시
47
- - 거래처명·사업자번호로 검색
48
-
49
- 와이어프레임:
50
-
51
- ```
52
- ┌──────────────────────────────────────────────────┐
53
- │ 검색어: [_______________] [조회] │
54
- ├────┬───────────┬──────────────┬──────────────────┤
55
- │ # │ 거래처명 │ 사업자번호 │ 연락처 │
56
- ├────┼───────────┼──────────────┼──────────────────┤
57
- │ 1 │ ABC상사 │ 123-45-67890 │ 02-1234-5678 │
58
- │ 2 │ XYZ유통 │ 234-56-78901 │ 02-2345-6789 │
59
- └────┴───────────┴──────────────┴──────────────────┘
60
- ```
61
-
62
- 항목:
63
-
64
- | 항목 | 타입 | 비고 |
65
- | ---------- | ------ | ------------------ |
66
- | 거래처명 | 문자열 | 필수 |
67
- | 사업자번호 | 문자열 | 10자리 하이픈 포함 |
68
- | 연락처 | 문자열 | 선택 |
69
-
70
- 동작:
71
-
72
- - [조회] 클릭 → 검색어로 필터된 목록 갱신.
73
-
74
- ## 5. 자동 처리
75
-
76
- 없음.
77
-
78
- ## 6. 공통 정의
79
-
80
- 없음.
81
-
82
- ## 7. 도메인 모델
83
-
84
- ### 7.1 거래처 [확정: 2026-05-14]
85
-
86
- - id: 식별자
87
- - 거래처명: 문자열, 필수
88
- - 사업자번호: 문자열, 10자리 하이픈 포함
89
- - 연락처: 문자열, 선택
90
-
91
- ## 8. 외부 인터페이스
92
-
93
- 없음.
94
-
95
- ## 9. 본문 외 결정사항
96
-
97
- 없음.
98
-
99
- ## 10. 변경 이력
100
-
101
- - 2026-05-14: 초안 작성