AGENT SKILL
50-contract-codegen
暂无简介
适用职业律师与法务
- License 许可
- MIT
- 最近更新
- 2026-04-12
- Stars
- ★ 0
- Forks
- 0
02 资源文件 1
- 参考文档agents/openai.yaml152 B
03 SKILL.md 正文
50-contract-codegen
Status: ACTIVE
AppliesTo: v10
SSOT: skills/devian/10-module/03-ssot/SKILL.md
Purpose
DATA(DomainType=DATA)에서 사용하는 contracts JSON 입력 규약을 정의한다.
이 문서는 “contracts 입력 포맷과 경로”만 규정한다. 생성 코드의 네임스페이스/타입/시그니처는 런타임/제너레이터 코드를 정답으로 본다.
Inputs
입력은 {buildInputJson}의 domains 섹션이 정본이다.
domains[{DomainKey}].contractDirdomains[{DomainKey}].contractFiles(예:["*.json"])
Contract Spec JSON
Contract spec는 enums와 classes로 구성된다.
Enum
{
"name": "USER_TYPE",
"doc": "optional doc",
"values": [
{ "name": "GUEST", "value": 0 },
{ "name": "MEMBER", "value": 1 }
]
}
Class
{
"name": "UserProfile",
"doc": "optional doc",
"fields": [
{ "name": "id", "type": "int" },
{ "name": "name", "type": "string" },
{ "name": "userType", "type": "enum:USER_TYPE" }
]
}
Root
{
"enums": [ /* ... */ ],
"classes": [ /* ... */ ]
}
지원 타입 문자열(예:
int64,string, 배열 등)과 타입 매핑의 정답은 Reference를 따른다.
Outputs & Paths
경로 규약은 SSOT를 따른다.
Contract는 Domain 단위로 Table과 함께 단일 파일에 통합 생성된다.
- staging:
{tempDir}/{DomainKey}/cs/Generated/{DomainKey}.g.cs,{tempDir}/{DomainKey}/ts/Generated/{DomainKey}.g.ts - final:
{csConfig.generateDir}/Devian.Domain.{DomainKey}/Generated/{DomainKey}.g.cs,{tsConfig.generateDir}/devian-domain-{domainkey}/Generated/{DomainKey}.g.ts
Domain 모듈 의존성 (Hard Rule)
C# DATA Domain 모듈 의존성:
Devian.Domain.{DomainKey}.csproj는..\Devian\Devian.csproj만 ProjectReference 한다.- Common 모듈을 포함한 모든 Domain 모듈이 동일한 규칙을 따른다.
TS DATA Domain 패키지 의존성:
@devian/module-{domainkey}는@devian/core만 의존한다.
Failure Rules (MUST)
- JSON 파싱 실패 → 빌드 실패
- enum/class 이름 중복 등 명백한 충돌 → 빌드 실패
Naming Rules (Hard Rule)
Enum Naming
- enum 타입명은 대문자 SNAKE_CASE를 사용한다.
- enum 멤버명도 대문자 SNAKE_CASE를 사용한다.
- 예:
- Good:
MISSION_TYPE,USER_TYPE,APP_OPEN - Bad:
MissionType,UserType,AppOpen
- Good:
Field Naming (Hard Rule)
Contract JSON의 field name을 C#/TS 프로퍼티 이름으로 그대로 사용한다. 변환하지 않는다.
| 위치 | 이름 | 예시 |
|---|---|---|
| Contract JSON field name | 그대로 | id, userType |
| C# 프로퍼티 | 그대로 | id, userType |
| TS 프로퍼티 | 그대로 | id, userType |
Reference
- Policy SSOT:
skills/devian/10-module/03-ssot/SKILL.md - 동작 정본: 런타임/제너레이터 코드