690328:2128 Fixing Refactor uuid by Kimi #12
CI / CD Pipeline / build (push) Successful in 6m14s
CI / CD Pipeline / deploy (push) Successful in 7m51s

This commit is contained in:
2026-03-28 21:28:53 +07:00
parent 7a9a15560b
commit 2993131496
5 changed files with 17 additions and 17 deletions
@@ -81,12 +81,12 @@ export default function DisciplinesPage() {
queryKey={['disciplines', selectedContractId ?? 'all']} queryKey={['disciplines', selectedContractId ?? 'all']}
fetchFn={async () => { fetchFn={async () => {
const items = await masterDataService.getDisciplines(selectedContractId ? selectedContractId : undefined); const items = await masterDataService.getDisciplines(selectedContractId ? selectedContractId : undefined);
// ADR-019: Map contractId INT → contract UUID for edit mode select matching // ADR-019: Map contract.publicId UUID for edit mode select matching
return items.map((item) => { return items.map((item) => {
const rec = item as Discipline & { contract?: { id?: number; uuid?: string }; contractId?: number | string }; const rec = item as Discipline & { contract?: { publicId?: string }; contractId?: number | string };
return { return {
...item, ...item,
contractId: rec.contract?.id || rec.contract?.uuid || String(rec.contractId), contractId: rec.contract?.publicId || (rec.contractId ? String(rec.contractId) : null),
} as Discipline; } as Discipline;
}); });
}} }}
@@ -84,12 +84,12 @@ export default function RfaTypesPage() {
queryKey={['rfa-types', selectedContractId ?? 'all']} queryKey={['rfa-types', selectedContractId ?? 'all']}
fetchFn={async () => { fetchFn={async () => {
const items = await masterDataService.getRfaTypes(selectedContractId ? selectedContractId : undefined); const items = await masterDataService.getRfaTypes(selectedContractId ? selectedContractId : undefined);
// ADR-019: Map contractId INT → contract UUID for edit mode select matching // ADR-019: Map contract.publicId UUID for edit mode select matching
return items.map((item) => { return items.map((item) => {
const rec = item as RfaType & { contract?: { id?: number | string; uuid?: string }; contract_id?: number | string }; const rec = item as RfaType & { contract?: { publicId?: string }; contractId?: number | string };
return { return {
...item, ...item,
contractId: rec.contract?.id || rec.contract?.uuid || (rec.contract_id ? String(rec.contract_id) : null), contractId: rec.contract?.publicId || (rec.contractId ? String(rec.contractId) : null),
} as RfaType; } as RfaType;
}); });
}} }}
@@ -46,8 +46,8 @@ export function TemplateEditor({
onCancel, onCancel,
}: TemplateEditorProps) { }: TemplateEditorProps) {
const [format, setFormat] = useState(template?.formatTemplate || ''); const [format, setFormat] = useState(template?.formatTemplate || '');
const [typeId, setTypeId] = useState<string>(template?.correspondenceTypeId?.toString() || ''); const [typeId, setTypeId] = useState<string>(template?.correspondenceTypeId ? String(template.correspondenceTypeId) : '');
const [disciplineId, setDisciplineId] = useState<string>(template?.disciplineId?.toString() || '0'); const [disciplineId, setDisciplineId] = useState<string>(template?.disciplineId ? String(template.disciplineId) : '0');
const [reset, setReset] = useState(template?.resetSequenceYearly ?? true); const [reset, setReset] = useState(template?.resetSequenceYearly ?? true);
const [preview, setPreview] = useState(''); const [preview, setPreview] = useState('');
@@ -64,7 +64,7 @@ export function TemplateEditor({
// Dynamic context based on selection (optional visual enhancement) // Dynamic context based on selection (optional visual enhancement)
if (v.key === '{TYPE}' && typeId) { if (v.key === '{TYPE}' && typeId) {
const t = correspondenceTypes.find( const t = correspondenceTypes.find(
(ct) => ct.id?.toString() === typeId (ct) => String(ct.publicId) === typeId
); );
if (t) replacement = t.typeCode; if (t) replacement = t.typeCode;
} }
@@ -120,7 +120,7 @@ export function TemplateEditor({
<SelectItem value="__default__">Default (All Types)</SelectItem> <SelectItem value="__default__">Default (All Types)</SelectItem>
{correspondenceTypes.map((type) => { {correspondenceTypes.map((type) => {
return ( return (
<SelectItem key={type.publicId} value={type.publicId.toString()}> <SelectItem key={type.publicId} value={String(type.publicId)}>
{type.typeCode} - {type.typeName} {type.typeCode} - {type.typeName}
</SelectItem> </SelectItem>
); );
@@ -142,7 +142,7 @@ export function TemplateEditor({
<SelectContent> <SelectContent>
<SelectItem value="0">All Disciplines</SelectItem> <SelectItem value="0">All Disciplines</SelectItem>
{disciplines.map((d) => ( {disciplines.map((d) => (
<SelectItem key={d.publicId} value={d.publicId.toString()}> <SelectItem key={d.publicId} value={String(d.publicId)}>
{d.disciplineCode} - {d.codeNameEn || d.codeNameTh} {d.disciplineCode} - {d.codeNameEn || d.codeNameTh}
</SelectItem> </SelectItem>
))} ))}
+6 -6
View File
@@ -25,7 +25,7 @@ import { Contract } from '@/types/contract';
const rfaSchema = z.object({ const rfaSchema = z.object({
projectId: z.string().min(1, 'Project is required'), // ADR-019: UUID projectId: z.string().min(1, 'Project is required'), // ADR-019: UUID
contractId: z.string().min(1, 'Contract is required'), contractId: z.string().min(1, 'Contract is required'),
disciplineId: z.number({ message: 'Discipline is required' }).min(1, 'Discipline is required'), disciplineId: z.union([z.string().min(1, 'Discipline is required'), z.number().min(1, 'Discipline is required')]),
rfaTypeId: z.string().min(1, 'Type is required'), // ADR-019: UUID rfaTypeId: z.string().min(1, 'Type is required'), // ADR-019: UUID
subject: z.string().min(5, 'Subject must be at least 5 characters'), subject: z.string().min(5, 'Subject must be at least 5 characters'),
description: z.string().optional(), description: z.string().optional(),
@@ -165,7 +165,7 @@ export function RFAForm() {
defaultValues: { defaultValues: {
projectId: '', projectId: '',
contractId: '', contractId: '',
disciplineId: 0, disciplineId: '',
rfaTypeId: '', rfaTypeId: '',
subject: '', subject: '',
description: '', description: '',
@@ -366,7 +366,7 @@ export function RFAForm() {
onValueChange={(val) => { onValueChange={(val) => {
setValue('projectId', val); setValue('projectId', val);
setValue('contractId', ''); setValue('contractId', '');
setValue('disciplineId', 0); setValue('disciplineId', '');
setValue('rfaTypeId', ''); setValue('rfaTypeId', '');
setValue('shopDrawingRevisionIds', []); setValue('shopDrawingRevisionIds', []);
setValue('asBuiltDrawingRevisionIds', []); setValue('asBuiltDrawingRevisionIds', []);
@@ -402,7 +402,7 @@ export function RFAForm() {
value={selectedContractId || undefined} value={selectedContractId || undefined}
onValueChange={(val) => { onValueChange={(val) => {
setValue('contractId', val); setValue('contractId', val);
setValue('disciplineId', 0); setValue('disciplineId', '');
setValue('rfaTypeId', ''); setValue('rfaTypeId', '');
setValue('shopDrawingRevisionIds', []); setValue('shopDrawingRevisionIds', []);
setValue('asBuiltDrawingRevisionIds', []); setValue('asBuiltDrawingRevisionIds', []);
@@ -434,8 +434,8 @@ export function RFAForm() {
<div> <div>
<Label>Discipline *</Label> <Label>Discipline *</Label>
<Select <Select
value={selectedDisciplineId > 0 ? String(selectedDisciplineId) : undefined} value={selectedDisciplineId ? String(selectedDisciplineId) : undefined}
onValueChange={(val) => setValue('disciplineId', Number(val))} onValueChange={(val) => setValue('disciplineId', val)}
disabled={!selectedContractId || isLoadingDisciplines} disabled={!selectedContractId || isLoadingDisciplines}
> >
<SelectTrigger> <SelectTrigger>