Skip to content

feat: enhance policy editor#23

Merged
sehwan505 merged 8 commits intomainfrom
feat/enhance-policy-editor
Nov 17, 2025
Merged

feat: enhance policy editor#23
sehwan505 merged 8 commits intomainfrom
feat/enhance-policy-editor

Conversation

@baeyc0510
Copy link
Contributor

Summary

Java 프로젝트용 데모 정책 템플릿을 추가하고, Policy Editor가 linter 설정 파일 생성을 더 적극적으로 제안하도록
개선합니다.

Changes

1. 데모 템플릿 추가 (demo-template.json)

  • 12개 네이밍 규칙 (N-01 ~ N-12)
    • DTO, Entity, Repository, Service, Controller 클래스명 규칙
    • Abstract 클래스, Interface 구현체 네이밍
    • 멤버변수 접두어 규칙 (m_, p_)
    • 메서드 매개변수 param 접두어
    • private 메서드 _ 접두어
    • Boolean 변수/메서드 접두어 (is, has, can)
  • 5개 포맷팅 규칙 (F-01 ~ F-05)
    • 클래스 내부 멤버 순서 규정
    • 생성자 정렬 순서
    • 메서드 간 공백 라인
    • Import 문 정렬 규칙
  • RBAC 예제
    • backend-dev: Controller, Service, DTO 수정 가능
    • database-dev: Entity, Repository 수정 가능
    • senior-dev: 전체 수정 가능

2. Policy Editor 개선

  • code-policy.json 존재 여부 확인 로직 추가
    • 정책 저장 시 code-policy.json 파일 존재 여부 확인
    • 파일이 없으면 변환(convert) 제안 표시
    • 규칙/RBAC 변경 여부와 무관하게 누락된 경우 변환 유도
  • 변환 프롬프트 메시지 개선
    • 변경 사항을 명확하게 표시 (규칙, RBAC, 파일 누락)

baeyc0510 and others added 8 commits November 15, 2025 20:26
- Remove policy change history feature
  * Delete internal/policy/history.go
  * Remove /api/policy/history endpoint from server
  * Remove history UI components (button, modal, event handlers)
  * Remove 'policy history' CLI command

- Set default language for new rules from global settings
  * New rules now inherit languages from policy.defaults.languages
  * Improves consistency across policy rules

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove auto-save-checkbox references (element was deleted from HTML)
  * Remove event listener
  * Remove from saveSettings() and loadSettings()

- Remove defaults-autofix references (element was deleted from HTML)
  * Remove from renderAll()
  * Remove from saveSettings()
  * Remove from applyPermissions()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove auto-save timer and startAutoSave() function
- Remove autoSave from appState.settings
- Remove autoSave from localStorage loading/saving
- Clean up all autoSave references

This prevents the 30-second auto-save timer from triggering
and attempting to save incomplete/invalid policy data.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…ements

Major Changes:

1. **Environment Variable Management (envutil package)**
   - Created internal/envutil package to centralize .env operations
   - Removed duplicate env-related functions across multiple files
   - Unified API key and policy path retrieval from .env files
   - Functions: GetAPIKey(), GetPolicyPath(), LoadKeyFromEnvFile(), SaveKeyToEnvFile()

2. **Policy Editor Improvements**
   - Add automatic policy path save on editor save
   - Implement file migration when policy path changes
   - Add convert prompt when rules are modified
   - Integrate convert API endpoint for linter config generation
   - Store original rules to detect changes

3. **Convert Command Enhancement**
   - Use POLICY_PATH from .env as default input
   - Output to same directory as input policy by default
   - Remove hardcoded paths

4. **Init Command Enhancement**
   - Create .sym/.env with default POLICY_PATH during init
   - Preserve existing API keys when adding POLICY_PATH

5. **MCP Server Enhancement**
   - Load policy path from .env instead of hardcoded path
   - Support both ANTHROPIC_API_KEY and OPENAI_API_KEY from .env

Files Modified:
- internal/envutil/env.go (new)
- internal/cmd/api_key.go
- internal/cmd/convert.go
- internal/cmd/init.go
- internal/engine/llm/engine.go
- internal/llm/client.go
- internal/mcp/server.go
- internal/server/server.go
- internal/server/static/policy-editor.js

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fix errcheck linter error by explicitly handling the file.Close() error
in deferred function. This resolves CI lint test failure.
Changes:
- Add originalRBAC to appState for tracking RBAC changes
- Implement createStableJSON helper for consistent object comparison
- Extend change detection to include both rules and RBAC
- Update conversion prompt to show what changed (rules/RBAC)
- Add .mcp.json to .gitignore

This enables the policy editor to detect RBAC changes and prompt
for linter config generation when either rules or RBAC are modified.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Changes:
- Add demo-template with description and language info
- Add code-policy.json existence check in policy editor
- Prompt conversion if code-policy.json is missing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…at/enhance-policy-editor

# Conflicts:
#	internal/server/static/policy-editor.js
@sehwan505 sehwan505 merged commit 6ee9231 into main Nov 17, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants